App-Modul konfigurieren

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.