Package Name ist eine eindeutige Kennung für Android-Anwendungen, die auf der Reverse-Domain-Notation basiert. Sie wird vom System verwendet, um Anwendungen auf dem Gerät des Benutzers zu unterscheiden, von Google Play zur Identifizierung des Produkts und von Firebase-Diensten zur Verknüpfung aller Projektkonfigurationen. Laut der Android Developer Documentation bleibt der Package Name nach der Veröffentlichung über den gesamten Anwendungslebenszyklus unverändert.
Wichtigste Erkenntnisse
Package Name ist eine eindeutige Zeichenfolge, die Android zur Identifizierung einer Anwendung auf Betriebssystemebene verwendet. Sie entspricht dem Feld package in der Datei AndroidManifest.xml und dem Feld applicationId in der Datei build.gradle des App-Moduls. Ohne einen eindeutigen Package Name ist die Installation einer Anwendung auf dem Gerät des Benutzers nicht möglich.
Auf dem Gerät dient der Package Name als Schlüssel für die Anwendungsverwaltung: Das System speichert Daten, Einstellungen und Cache jeder Anwendung im Verzeichnis /data/data/[packageName]. Zwei Anwendungen mit derselben Kennung können nicht nebeneinander existieren — beim Versuch, ein Duplikat zu installieren, fordert das System zur Entfernung der vorhandenen App auf.
Im Android Gradle Plugin Version 0.11+ wurde eine Trennung zwischen Package Name (im Manifest) und Application ID (in build.gradle) eingeführt. Die Application ID ist die tatsächliche Anwendungskennung für das System und Google Play. Der Package Name im Manifest wird zur Ressourcenauflösung und R-Klassengenerierung verwendet. Es wird empfohlen, sie aus Einfachheitsgründen gleich zu halten.
// build.gradle (Module: app)
android {
defaultConfig {
applicationId "com.example.myapplication"
minSdkVersion 24
targetSdkVersion 34
versionCode 1
versionName "1.0"
}
buildTypes {
debug {
applicationIdSuffix ".debug"
}
}
}
Das Feld applicationIdSuffix ermöglicht das Hinzufügen eines Suffixes zur Application ID für verschiedene Build-Konfigurationen. Eine Debug-Version kann die Kennung com.example.app.debug haben, was die Installation neben der Produktionsversion für parallele Tests ermöglicht.
Google Play legt strenge Regeln für den Package Name fest, die bei der Veröffentlichung eingehalten werden müssen. Die Kennung muss im gesamten Store eindeutig sein, Syntaxanforderungen erfüllen und darf keine Markenrechte verletzen.
Der Package Name darf nur lateinische Buchstaben (A-Z, a-z), Ziffern (0-9), einen Punkt (.) und den Unterstrich (_) enthalten. Die maximale Länge beträgt 150 Zeichen. Jedes Segment zwischen den Punkten muss mit einem Buchstaben beginnen. Bindestriche, Leerzeichen und Sonderzeichen sind durch die Google Play-Regeln verboten.
| Anforderung | Wert | Beispiel |
|---|---|---|
| Erlaubte Zeichen | Lateinische Buchstaben, Ziffern, Punkt, Unterstrich | com.example.my_app |
| Maximale Länge | 150 Zeichen | com.example.verylongappname |
| Segmentbeginn | Nur Buchstabe | com — nicht 3com |
| Verboten | Bindestriche, Leerzeichen, Kyrillisch | com.example-app — Fehler |
| Eindeutigkeit | Global in Google Play | Bei Erstellung geprüft |
Die Eindeutigkeit des Package Name ist eine absolute Anforderung des Google Play Store. Wenn eine andere Anwendung die gewählte Kennung bereits verwendet, wird die Veröffentlichung abgelehnt. Google gibt keine Kennungen gelöschter Anwendungen frei, daher ist die Wahl des ersten Package Name eine kritische Entscheidung für jeden Entwickler.
Die Reverse-Domain-Notation ist ein Namensstandard, bei dem der Domainname des Unternehmens in umgekehrter Reihenfolge geschrieben wird: com.example statt example.com. Dieses System garantiert die globale Eindeutigkeit der Kennungen, da jeder Domainname von Natur aus eindeutig ist.
Entwickler verwenden in der Regel ein Präfix, das der TLD ihrer Domain entspricht: com für kommerzielle Organisationen, org für gemeinnützige Organisationen, io für Technologieprojekte, net für Netzwerkdienste und Lösungen. Für persönliche Projekte ist com.github.username oder com.email akzeptabel.
Für Anwendungen, die auf iOS und Android veröffentlicht werden, wird empfohlen, auf beiden Plattformen dieselbe Kennung zu verwenden. Dies vereinfacht die Integration mit Firebase, AppsFlyer, Adjust und anderen Analysesystemen, die an die Projektkennung gebunden sind. Beispielsweise wird com.mycompany.myapp die Bundle-ID auf iOS und der Package Name auf Android sein.
Die Konfiguration des Package Name in einem Android-Projekt umfasst die Änderung der applicationId in build.gradle und der entsprechenden Java/Kotlin-Quellcode-Verzeichnisstruktur. Android Studio bietet Werkzeuge zur Refaktorierung des Package Name, aber für komplexe Projekte wird eine schrittweise Migration empfohlen.
// Der Dateipfad entspricht dem Package Name
// com/example/myapp/MainActivity.kt
package com.example.myapp
import android.os.Bundle
import androidx.activity.ComponentActivity
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
}
In Kotlin und Java muss der Package Name in den Quelldateien mit der Verzeichnisstruktur übereinstimmen. Beim Ändern des Package Name in build.gradle müssen Sie die Dateien in die entsprechenden Verzeichnisse verschieben und alle package- und import-Deklarationen aktualisieren. Android Studio kann dies automatisch über Refactor -> Move erledigen, aber bei großen Projekten mit Dutzenden von Dateien wird empfohlen, das Ergebnis nach der Refaktorierung zu überprüfen.
Wenn das Projekt Data Binding, View Binding oder Hilt verwendet, wirkt sich die Änderung des Package Name auch auf generierte Klassen aus. Binding-Klassen werden basierend auf dem Package Name des Moduls und dem Layout-Verzeichnis erstellt. Nach dem Ändern der Kennung müssen Sie das Projekt neu erstellen, um alle generierten Referenzen zu aktualisieren. Es wird empfohlen, nach der Änderung des Package Name einen Clean Build durchzuführen, um Fehler durch zwischengespeicherte alte Referenzen zu vermeiden.
In Gradle 7.0+ wurde Unterstützung für namespace in build.gradle eingeführt, der das Feld package in AndroidManifest.xml für die R-Klassen- und Ressourcengenerierung ersetzt hat. Dabei bleibt applicationId die tatsächliche Anwendungskennung für das System und Google Play. Dies ermöglicht unterschiedliche applicationId und namespace, was für Bibliotheksmodule nützlich ist, bei denen der namespace fest ist, während die öffentliche Kennung während des Builds geändert werden kann.
Bei Projekten mit modularer Architektur kann die Änderung des Package Name eines Moduls Importe in anderen Modulen beeinflussen. Wenn das Datenmodul das Paket com.example.data hat und das Domainmodul seine Klassen verwendet, aktualisieren Sie nach dem Ändern der Kennung die Importe in allen abhängigen Modulen. Das Android Gradle Plugin Version 8.0+ vereinfacht diesen Prozess durch automatische namespace-Generierung aus build.gradle.
Um die aktuelle Application ID zu erhalten, verwenden Sie die BuildConfig-Klasse: BuildConfig.APPLICATION_ID. Dies ist nützlich für bedingte Logik im Code, Umgebungsbindung oder die Anzeige der Kennung in Debug-Bildschirmen. BuildConfig wird automatisch basierend auf build.gradle generiert.
// Application ID zur Laufzeit abrufen
val packageName = BuildConfig.APPLICATION_ID
val packageManager = packageManager
val appInfo = packageManager.getPackageInfo(packageName, 0)
println("App version: ${appInfo.versionName} (${appInfo.versionCode})")
println("Package: $packageName")
Das Ändern des Package Name nach der Veröffentlichung einer Anwendung bei Google Play ist ein Vorgang, der die Erstellung eines völlig neuen Produkts bedeutet. Das System erlaubt keine Aktualisierung einer vorhandenen Anwendung mit einem anderen Package Name, daher ist die Entscheidung, die Kennung zu ändern, gleichbedeutend mit einem Neustart des Projekts im Store.
Bei der Änderung des Package Name gehen verloren: alle Bewertungen und Rezensionen, Installationsstatistiken, Google Services-Integration (falls nicht migriert), Firebase-Projektlinks (erfordert Erstellung einer neuen google-services.json). Benutzer erhalten kein automatisches Update — sie sehen die neue Anwendung im Store.
Das Ändern des Package Name kann bei einem Rebranding des Unternehmens, der Übertragung einer Anwendung auf ein anderes Entwicklerkonto oder der Erstellung einer separaten Version für eine andere Region gerechtfertigt sein. In jedem Fall wird empfohlen, vor der Änderung die Benutzer über die alte Anwendung zu informieren und einen Migrationsplan mit Datenübertragung vorzubereiten. Ohne Migrationsplan verlieren Benutzer den Zugriff auf gekaufte Inhalte, Abonnements und gespeicherte Anwendungsdaten. Die Migration umfasst die Übertragung der Datenbank und Dateien über SharedPreferences oder Room.
Stellen Sie vor der Änderung des Package Name sicher, dass die neue Kennung eindeutig ist und den Namensregeln entspricht. Erstellen Sie eine neue Anwendung bei Google Play mit dem neuen Package Name und veröffentlichen Sie sie als separates Produkt. Geben Sie in der Beschreibung der alten Anwendung einen Link zur neuen an. Erwägen Sie die Verwendung von Google Play Custom Store Listing zur Weiterleitung der Benutzer.
Häufig gestellte Fragen
Im Package Name ist der Unterstrich (_) erlaubt, aber nicht der Bindestrich (-). Unterstriche werden selten verwendet, sind aber akzeptabel: com.example.my_app. Bindestriche sind durch die Google Play-Regeln verboten und führen bei der Veröffentlichung zu einem Fehler. Es wird empfohlen, nur den Punkt als Segmenttrenner zu verwenden.
Package Name ist die Kennung in AndroidManifest.xml, die zur Ressourcenauflösung und R-Klassengenerierung verwendet wird. Application ID ist das Feld in build.gradle, das die Anwendungskennung für das System und den Google Play Store bestimmt. Es wird empfohlen, sie gleich zu halten, aber Unterschiede sind bei Verwendung von applicationIdSuffix zulässig.
Verwenden Sie die Reverse-Domain-Notation Ihres Unternehmens oder Spitznamens: com.domain.appname. Stellen Sie sicher, dass die Kennung in Google Play eindeutig ist. Vermeiden Sie gebräuchliche Wörter (todo, test, app) und prüfen Sie, ob die Kennung nicht bereits von einem anderen Entwickler verwendet wird, indem Sie in Google Play suchen.
Ja, vor der Veröffentlichung bei Google Play kann der Package Name ohne Konsequenzen geändert werden. Nach der Änderung müssen Sie google-services.json neu generieren, die Verzeichnisstruktur aktualisieren und alle Importe überprüfen. Android Studio bietet Refactor -> Move Werkzeuge zur Automatisierung des Prozesses.
Der Package Name bildet zusammen mit dem Signaturzertifikat eine eindeutige Bindung, die die Anwendung in Google Play identifiziert. Selbst wenn zwei Anwendungen unterschiedliche Package Names haben, können sie mit demselben Schlüssel signiert sein. Der Wechsel des Signaturzertifikats ist durch Key Rotation in der Play Console ohne Verlust der Kennung möglich.
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