App-Modul konfigurieren

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.