Auf dieser Seite werden nützliche App-Einstellungen in der Datei build.gradle.kts auf Modulebene beschrieben. Zusätzlich zu einer Übersicht über wichtige Attribute, die in der Datei build.gradle.kts festgelegt sind, erfahren Sie, wie Sie:
- Ändern Sie die Anwendungs-ID für verschiedene Build-Konfigurationen.
- Passen Sie den Namespace unabhängig von der Anwendungs-ID sicher an.
App-ID festlegen
Jede Android-App hat eine eindeutige Anwendungs-ID, die wie ein Java- oder Kotlin-Paketname aussieht, z. B. com.example.myapp. Diese ID identifiziert Ihre App eindeutig auf dem Gerät und im Google Play Store.
Ihre Anwendungs-ID wird durch das Attribut 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 Anwendung 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" } ... }
Obwohl die Anwendungs-ID wie ein herkömmlicher Kotlin- oder Java-Paketname aussieht, sind die Benennungsregeln für die Anwendungs-ID etwas restriktiver:
- Er muss mindestens zwei Segmente (einen oder mehrere Punkte) enthalten.
- Jedes Segment muss mit einem Buchstaben beginnen.
- Alle Zeichen müssen alphanumerisch oder ein Unterstrich [a-zA-Z0-9_] sein.
Wenn Sie ein neues Projekt in Android Studio erstellen, wird der applicationId automatisch der Paketname zugewiesen, den Sie bei der Einrichtung ausgewählt haben. Technisch gesehen können Sie die beiden Properties ab dann unabhängig voneinander aktivieren oder deaktivieren, dies wird jedoch nicht empfohlen.
Wir empfehlen, beim Festlegen der Anwendungs-ID Folgendes zu beachten:
- Behalten Sie die Anwendungs-ID als Namespace bei. Die Unterscheidung zwischen den beiden Attributen kann etwas verwirrend sein. Wenn Sie sie jedoch gleich halten, müssen Sie sich keine Sorgen machen.
- Ändern Sie die Anwendungs-ID nicht, nachdem Sie Ihre Anwendung veröffentlicht haben. Wenn Sie sie ändern, wird der nachfolgende Upload im Google Play Store als neue Anwendung behandelt.
- Geben Sie die Anwendungs-ID explizit an. Wenn die Anwendungs-ID nicht explizit mit dem Attribut
applicationIddefiniert wird, übernimmt sie automatisch denselben Wert wie der Namespace. Das bedeutet, dass sich durch das Ändern des Namespace die Anwendungs-ID ändert, was normalerweise nicht gewünscht ist.
Anwendungs-ID für Tests ändern
Standardmäßig wenden die Build-Tools eine Anwendungs-ID auf das APK für den Instrumentierungstest an. Dabei wird die Anwendungs-ID für die jeweilige Build-Variante verwendet und .test angehängt. Ein Test-APK für die Build-Variante com.example.myapp.free hat beispielsweise die Anwendungs-ID com.example.myapp.free.test.
Obwohl es nicht erforderlich sein sollte, können Sie die Anwendungs-ID ändern, indem Sie das Attribut 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.
Ihr Namespace wird durch das Attribut namespace in der Datei build.gradle.kts Ihres Moduls definiert, wie im folgenden Code-Snippet gezeigt. Der namespace wird anfänglich auf den Paketnamen festgelegt, den Sie beim Erstellen des Projekts auswählen.
Kotlin
android { namespace = "com.example.myapp" ... }
Groovy
android { namespace "com.example.myapp" ... }
Beim Erstellen des endgültigen Anwendungspakets (APK) verwenden die Android-Build-Tools den Namespace als Namespace für die generierte R-Klasse Ihrer App, die für den Zugriff auf Ihre Anwendungsressourcen verwendet wird. In der vorherigen Build-Datei wird die Klasse R beispielsweise unter com.example.myapp.R erstellt.
Der Name, den Sie für das Attribut namespace der Datei build.gradle.kts festlegen, sollte immer mit dem Namen des Basispakets Ihres Projekts übereinstimmen, in dem Sie Ihre Aktivitäten und anderen App-Code speichern. Sie können andere Unterpakete in Ihrem Projekt haben, aber diese Dateien müssen die Klasse R mit dem Namespace aus dem Attribut namespace importieren.
Der Einfachheit halber sollten Sie den Namespace wie die Anwendungs-ID beibehalten, wie es standardmäßig der Fall 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 irgendwann ändern, wenn Sie Ihren Code neu organisieren oder Namespace-Konflikte vermeiden möchten.
In diesen Fällen ändern Sie den Namespace, indem Sie das Attribut namespace in der Datei build.gradle.kts Ihres Moduls unabhängig von der Anwendungs-ID aktualisieren. Vorher müssen Sie jedoch dafür sorgen, dass Ihre Anwendungs-ID explizit definiert ist, damit sich die Anwendungs-ID nicht ändert, wenn Sie den Namespace ändern. 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 die Datei AndroidManifest.xml nach einem Build prüfen, ist das Attribut package auf die Anwendungs-ID festgelegt. Das Attribut package des zusammengeführten Manifests wird vom Google Play Store und der Android-Plattform verwendet, um deine App zu identifizieren.
Namespace für Tests ändern
Der Standard-Namespace für die Quellsätze androidTest und test ist der Haupt-Namespace, wobei am Ende .test hinzugefügt wird. Wenn das Attribut namespace in der Datei build.gradle beispielsweise com.example.myapp ist, wird der Test-Namespace standardmäßig auf com.example.myapp.test gesetzt. Wenn Sie den Namespace zu Testzwecken ä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" ... }
Weitere Informationen zum Testen finden Sie unter Apps auf Android-Geräten testen.