Cette page décrit les paramètres d'application utiles du fichier build.gradle.kts
au niveau du module. En plus de découvrir un aperçu des propriétés importantes définies dans le fichier build.gradle.kts
, 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.kts
de votre module, comme indiqué ci-dessous. Mettez à jour la valeur de applicationId
en remplaçant com.example.myapp
par l'ID de votre application:
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" } ... }
Bien que l'ID application ressemble à un nom de package Kotlin ou Java 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érera 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 qu'en modifiant l'espace de noms, vous modifiez aussi l'ID application, ce qui n'est généralement pas ce que vous souhaitez.
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, un APK de test pour la variante de compilation com.example.myapp.free
aura l'ID application com.example.myapp.free.test
.
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 Kotlin ou Java 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.kts
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.
Kotlin
android { namespace = "com.example.myapp" ... }
Groovy
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.kts
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 de votre 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.kts
de votre module) indépendamment de l'ID application. Avant cela, assurez-vous que l'ID de votre 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 constaterez 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 :
Kotlin
android { namespace = "com.example.myapp" testNamespace = "com.example.mytestapp" ... }
Groovy
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.