2009-07-14 3 views
3

Putting ich eine Anwendung haben.Sollte Frameworks in/Library/Frameworks oder im Programm-Paket genommen werden, wenn mehrere Anwendungen in einem Bündel

Ich plane, die ausführbaren Dateien für die launchd Dämonen im Inneren des .app-Bundle für die GUI zu setzen.

Diese Anwendungen nutzen 2 (beide ziemlich klein) Frameworks, die ich geschaffen habe.

ist es eine bessere Idee, diese Rahmenbedingungen in/Library/Frameworks zu setzen (und damit mehrere Anwendungen laden den gleichen Code speichern) oder sie im Programm-Paket zu halten (also die Anwendung in sich geschlossene machen mit Ausnahme der launchd plists)

Antwort

2

Fazit: Ich würde mich für eine eigenständige Lösung entscheiden, es sei denn/bis Sie überzeugende Beweise dafür haben, dass das Setzen der Frameworks in /Library/Frameworks/ eine spürbare Verbesserung für Ihr spezielles Szenario bietet. Überprüfen Sie die Auswirkungen beider Vorgehensweisen, aber ich bevorzuge es, die Frameworks zunächst mit der App zu gruppieren.

Der dynamische Linker (dyld) ist ziemlich schlau über das Laden von Frameworks und Wiederverwendung, was bereits in den meisten Fällen geladen wurde. Wenn sich mehrere Apps an verschiedenen Orten befinden, die ein Framework verwenden, ist es definitiv vorzuziehen, es unter /Library/Frameworks/ zu installieren. Da es scheint, dass sich alle "Apps", auf die Sie sich beziehen, in Ihrem .app-Bundle befinden, scheint es keinen großen Nutzen für diesen Ansatz zu geben, da sie alle mit dem gleichen Pfad verknüpft sind, der dyld sollte aufgreifen. (Es ist nicht nur ein Benutzer haben Admin-Berechtigungen erforderlich /Library zu ändern, aber der Installationsprozess sofort wird komplexer.) Siehe auch den letzten Teil der my answer to a related SO question für Ideen über Einführung Leistung von ausführbaren Dateien zu analysieren, einschließlich dyld Aktivität zu untersuchen.

Eine weitere Überlegung ist der Grad der Kontrolle, die Sie über Rahmen Versionierung haben, wenn sie in Ihrem App-Bundle gespeichert sind. Wenn Sie ein Framework absichtlich "publizieren", indem Sie es an einem öffentlich zugänglichen Ort platzieren, müssen Sie bereit sein, die Konsequenzen anderer zu akzeptieren, die sich möglicherweise dafür entscheiden, dagegen zu verlinken. Wenn jedoch ein Framework nur in Ihrem App-Bundle verteilt wird, hat jeder Entwickler, der sich dafür entscheidet, einen Link zu erstellen, niemand außer sich selbst. :-)

+1

Ein weiterer Vorteil dieses Ansatzes besteht darin, dass Sie mehrere Versionen Ihrer Anwendung erstellen und nebeneinander ausführen können. –

1

Gemäß der Apple Framework Programming Guide "für fast alle Fälle, Installation Ihrer Frameworks in/Library/Frameworks ist die beste Wahl", weil der gemeinsame Code für die Anwendungen die Frameworks freigegeben ist nur einmal im Speicher geladen.

+1

Die Sache, die Sie beachten müssen, ist, dass Sie die Frameworks irgendwie in/Library/Frameworks setzen müssen. Das bedeutet, dass Sie wahrscheinlich Installer.app verwenden müssen, um Ihre App zu installieren. Und während Installer.app ein sehr nettes Installationsprogramm ist, ist Drag and Drop sogar noch schöner. – Alex

+1

Sie müssen sich auch um die Kompatibilität sorgen. Was ist, wenn der Benutzer die Version 1.0 und 2.0 Ihrer Anwendung hat? –

+0

Nun haben wir alle Pros und Contras erforscht, es liegt an Ihnen zu entscheiden, Sie werden keine definitive Antwort finden, denke ich. – IlDan

Verwandte Themen