Anatomia pachetelor de aplicații macOS

Die Anatomie der macOS App Bundles

⌛ Reading Time: 4 minutes

Was steckt in einer macOS-App und was macht sie? macOS-Apps sehen aus wie monolithische Dateien, sind jedoch eher wie Ordner mit ausgefallenen Symbolen, die als Bundles bezeichnet werden. Öffnen Sie diese Bundles, und Sie finden eine Reihe von Dateien, die von der Anwendung benötigt werden. Was macht das alles? Ein Verständnis dieser Bundles ist hilfreich für Entwickler, Administratoren, Spielmodder, Hackintosh-Entwickler, Benutzer, die sich mit Sicherheit befassen, und alle, die Fehler in einer App beheben.

Was sind macOS App Bundles?

Wie von Apple definiertEin Bundle ist „ein Verzeichnis mit einer standardisierten hierarchischen Struktur, die ausführbaren Code und die von diesem Code verwendeten Ressourcen enthält.“ Unter einem anderen Namen ist das eine Anwendung. Es gibt eine bestimmte Struktur und ein bestimmtes Format, die von Entwicklern eingehalten werden müssen, um sicherzustellen, dass ihre App ordnungsgemäß ausgeführt wird. Brechen Sie diese Konventionen, und Sie werden wahrscheinlich Ihre App brechen. Wenn etwas nicht richtig funktioniert, ist ein Anwendungspaket möglicherweise ein nützlicher Ort zur Fehlerbehebung.

Apps sind nicht die einzige Art von Bundles. Bundles werden auch für Dateien mit Erweiterungen wie .framework verwendet. .bündeln, .plugin und .kext. Bundles werden im Finder als einheitliche Objekte angezeigt, bis Sie durch Öffnen des Bundle-Pakets darauf zugreifen.

Anwendungspakete öffnen

Im Gegensatz zu Verzeichnissen erfordern Anwendungspakete zum Öffnen einen kurzen Tanz.

1. Klicken Sie mit der rechten Maustaste auf das Anwendungssymbol in “/ Applications /”.

2. Klicken Sie im Kontextmenü auf “Paketinhalt anzeigen”.

3. Doppelklicken Sie auf den Ordner “Inhalt”, um das primäre Verzeichnis der App aufzurufen.

Grundlegende Anatomie des macOS App Bundle

Im Ordner “Inhalt” des Bundles finden Sie eine Reihe von Dateien. Alle macOS-Apps müssen mindestens die folgenden Dateien enthalten:

  • Info.plist: Enthält obligatorische Konfigurationsdetails sowie Anwendungskennungszeichenfolgen.
  • MacOS / Ausführbar: Der Code, der ausgeführt wird, wenn der Benutzer die App startet, die sich im Ordner „MacOS“ befindet. Ohne eine ausführbare Datei haben Sie nicht viel von einem Bundle.
Macos App Bundle Anatomy App im Finder 2x

In einigen gängigen Ordnern finden Sie wahrscheinlich auch eine Vielzahl zusätzlicher Dateien:

  • Plugins: Erweiterungsähnliche Mini-ausführbare Dateien, die die Funktionalität der ausführbaren Kerndatei erweitern. Im Gegensatz zu statischen Ressourcen fügen Plugins der Anwendung dynamisch Funktionen hinzu.
  • Ressourcen: Unterstützungsdateien, auf die sich Ihre Anwendung stützt. Dieser Ordner enthält, ohne darauf beschränkt zu sein, Bilder, Symbole, Sounds, Schriftarten, Federdateien, Lokalisierungen und Datenspeicher. Im Gegensatz zu Plugins unterstützen diese Ressourcen die Kernfunktionalität der ausführbaren Datei.
  • Frameworks: Wie Plugins sind auch die von Ihrer App benötigten High-Level-Frameworks eigene Bundles. Sie verwenden jedoch eine hierarchisch unterschiedliche Struktur.
  • CodeSignature: Eine strukturierte Plist-Datei, mit der die Codesignatur für jeden Teil der Anwendung bereitgestellt wird. Mit diesen Signaturen können die App und macOS die Integrität der Anwendung überprüfen und Angriffe auf App-Hijacking verhindern.

iOS-App-Bundles Verwenden Sie dieselbe Grundstruktur und dasselbe Dateiformat, obwohl sie häufig in einer anderen Hierarchie angezeigt werden.

Info.plist

Macos App Bundles Info Plist Xcode

Die Info.plist ist die primäre Zusammenfassung der grundlegenden demografischen Daten Ihrer Anwendung. Dies schließt Ihre Bundle-ID ein, die von allen anderen Bundle-IDs eindeutig sein muss. Um diesen Prozess zu vereinfachen, empfiehlt Apple die umgekehrte Domain-Notation, z. B. “com.apple.siri.launcher” oder “org.videolan.vlc”. Weitere Informationen zu Info.plist finden Sie unter Apples Liste der Schlüssel und überlegen Sie, was jeder Schlüssel tut.

Diese Datei enthält auch grundlegende App-Informationen wie das App-Symbol, den App-Namen, die Versionsnummer, Copyright-Daten, Links für die Fehlerberichterstattung und die Standardsprache. Gemäß Konventionen und Systemregeln wird das “Ich” in “Info” immer großgeschrieben.

Ausführbar

Hier befindet sich der primäre Code Ihrer Anwendung. Wenn die Anwendung geöffnet wird, führt macOS den Code aus, der in der ausführbaren Datei im Verzeichnis “MacOS” des Bundles enthalten ist. Nahezu jede Anwendung verfügt nur über eine einzige ausführbare Datei, obwohl zwei oder mehr für ausführbare Hilfedateien verwendet werden können. Diese Datei ist normalerweise für niemanden außer für den Entwickler der Software uninteressant, da sie vom Benutzer nicht einfach angezeigt oder bearbeitet werden kann.

Ressourcen und zusätzliche Support-Dateien

Alles, was für Ihre Anwendung wichtig ist, sollte im Paket enthalten sein. Wenn es nicht Teil der ausführbaren Datei selbst ist, sollte es sich in einem der Ressourcenordner innerhalb des Bundles befinden. Diese Ressourcen können im primären Ordner “Ressourcen” gespeichert oder in verschiedene Ordner unterteilt werden.

  • Im Zweifelsfall befinden sich die meisten Ressourcen im Ordner „Ressourcen“.
  • Frameworks befinden sich im Ordner “Frameworks”.
  • Plugins befinden sich im Ordner “Plugins”.
  • Lokalisierungsdateien (.lproj-Verzeichnisse) befinden sich im Ordner Ressourcen.

Außerhalb dieser Anforderungen bietet Apple viele Vorschläge und Konventionen, die befolgt werden sollten, sofern Sie keinen berechtigten Grund haben, etwas anderes zu tun.

Fazit

macOS-Anwendungen sind in Bundles enthalten, die hierarchische Container für Anwendungsdateien sind. Die Grundstruktur ist für jede Anwendung gleich. Die für den Benutzer interessantesten Dateien befinden sich im Ordner Ressourcen im App-Bundle.