Auf dieser Seite werden nützliche Anwendungseinstellungen in der Datei build.gradle.kts
auf Modulebene beschrieben. Neben einer Übersicht über wichtige Attribute, die in der Datei build.gradle.kts
festgelegt sind, können Sie auch:
- Die Anwendungs-ID für verschiedene Build-Konfigurationen ändern.
- Der Namespace kann unabhängig von der Anwendungs-ID sicher angepasst werden.
App-ID festlegen
Jede Android-App hat eine eindeutige App-ID, die wie ein Java- oder Kotlin-Paketname aussieht, z. B. com.example.myapp. Mit dieser ID wird deine App auf dem Gerät und im Google Play Store eindeutig identifiziert.
Deine Anwendungs-ID wird durch das Attribut applicationId
in der Datei build.gradle.kts
deines Moduls definiert, wie hier gezeigt. Aktualisieren Sie den Wert von applicationId
, indem Sie com.example.myapp
durch die ID Ihrer App ersetzen:
Kotlin
android { defaultConfig { applicationId = "com.example.myapp" minSdk = 15 targetSdk = 24 versionCode = 1 versionName = "1.0" } ... }
Groovig
android { defaultConfig { applicationId "com.example.myapp" minSdkVersion 15 targetSdkVersion 24 versionCode 1 versionName "1.0" } ... }
Obwohl die Anwendungs-ID wie ein traditioneller Kotlin- oder Java-Paketname aussieht, sind die Benennungsregeln für die Anwendungs-ID etwas restriktiver:
- Es muss mindestens zwei Segmente (einen oder mehrere Punkte) enthalten.
- Jedes Segment muss mit einem Buchstaben beginnen.
- Alle Zeichen müssen alphanumerisch oder Unterstriche [a-zA-Z0-9_] sein.
Wenn du ein neues Projekt in Android Studio erstellst, wird dem applicationId
automatisch der Paketname zugewiesen, den du bei der Einrichtung ausgewählt hast. Sie können die beiden Attribute ab dann technisch gesehen unabhängig voneinander umschalten, aber dies wird nicht empfohlen.
Beim Festlegen der Anwendungs-ID sollten Sie Folgendes tun:
- Verwenden Sie dieselbe Anwendungs-ID wie im Namespace. Die Unterscheidung zwischen diesen beiden Eigenschaften kann etwas verwirrend sein, aber wenn Sie sie beibehalten, brauchen Sie sich keine Sorgen zu machen.
- Ändern Sie die App-ID nach der Veröffentlichung Ihrer App nicht. Wenn Sie sie ändern, behandelt der Google Play Store den nachfolgenden Upload als neue App.
- Definieren Sie die Anwendungs-ID explizit. Wenn die Anwendungs-ID nicht explizit mit dem Attribut
applicationId
definiert wird, übernimmt sie automatisch denselben Wert wie der Namespace. Das bedeutet, dass durch eine Änderung des Namespace auch die Anwendungs-ID geändert wird, was normalerweise nicht Ihren Vorstellungen entspricht.
Anwendungs-ID zum Testen ändern
Standardmäßig wenden die Build-Tools eine Anwendungs-ID auf Ihr Instrumentierungstest-APK an. Dazu wird die App-ID für die angegebene Build-Variante verwendet, die an .test
angehängt ist. Ein Test-APK für die Build-Variante com.example.myapp.free
hat beispielsweise die App-ID com.example.myapp.free.test
.
Sie können die Anwendungs-ID ändern, auch wenn dies nicht unbedingt erforderlich ist. Definieren Sie dazu das Attribut testApplicationId
im defaultConfig
- oder productFlavor
-Block.
Namespace festlegen
Jedes Android-Modul hat einen Namespace, der als Kotlin- oder Java-Paketname für die generierten R
- und BuildConfig
-Klassen verwendet wird.
Ihr Namespace wird durch das Attribut namespace
in der Datei build.gradle.kts
Ihres Moduls definiert, wie im folgenden Code-Snippet gezeigt. namespace
wird anfangs auf den Paketnamen festgelegt, den Sie beim Erstellen Ihres Projekts ausgewählt haben.
Kotlin
android { namespace = "com.example.myapp" ... }
Groovig
android { namespace "com.example.myapp" ... }
Beim Erstellen der App in das endgültige Anwendungspaket (APK) verwenden die Android-Build-Tools den Namespace als Namespace für die generierte R
-Klasse der App, über die auf Ihre App-Ressourcen zugegriffen wird.
In der vorherigen Build-Datei wird beispielsweise die Klasse R
unter com.example.myapp.R
erstellt.
Der Name, den Sie für das Attribut namespace
der Datei build.gradle.kts
festlegen, muss immer mit dem Basispaketnamen Ihres Projekts übereinstimmen, in dem Sie Ihre Aktivitäten und anderen App-Code speichern. Das Projekt kann andere Unterpakete enthalten. Diese Dateien müssen jedoch die R
-Klasse mithilfe des Namespace aus dem Attribut namespace
importieren.
Zur Vereinfachung des Workflows belassen Sie den Namespace mit Ihrer Anwendungs-ID, da dies standardmäßig der Fall ist.
Namespace ändern
In den meisten Fällen sollten Sie den Namespace und die Anwendungs-ID standardmäßig beibehalten. Möglicherweise müssen Sie den Namespace jedoch irgendwann ändern, wenn Sie Ihren Code neu organisieren oder Namespace-Konflikte vermeiden möchten.
Ändern Sie in diesen Fällen den Namespace. Dazu aktualisieren Sie unabhängig von der Anwendungs-ID das Attribut namespace
in der Datei build.gradle.kts
des Moduls. Achten Sie jedoch darauf, dass Ihre Anwendungs-ID explizit definiert ist, damit eine Änderung des Namespace nicht gleich die Anwendungs-ID ändert. Weitere Informationen dazu, wie sich der Namespace auf die Anwendungs-ID auswirken kann, finden Sie unter Anwendungs-ID festlegen.
Wenn Sie für namespace
und den Gradle-applicationId
unterschiedliche Namen haben, kopieren die Build-Tools die Anwendungs-ID in die endgültige Manifestdatei Ihrer App am Ende des Builds.
Wenn Sie also Ihre AndroidManifest.xml
-Datei nach einem Build prüfen, wird das Attribut package
auf die Anwendungs-ID festgelegt. Über das Attribut package
des zusammengeführten Manifests wird die App dort gefunden, wo der Google Play Store und die Android-Plattform tatsächlich suchen.
Namespace zum Testen ändern
Der Standard-Namespace für die Quellsätze androidTest
und test
ist der Haupt-Namespace, wobei .test
am Ende hinzugefügt wird. Wenn beispielsweise das Attribut namespace
in der Datei build.gradle
den Wert com.example.myapp
hat, ist der Namespace für das Testen standardmäßig auf com.example.myapp.test
festgelegt.
Wenn Sie den Namespace für Testzwecke ändern möchten, verwenden Sie das Attribut testNamespace
, wie im folgenden Code-Snippet gezeigt:
Kotlin
android { namespace = "com.example.myapp" testNamespace = "com.example.mytestapp" ... }
Groovig
android { namespace "com.example.myapp" testNamespace "com.example.mytestapp" ... }
Achtung:Legen Sie für testNamespace
und namespace
nicht denselben Wert fest, da andernfalls Namespace-Konflikte auftreten.
Weitere Informationen zum Testen finden Sie unter Apps auf Android-Geräten testen.