App Bundle ID — ist eine eindeutige Anwendungs-ID, die in den Apple- und Google-Ökosystemen für die Registrierung, Signierung und Verteilung eines Softwareprodukts verwendet wird. Jede App erhält ihre Bundle ID bei der Projekterstellung, und diese ID bleibt während des gesamten Lebenszyklus unverändert. Laut der Apple Developer Documentation wird die Bundle ID für die Bindung von Diensten, Zertifikaten und Bereitstellungsprofilen verwendet.
Wichtige Punkte
Bundle Identifier ist eine Zeichenfolge, die eine App im Betriebssystem und im App Store eindeutig identifiziert. Unter iOS und macOS wird sie Bundle ID genannt, unter Android — Package Name, obwohl beide funktional die gleiche Rolle spielen: Sie gewährleisten die Eindeutigkeit der App auf dem Gerät und im Store.
Das Betriebssystem verwendet die Bundle ID, um Apps auf dem Gerät zu unterscheiden. Zwei Apps mit derselben ID können nicht gleichzeitig installiert werden — das System behandelt sie als dasselbe Produkt. App Stores überprüfen ebenfalls die Eindeutigkeit der Bundle ID bei der Veröffentlichung.
Apple führte die Bundle ID mit der Veröffentlichung des iOS SDK im Jahr 2008 ein. Das Reverse-Domain-Notationsformat wurde von Java (Package-Naming-Konvention) übernommen, wo es zur Vermeidung von Klassennamenkonflikten verwendet wird. Google übernahm diese Praxis für Android und gewährleistete so Konsistenz in beiden mobilen Ökosystemen.
| Plattform | Feldname | Beispiel |
|---|---|---|
| iOS/macOS | Bundle Identifier | com.example.myapp |
| Android | Package Name | com.example.myapp |
| watchOS | Bundle Identifier | com.example.myapp.watchkit |
| tvOS | Bundle Identifier | com.example.myapp.tvos |
Die Bundle ID besteht aus mehreren durch Punkte getrennten Segmenten. Der erste Teil ist der Entwickler- oder Firmenidentifikator (com, org, net). Der zweite ist die Firmendomäne (example, google, apple). Die folgenden Segmente geben den App-Namen und die Plattform an.
Eine typische Bundle ID sieht aus wie com.company.appname. Apple empfiehlt die Verwendung der Reverse-Domain-Notation, um globale Eindeutigkeit zu gewährleisten. Wenn das Unternehmen keine Domäne hat, ist die Verwendung von E-Mail erlaubt: com.example.myapp oder org.example.myapp.
Apple unterstützt Wildcard Bundle ID — eine Identifikatorvorlage mit Sternchen: com.example.*. Diese Vorlage ermöglicht die Verwendung einer App ID für mehrere Apps desselben Unternehmens. Die Wildcard ID ist während der Entwicklung praktisch, wird aber für die Produktion nicht empfohlen, da sie die Nutzung einiger Apple-Dienste einschränkt.
Wildcard-Einschränkungen: Push-Benachrichtigungen, CloudKit, In-App-Käufe und Game Center erfordern eine explizite (explicit) Bundle ID. Bei Verwendung der Vorlage com.example.* sind diese Dienste nicht verfügbar. Verwenden Sie für Produktions-Apps immer eine explizite Bundle ID, um die volle Funktionalität aller Apple-Dienste zu gewährleisten.
Zusätzlich zur Wildcard unterstützt Apple Präfix-Identifikatoren, die dem Entwicklungsteam bei der Registrierung im Apple Developer Program zugewiesen werden. Das Präfix (Team ID) wird automatisch zu allen App IDs und Bereitstellungsprofilen hinzugefügt. Zwei verschiedene Team IDs können dieselbe Bundle ID erstellen, aber auf dem Gerät gelten sie als unterschiedliche Apps.
Die Registrierung der Bundle ID ist ein obligatorischer Schritt vor der Veröffentlichung einer App. Im Apple-Ökosystem erfolgt die Registrierung im Apple Developer Portal über den Bereich Certificates, Identifiers & Profiles. Bei Google Play wird die Bundle ID beim Erstellen der App in der Entwicklerkonsole angegeben.
Wählen Sie im Apple Developer-Portal den Bereich Identifiers aus, klicken Sie auf die Schaltfläche Register und geben Sie den App ID-Typ an. Geben Sie den genauen Bundle ID-Namen ein und wählen Sie die erforderlichen Fähigkeiten aus: Push Notifications, CloudKit, Sign in with Apple. Nach der Registrierung steht der Identifikator für die Erstellung von Bereitstellungsprofilen zur Verfügung.
// Überprüfung der Bundle ID im App-Code
let bundleID = Bundle.main.bundleIdentifier
print("Current Bundle ID: \(bundleID ?? "unknown")")
// Überprüfung der Bundle ID für Build-Bedingungen
if bundleID == "com.example.app.production" {
// Produktionskonfiguration
Analytics.shared.configure(.production)
}
Google Play Console erfordert keine vorherige Registrierung der Bundle ID. Der Identifikator wird in der build.gradle-Datei des App-Moduls angegeben und muss in ganz Google Play eindeutig sein. Nach der Erstellung der App ist es unmöglich, den Package Name zu ändern. Wählen Sie den Identifikator daher sorgfältig aus und überprüfen Sie seine Eindeutigkeit durch eine Suche in Google Play. Google gibt Identifikatoren gelöschter Apps nicht frei, daher bleibt eine einmal vergebene Bundle ID für andere Entwickler unzugänglich.
Bei der Registrierung in App Store Connect müssen Sie eine Bundle ID aus dem vorhandenen Satz registrierter Identifikatoren angeben. Wenn der Identifikator noch nicht im Apple Developer-Portal registriert ist, bietet das System an, ihn automatisch zu erstellen. Nach der Registrierung wird die Bundle ID an das Team gebunden und kann ohne Kontaktaufnahme mit dem Apple-Support nicht auf ein anderes Entwicklerkonto übertragen werden. Jede Bundle ID kann mehrere Bereitstellungsprofile für verschiedene Umgebungen haben: Development, Ad Hoc, App Store.
Bei der Registrierung einer Bundle ID für eine iOS-App mit Erweiterungen muss jede Komponente separat registriert werden. Widget-Erweiterungen, Tastaturen, Notification Service und Watch App haben eigene, vom Hauptidentifikator abgeleitete Identifikatoren. App Store Connect gruppiert sie bei der Erstellung eines App Records, sodass alle Komponenten als eine einzige App veröffentlicht werden können.
Die Konfiguration der Bundle ID in Xcode erfolgt an mehreren Stellen: Info.plist, Build Settings und Signing & Capabilities. Das zentrale Feld ist Bundle Identifier im App-Ziel. Alle Apple-Dienste, von Push-Benachrichtigungen bis CloudKit, sind an diesen Identifikator gebunden. Eine falsch angegebene Bundle ID führt zu Signierfehlern und der Unmöglichkeit, im App Store zu veröffentlichen.
<!-- Info.plist — Basis-Bundle ID des Projekts -->
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<!-- Build Settings — Variable PRODUCT_BUNDLE_IDENTIFIER -->
<!-- Debug: com.example.app.dev -->
<!-- Release: com.example.app -->
Xcode verwendet die Variable PRODUCT_BUNDLE_IDENTIFIER in den Build Settings. Für verschiedene Build-Konfigurationen können unterschiedliche Werte festgelegt werden: com.example.app.dev für Debug und com.example.app für Release. Dies ist praktisch, um eine Entwicklungsversion neben der Produktionsversion auf demselben Gerät zu Testzwecken zu installieren.
Wenn die App Erweiterungen (Notification Service, Widget, Watch App) hat, erhält jede Erweiterung ihre eigene Bundle ID mit einem Suffix. Haupt-App: com.example.app. Widget-Erweiterung: com.example.app.widget. Watch App: com.example.app.watchkit. Jeder Identifikator wird separat im Apple Developer Portal registriert und erhält ein eigenes Bereitstellungsprofil. Xcode verwaltet diese Abhängigkeiten während des Builds automatisch.
App Bundle ID (Apple) und Package Name (Google) sind ähnliche Entitäten mit demselben Zweck, aber unterschiedlichen Nutzungsregeln in den iOS- und Android-Ökosystemen. Beide Identifikatoren verwenden die Reverse-Domain-Notation und können nach der Veröffentlichung in offiziellen App Stores nicht geändert werden.
Im Apple-Ökosystem ist die Bundle ID an Bereitstellungsprofile und Zertifikate gebunden. Beim Wechsel des Entwicklungsteams kann die Bundle ID über App Store Connect zwischen Konten übertragen werden. Unter Android ist der Package Name streng an die App in Google Play gebunden und kann nicht zwischen Entwicklerkonten übertragen werden.
| Merkmal | iOS Bundle ID | Android Package Name |
|---|---|---|
| Maximale Länge | Unbegrenzt | 150 Zeichen |
| Segmenttrenner | Punkt (.) | Punkt (.) |
| Erlaubte Zeichen | A-Z, a-z, 0-9, Punkt, Bindestrich | A-Z, a-z, 0-9, Punkt, Unterstrich |
| Wildcard | Unterstützt (*) | Nicht unterstützt |
| Verwendung im Code | Bundle.main.bundleIdentifier | BuildConfig.APPLICATION_ID |
Trotz der Unterschiede spielen beide Identifikatoren eine entscheidende Rolle: Ohne sie ist es unmöglich, eine App in einem offiziellen Store zu veröffentlichen. Empfehlung für plattformübergreifende Projekte — verwenden Sie denselben Identifikator in den iOS- und Android-Versionen, um die Integration mit Firebase, Analytics und anderen Diensten zu vereinfachen. Dies vereinfacht auch die Navigation für das Entwicklungsteam: Ein Identifikator für beide Projekte reduziert Verwirrung bei der Einrichtung von CI/CD und der Umgebungskonfiguration.
Bei der Entwicklung mit Flutter oder React Native ist ein einheitlicher Identifikator besonders wichtig, da die Codebasis gemeinsam genutzt wird und viele automatisierte Build-Tools denselben Paketnamen für beide Plattformen erwarten. Ein Firebase-Projekt wird ebenfalls an einen einzigen Identifikator für iOS und Android gebunden, was die Einrichtung von Analysen und Absturzberichten vereinfacht.
Häufig gestellte Fragen
Die Bundle ID zu ändern nach der Veröffentlichung im App Store oder Google Play ist unmöglich. Das System behandelt die neue ID als eine völlig andere App. Um ein vorhandenes Produkt zu aktualisieren, muss die Bundle ID während des gesamten App-Lebenszyklus unverändert bleiben.
Ein iOS- oder Android-Gerät erlaubt nicht die Installation einer zweiten App mit derselben ID über der ersten. Das System zeigt einen Fehler an und schlägt vor, die vorhandene App zu löschen. In den Stores wird die Veröffentlichung mit einer doppelten Bundle ID ebenfalls blockiert.
Verwenden Sie die Reverse-Domain-Notation Ihres Unternehmens: com.companyname.appname. Vermeiden Sie Bindestriche und Sonderzeichen. Wenn die App Erweiterungen hat, fügen Sie durch Punkte getrennte Suffixe hinzu. Stellen Sie sicher, dass die ID eindeutig und nicht von einem anderen Entwickler vergeben ist.
Ja, jede Erweiterung — Widget, Watch App, Notification Service — benötigt ihre eigene Bundle ID. Die Identifikatoren bilden eine Hierarchie: com.example.app als Basis, com.example.app.widget für das Widget, com.example.app.watchkit für die Watch. Alle werden separat im Apple Developer Portal registriert und teilen sich eine gemeinsame App ID mit der Haupt-App.
Bundle ID ist eine Identifikatorzeichenfolge im App-Code. App ID ist ein Objekt im Apple Developer-Portal, das eine Bundle ID mit einer Reihe aktivierter Dienste (Capabilities) kombiniert. Die App ID wird auf Basis der Bundle ID erstellt und zur Generierung von Bereitstellungsprofilen verwendet.
Zusammenfassung
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch