Auf dieser Seite werden nützliche App-Einstellungen in der Datei build.gradle.kts
auf Modulebene beschrieben. Neben einer Übersicht über wichtige Eigenschaften, die in der Datei build.gradle.kts
festgelegt sind, erfahren Sie hier Folgendes:
- Ändern Sie die Anwendungs-ID für verschiedene Buildkonfigurationen.
- Den Namespace unabhängig von der App-ID sicher anpassen.
App-ID festlegen
Jede Android-App hat eine eindeutige Anwendungs-ID, die wie der Name eines Java- oder Kotlin-Pakets aussieht, z. B. de.beispiel.meineapp. Anhand dieser ID wird Ihre App auf dem Gerät und im Google Play Store eindeutig identifiziert.
Die Anwendungs-ID wird durch die Eigenschaft applicationId
in der Datei build.gradle.kts
Ihres 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" } ... }
Groovy
android { defaultConfig { applicationId "com.example.myapp" minSdkVersion 15 targetSdkVersion 24 versionCode 1 versionName "1.0" } ... }
Die Anwendungs-ID sieht zwar aus wie ein herkömmlicher Kotlin- oder Java-Paketname, die Namensregeln für die Anwendungs-ID sind jedoch etwas strenger:
- Es muss mindestens zwei Segmente (ein oder mehrere Punkte) haben.
- Jedes Segment muss mit einem Buchstaben beginnen.
- Alle Zeichen müssen alphanumerisch oder Unterstriche sein [a-zA-Z0-9_].
Wenn Sie ein neues Projekt in Android Studio erstellen, wird der applicationId
automatisch der Paketname zugewiesen, den Sie bei der Einrichtung ausgewählt haben. Ab diesem Zeitpunkt können Sie die beiden Properties zwar unabhängig voneinander aktivieren und deaktivieren, wir raten davon jedoch ab.
Wir empfehlen Folgendes:
- Die Anwendungs-ID muss mit dem Namespace übereinstimmen. Der Unterschied zwischen den beiden Properties kann etwas verwirrend sein. Wenn Sie sie jedoch gleich lassen, besteht kein Grund zur Sorge.
- Ändern Sie die Anwendungs-ID nicht, nachdem Sie Ihre App veröffentlicht haben. Andernfalls behandelt der Google Play Store den nachfolgenden Upload als neue App.
- Geben Sie die Anwendungs-ID explizit an. Wenn die Anwendungs-ID nicht explizit über die Property
applicationId
definiert ist, übernimmt sie automatisch denselben Wert wie der Namespace. Das bedeutet, dass sich durch die Änderung des Namespace auch die Anwendungs-ID ändert, was in der Regel nicht gewünscht ist.
Anwendungs-ID für Tests ändern
Standardmäßig wenden die Build-Tools eine Anwendungs-ID auf die APK Ihres Instrumentierungstests an. Dabei wird die Anwendungs-ID der angegebenen Build-Variante mit .test
angehängt. Ein Test-APK für die Buildvariante com.example.myapp.free
hat beispielsweise die Anwendungs-ID com.example.myapp.free.test
.
Normalerweise ist das nicht erforderlich. Sie können die Anwendungs-ID jedoch ändern, indem Sie die Property testApplicationId
in Ihrem defaultConfig
- oder productFlavor
-Block definieren.
Namespace festlegen
Jedes Android-Modul hat einen Namespace, der als Kotlin- oder Java-Paketname für die generierten R
- und BuildConfig
-Klassen verwendet wird.
Der Namespace wird durch die Eigenschaft namespace
in der build.gradle.kts
-Datei Ihres Moduls definiert, wie im folgenden Code-Snippet gezeigt. namespace
ist anfangs auf den Paketnamen festgelegt, den Sie beim Erstellen des Projekts ausgewählt haben.
Kotlin
android { namespace = "com.example.myapp" ... }
Groovy
android { namespace "com.example.myapp" ... }
Wenn Sie Ihre App in das endgültige Anwendungspaket (APK) einbinden, verwenden die Android-Build-Tools den Namespace als Namespace für die generierte R
-Klasse Ihrer App, die zum Zugriff auf Ihre App-Ressourcen verwendet wird.
In der vorherigen Build-Datei wird die Klasse R
beispielsweise unter com.example.myapp.R
erstellt.
Der Name, den Sie für die namespace
-Eigenschaft der build.gradle.kts
-Datei festlegen, muss immer mit dem Basispaketnamen Ihres Projekts übereinstimmen, in dem sich Ihre Aktivitäten und anderer App-Code befinden. Ihr Projekt kann auch andere Unterpakete enthalten. Diese Dateien müssen die R
-Klasse jedoch mit dem Namespace aus der namespace
-Eigenschaft importieren.
Für einen einfacheren Workflow sollten Sie den Namespace so belassen, wie er standardmäßig ist.
Namespace ändern
In den meisten Fällen sollten Sie den Namespace und die Anwendungs-ID unverändert lassen, wie sie standardmäßig sind. Möglicherweise müssen Sie den Namespace jedoch ändern, wenn Sie Ihren Code neu organisieren oder Namespace-Kollisionen vermeiden möchten.
Ändern Sie in diesen Fällen den Namespace, indem Sie das Attribut namespace
in der build.gradle.kts
-Datei Ihres Moduls unabhängig von der Anwendungs-ID aktualisieren. Achten Sie dabei darauf, dass Ihre Anwendungs-ID explizit definiert ist, damit sich durch die Änderung des Namespace nicht auch 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 unterschiedliche Namen für die namespace
und die Gradle-applicationId
haben, kopieren die Build-Tools die Anwendungs-ID am Ende des Builds in die endgültige Manifestdatei Ihrer App.
Wenn Sie also nach einem Build Ihre AndroidManifest.xml
-Datei prüfen, ist das package
-Attribut auf die Anwendungs-ID festgelegt. Das Attribut package
des zusammengeführten Manifests wird vom Google Play Store und der Android-Plattform verwendet, um Ihre App zu identifizieren.
Namespace für Tests ändern
Der Standard-Namespace für die Quellsätze androidTest
und test
ist der Haupt-Namespace, an dessen Ende .test
hinzugefügt wird. Wenn die namespace
-Eigenschaft in der build.gradle
-Datei beispielsweise com.example.myapp
lautet, ist der Test-Namespace standardmäßig auf com.example.myapp.test
festgelegt.
Wenn Sie den Namespace für den Test ändern möchten, verwenden Sie das Attribut testNamespace
, wie im folgenden Code-Snippet gezeigt:
Kotlin
android { namespace = "com.example.myapp" testNamespace = "com.example.mytestapp" ... }
Groovy
android { namespace "com.example.myapp" testNamespace "com.example.mytestapp" ... }
Achtung:Legen Sie testNamespace
und namespace
nicht auf denselben Wert fest, da sonst Namespace-Kollisionen auftreten.
Weitere Informationen zu Tests finden Sie unter Apps auf Android-Geräten testen.