Configurer le module d'application

Cette page décrit les paramètres d'application utiles du fichier build.gradle au niveau du module. En plus de découvrir un aperçu des propriétés importantes définies dans le fichier build.gradle, vous allez apprendre à effectuer les opérations suivantes :

  • Modifier l'ID application pour différentes configurations de compilation
  • Ajuster, en toute sécurité, l'espace de noms indépendamment de l'ID application

Définir l'ID application

Chaque application Android possède un ID application unique qui ressemble à un nom de package Java ou Kotlin, par exemple com.example.myapp. Cet ID identifie de manière unique votre application sur l'appareil et sur le Google Play Store.

Votre ID application est défini par la propriété applicationId dans le fichier build.gradle de votre module, comme indiqué ci-dessous :

Groovy

android {
    defaultConfig {
        applicationId "com.example.myapp"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    ...
}

Kotlin

android {
    defaultConfig {
        applicationId = "com.example.myapp"
        minSdk = 15
        targetSdk = 24
        versionCode = 1
        versionName = "1.0"
    }
    ...
}

Bien que l'ID application ressemble à un nom de package Java ou Kotlin traditionnel, ses règles de dénomination sont un peu plus restrictives :

  • Il doit comporter au moins deux segments (un ou plusieurs points).
  • Chaque segment doit commencer par une lettre.
  • Tous les caractères doivent être alphanumériques ou un trait de soulignement [a-zA-Z0-9_].

Lorsque vous créez un projet dans Android Studio, le nom du package que vous avez choisi lors de la configuration est automatiquement attribué à applicationId. Techniquement, vous pouvez activer ou désactiver les deux propriétés indépendamment, mais cela n'est pas recommandé.

Nous vous conseillons de procéder comme suit lorsque vous définissez l'ID application :

  • Conservez un ID application identique à l'espace de noms. La distinction entre les deux propriétés peut s'avérer un peu déroutante, mais si vous respectez cette recommandation, vous n'avez aucune inquiétude à avoir.
  • Ne modifiez pas l'ID application après avoir publié votre application. Sinon, le Google Play Store considère l'importation suivante comme une nouvelle application.
  • Définissez explicitement l'ID application. Si l'ID application n'est pas défini explicitement à l'aide de la propriété applicationId, il prend automatiquement la même valeur que l'espace de noms. Cela signifie que la modification de l'espace de noms modifie l'ID application, ce qui n'est généralement pas ce que vous souhaitez.

Attention : Si vous utilisez WebView, pensez à utiliser le nom de package comme préfixe dans votre ID application, sans quoi vous risquez de rencontrer des problèmes, comme indiqué dans le problème 211768.

Modifier l'ID application pour les tests

Par défaut, les outils de compilation appliquent un ID application à votre APK de test d'instrumentation en utilisant l'ID application de la variante de compilation donnée, suivi de .test. Par exemple, l'ID application com.example.myapp.free.test est affecté à un APK de test pour la variante de compilation com.example.myapp.free.

Bien que cela ne soit pas nécessaire, vous pouvez modifier l'ID application en définissant la propriété testApplicationId dans votre bloc defaultConfig ou productFlavor.

Définir l'espace de noms

Chaque module Android possède un espace de noms, qui est utilisé comme nom de package Java ou Kotlin pour ses classes R et BuildConfig générées.

Votre espace de noms est défini par la propriété namespace dans le fichier build.gradle de votre module, comme indiqué dans l'extrait de code ci-dessous : namespace est initialement défini sur le nom du package que vous choisissez lorsque vous créez votre projet.

android {
    namespace 'com.example.myapp'
    ...
}

Lors de la compilation de votre application dans le package d'application (APK) final, les outils de compilation Android utilisent l'espace de noms comme espace de noms de la classe R générée de votre application. Cette classe est utilisée pour accéder à vos ressources d'application. Par exemple, dans le fichier de compilation précédent, la classe R est créée à l'emplacement com.example.myapp.R.

Le nom que vous définissez pour la propriété namespace du fichier build.gradle doit toujours correspondre au nom du package de base de votre projet, dans lequel vous conservez vos activités et tout autre code d'application. Votre projet peut contenir d'autres sous-packages, mais ces fichiers doivent importer la classe R à l'aide de l'espace de noms de la propriété namespace.

Pour simplifier le workflow, votre espace de noms doit être identique à l'ID application, comme c'est le cas par défaut.

Modifier l'espace de noms

Dans la plupart des cas, l'espace de noms doit rester identique à l'ID application, comme c'est le cas par défaut. Cependant, vous devrez peut-être modifier l'espace de noms à un moment donné si vous réorganisez votre code ou pour éviter les conflits d'espaces de noms.

Dans ce cas, modifiez l'espace de noms (en mettant à jour la propriété namespace dans le fichier build.gradle de votre module) indépendamment de l'ID application. Avant cela, assurez-vous que votre ID application est défini explicitement, de sorte que la modification de l'espace de noms ne modifie pas aussi l'ID application. Pour savoir comment l'espace de noms peut affecter l'ID application, consultez Définir l'ID application.

Si les noms de namespace et de la propriété Gradle applicationId sont différents, les outils de compilation copient l'ID application dans le fichier manifeste final de votre application à la fin de la compilation. Ainsi, si vous inspectez votre fichier AndroidManifest.xml après une compilation, vous pouvez constater que l'attribut package est défini sur l'ID application. L'attribut package du manifeste fusionné est l'endroit où le Google Play Store et la plate-forme Android cherchent à identifier votre application.

Modifier l'espace de noms pour les tests

L'espace de noms par défaut des ensembles de sources androidTest et test correspond à l'espace de noms principal, auquel est ajouté .test. Par exemple, si la propriété namespace du fichier build.gradle est com.example.myapp, l'espace de noms de test est défini par défaut sur com.example.myapp.test. Pour modifier l'espace de noms à des fins de test, utilisez la propriété testNamespace, comme indiqué dans l'extrait de code suivant :

android {
    namespace 'com.example.myapp'
    testNamespace 'com.example.mytestapp'
    ...
}

Attention : Ne définissez pas la même valeur pour testNamespace et namespace, pour éviter tout conflit d'espaces de noms.

Pour en savoir plus sur les tests, consultez Tester des applications sur Android.