Configurer votre build

Le syst�me de compilation Android compile des ressources d'application et du code source, puis les empaquette dans des APK ou des Android App Bundles (AAB) que vous pouvez tester, d�ployer, signer et distribuer.

Android�Studio utilise Gradle, une bo�te � outils de compilation avanc�e, pour automatiser et g�rer le processus de compilation, tout en vous permettant de d�finir des configurations de compilation personnalis�es flexibles. Chaque configuration de compilation peut d�finir son propre ensemble de code et de ressources, tout en r�utilisant les parties communes � toutes les versions de votre application. Le plug-in Android�Gradle fonctionne avec le kit d'outils de compilation pour fournir des processus et des param�tres configurables sp�cifiques � la compilation et aux tests des applications Android.

Gradle et le plug-in Android�Gradle s'ex�cutent ind�pendamment d'Android�Studio. Cela signifie que vous pouvez compiler vos applications Android � partir d'Android�Studio, de la ligne de commande sur votre ordinateur ou sur des ordinateurs sur lesquels Android�Studio n'est pas install�, comme des serveurs d'int�gration continue.

Si vous n'utilisez pas Android�Studio, d�couvrez comment cr�er et ex�cuter votre application � partir de la ligne de commande. Que vous compiliez un projet � partir de la ligne de commande, sur une machine distante ou � l'aide d'Android�Studio, le r�sultat de la compilation est le m�me.

Remarque�: �tant donn� que Gradle et le plug-in Android�Gradle s'ex�cutent ind�pendamment d'Android�Studio, vous devez mettre � jour les outils de compilation s�par�ment. Consultez les notes de version pour d�couvrir comment mettre � jour Gradle et le plug-in Android�Gradle.

Gr�ce � la souplesse du syst�me de compilation Android, vous pouvez effectuer des configurations de compilation personnalis�es sans avoir � modifier les fichiers sources principaux de votre application. Cette page vous aide � comprendre le fonctionnement du syst�me de compilation Android, ainsi que la fa�on dont il peut vous aider � personnaliser et automatiser plusieurs configurations de compilation. Pour en savoir plus sur le d�ploiement de votre application, consultez la section Compiler et ex�cuter votre application. Pour commencer � cr�er imm�diatement des configurations de compilation personnalis�es � l'aide d'Android�Studio, consultez la section Configurer des variantes de compilation.

Processus de compilation

Le processus de compilation comporte de nombreux outils et processus qui convertissent votre projet en Android Application Bundle (APK) ou Android App�Bundle (AAB).

Le plug-in Android�Gradle effectue la majeure partie du processus de compilation pour vous. Toutefois, il peut �tre utile de comprendre certains aspects de ce processus afin que vous puissiez l'ajuster pour r�pondre � vos besoins.

Les projets peuvent avoir des objectifs de compilation diff�rents. Par exemple, la compilation d'un une biblioth�que tierce g�n�re une archive Android (AAR) ou Java Archive (JAR) biblioth�ques. Cependant, une application est le type de projet le plus courant, et la compilation d'un projet d'application g�n�re un APK ou un AAB "debug" ou "release" de votre application que vous pouvez d�ployer, tester ou publier aupr�s des utilisateurs externes.

Cette page se concentre sur le d�veloppement d'applications, mais une grande partie des �tapes et des concepts de compilation est commune � la plupart des types de compilation.

Glossaire de compilation Android

Gradle et le plug-in Android�Gradle vous aident � configurer les aspects suivants de votre build�:

Types de compilation

Les types de compilation d�finissent certaines propri�t�s que Gradle utilise lors de la cr�ation et du packaging de votre application. Ils sont g�n�ralement configur�s pour diff�rentes �tapes de votre cycle de d�veloppement.

Par exemple, le type de compilation "debug" active les options de d�bogage et signe l'application avec la cl� de d�bogage, tandis que le type de compilation "release" peut r�duire, obscurcir et signer votre application avec une cl� de release en vue de la distribution.

Vous devez d�finir au moins un type de compilation pour pouvoir compiler votre application. Android�Studio cr�e les types de compilation "debug" et "release" par d�faut. Pour commencer � personnaliser les param�tres de packaging de votre application, d�couvrez comment configurer les types de compilation.

Types de produit
Les types de produit repr�sentent diff�rentes versions de votre application que vous pouvez proposer aux utilisateurs, telles que des versions gratuites et payantes. Vous pouvez personnaliser les types de produits pour qu'ils utilisent des ressources et du code diff�rents, tout en partageant et en r�utilisant les parties communes � toutes les versions de votre application. Les types de produit sont facultatifs. Vous devez les cr�er manuellement. Pour commencer � cr�er diff�rentes versions de votre application, d�couvrez comment configurer les types de produit.
Variantes de compilation
Une variante de compilation est un produit crois� d'un type de compilation et d'un type de produit. Il s'agit de la configuration que Gradle utilise pour cr�er votre application. Les variantes de compilation vous permettent de cr�er la version de d�bogage de vos types de produit pendant le d�veloppement ou les versions sign�es de ces types pour les distribuer. Bien que vous ne configuriez pas directement les variantes de compilation, vous configurez les types de compilation et les types de produit dont elles sont constitu�es. La cr�ation de types de compilation ou de produit suppl�mentaires entra�ne �galement la cr�ation de variantes de compilation. Pour apprendre � cr�er et � g�rer des variantes de compilation, consultez la pr�sentation Configurer des variantes de compilation.
Entr�es du fichier manifeste
Vous pouvez sp�cifier des valeurs pour certaines propri�t�s du fichier manifeste dans la configuration de la variante de compilation. Ces valeurs de compilation remplacent les valeurs existantes dans le fichier manifeste. Cela s'av�re utile si vous souhaitez g�n�rer plusieurs variantes de votre application avec une version de SDK minimale, une version de SDK cible ou un nom d'application diff�rent. Lorsque plusieurs fichiers manifestes sont pr�sents, l'outil de fusion de fichiers manifestes fusionne leurs param�tres.
D�pendances
Le syst�me de compilation g�re les d�pendances du projet � partir de votre syst�me de fichiers local et des d�p�ts distants. Vous n'avez donc pas besoin de rechercher, t�l�charger ni copier manuellement les packages binaires de vos d�pendances dans le r�pertoire de votre projet. Pour en savoir plus, consultez Ajouter des d�pendances de compilation.
Signature
Le syst�me de compilation vous permet de sp�cifier des param�tres de signature dans la configuration de compilation. De plus, il peut signer automatiquement votre application lors du processus de compilation. Le syst�me de compilation signe la version de d�bogage avec une cl� et un certificat par d�faut � l'aide d'identifiants connus pour �viter une invite de saisie du mot de passe au moment de la compilation. Il ne signe pas la version de release, sauf si vous d�finissez explicitement une configuration de signature pour ce build. Si vous ne disposez pas de cl� de publication, vous pouvez en g�n�rer une comme d�crit dans la section Signer votre application. Les builds sign�s sont requis pour la distribution des applications via la plupart des plates-formes de t�l�chargement d'applications.
Minification du code et des ressources
Le syst�me de compilation vous permet de sp�cifier un fichier de r�gles ProGuard diff�rent pour chaque variante de compilation. Lors de la compilation de votre application, le syst�me de compilation applique l'ensemble de r�gles appropri� pour r�duire votre code et vos ressources � l'aide de ses outils de r�duction int�gr�s tels que R8. La minification de votre code et de vos ressources peut vous aider � r�duire la taille de votre fichier APK ou AAB.
Prendre en charge plusieurs fichiers APK
Le syst�me de compilation vous permet de compiler automatiquement diff�rents APK ne contenant chacun que le code et les ressources n�cessaires pour une densit� d'�cran ou une interface binaire d'application (ABI) sp�cifiques. Pour en savoir plus, consultez Compiler plusieurs fichiers APK. Cependant, la publication d'un seul fichier AAB est l'approche recommand�e, car elle permet une division par langue en plus de la densit� d'�cran et de l'ABI, tout en �vitant d'avoir � importer plusieurs artefacts sur Google�Play. Toutes les nouvelles applications envoy�es apr�s ao�t�2021 devront utiliser des AAB.

Versions de Java dans les builds Android

Que votre code source soit �crit en Java, en Kotlin ou les deux, vous devez choisir un langage JDK ou Java � plusieurs endroits pour votre build. Consultez les versions de Java dans les builds Android. pour en savoir plus.

Fichiers de configuration de compilation

Pour cr�er des configurations de compilation personnalis�es, vous devez modifier un ou plus de fichiers de configuration de compilation. Ces de texte brut utilisent le langage sp�cifique au domaine (DSL, Domain Specific Language) pour d�crire et manipuler la logique de compilation Script Kotlin qui est un type de langage Kotlin. Vous pouvez �galement utiliser Groovy, dynamique pour la machine virtuelle Java (JVM) afin de configurer vos compilations.

Vous n'avez pas besoin de conna�tre le script Kotlin ni Groovy pour commencer � configurer build, car le plug-in Android Gradle introduit la plupart des �l�ments DSL dont vous avez besoin. Pour en savoir plus sur le DSL du plug-in Android Gradle, consultez le Documentation de r�f�rence DSL Le script Kotlin s'appuie �galement sur sous-jacentes DSL Kotlin Gradle.

Lorsque vous d�marrez un nouveau projet, Android Studio crée automatiquement certains ces fichiers pour vous et les remplit en fonction de valeurs par défaut raisonnables. Le projet présente la mise en page suivante:

└── MyApp/  # Project
    ├── gradle/
    │   └── wrapper/
    │       └── gradle-wrapper.properties
    ├── build.gradle(.kts)
    ├── settings.gradle(.kts)
    └── app/  # Module
    │   ├── build.gradle(.kts)
    │   ├── build/
    │   ├── libs/
    │   └── src/
    │        └── main/  # Source set
    │            ├── java/
    │            │   └── com.example.myapp
    │            ├── res/
    │            │   ├── drawable/
    │            │   ├── values/
    │            │   └── ...
    │            └── AndroidManifest.xml

Certains fichiers de configuration de compilation Gradle font partie de la structure de projet standard d'une application Android. Avant de commencer à configurer votre build, il est important de comprendre le champ d'application et la finalité de chacun de ces fichiers, ainsi que les éléments DSL de base qu'ils définissent.

Fichier Gradle Wrapper

Le wrapper Gradle (gradlew) est une petite application incluse dans votre qui télécharge et lance Gradle lui-même. Cela crée une exécution de compilation plus cohérente. Les développeurs téléchargent source de l'application et exécuter gradlew. Le fichier Gradle requis est alors téléchargé et lance Gradle pour créer votre application.

Le fichier gradle/wrapper/gradle-wrapper.properties contient une propriété, distributionUrl, qui décrit la version de Gradle permet d'exécuter votre build.

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

Fichier des paramètres Gradle

Le fichier settings.gradle.kts (pour le DSL Kotlin) ou Le fichier settings.gradle (pour le DSL Groovy) se trouve à la racine dans le répertoire du projet. Ce fichier de paramètres définit le dépôt au niveau du projet et indique � Gradle les modules qu'il doit inclure lors de la compilation de votre l'application. Les projets multimodules doivent sp�cifier chaque module devant acc�der au le build final.

Pour la plupart des projets, ce fichier se pr�sente comme suit par d�faut�:

Kotlin

pluginManagement {

    /**
      * The pluginManagement.repositories block configures the
      * repositories Gradle uses to search or download the Gradle plugins and
      * their transitive dependencies. Gradle pre-configures support for remote
      * repositories such as JCenter, Maven Central, and Ivy. You can also use
      * local repositories or define your own remote repositories. The code below
      * defines the Gradle Plugin Portal, Google's Maven repository,
      * and the Maven Central Repository as the repositories Gradle should use to look for its
      * dependencies.
      */

    repositories {
        gradlePluginPortal()
        google()
        mavenCentral()
    }
}
dependencyResolutionManagement {

    /**
      * The dependencyResolutionManagement.repositories
      * block is where you configure the repositories and dependencies used by
      * all modules in your project, such as libraries that you are using to
      * create your application. However, you should configure module-specific
      * dependencies in each module-level build.gradle file. For new projects,
      * Android Studio includes Google's Maven repository and the Maven Central
      * Repository by default, but it does not configure any dependencies (unless
      * you select a template that requires some).
      */

  repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
  repositories {
      google()
      mavenCentral()
  }
}
rootProject.name = "My Application"
include(":app")

Groovy

pluginManagement {

    /**
      * The pluginManagement.repositories block configures the
      * repositories Gradle uses to search or download the Gradle plugins and
      * their transitive dependencies. Gradle pre-configures support for remote
      * repositories such as JCenter, Maven Central, and Ivy. You can also use
      * local repositories or define your own remote repositories. The code below
      * defines the Gradle Plugin Portal, Google's Maven repository,
      * and the Maven Central Repository as the repositories Gradle should use to look for its
      * dependencies.
      */

    repositories {
        gradlePluginPortal()
        google()
        mavenCentral()
    }
}
dependencyResolutionManagement {

    /**
      * The dependencyResolutionManagement.repositories
      * block is where you configure the repositories and dependencies used by
      * all modules in your project, such as libraries that you are using to
      * create your application. However, you should configure module-specific
      * dependencies in each module-level build.gradle file. For new projects,
      * Android Studio includes Google's Maven repository and the Maven Central
      * Repository by default, but it does not configure any dependencies (unless
      * you select a template that requires some).
      */

    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
}
rootProject.name = "My Application"
include ':app'

Fichier de compilation de premier niveau

Le fichier build.gradle.kts de premier niveau (pour le DSL Kotlin) ou Le fichier build.gradle (pour le DSL Groovy) se trouve � la racine dans le r�pertoire du projet. Il d�finit g�n�ralement les versions courantes des plug-ins utilis�s par modules de votre projet.

L'exemple de code suivant d�crit les param�tres et les �l�ments DSL par d�faut dans le script de compilation de premier niveau apr�s avoir cr�� un projet:

Kotlin

plugins {

    /**
     * Use `apply false` in the top-level build.gradle file to add a Gradle
     * plugin as a build dependency but not apply it to the current (root)
     * project. Don't use `apply false` in sub-projects. For more information,
     * see Applying external plugins with same version to subprojects.
     */

    id("com.android.application") version "8.6.0" apply false
    id("com.android.library") version "8.6.0" apply false
    id("org.jetbrains.kotlin.android") version "1.9.23" apply false
}

Groovy

plugins {

    /**
     * Use `apply false` in the top-level build.gradle file to add a Gradle
     * plugin as a build dependency but not apply it to the current (root)
     * project. Don't use `apply false` in sub-projects. For more information,
     * see Applying external plugins with same version to subprojects.
     */

    id 'com.android.application' version '8.6.0' apply false
    id 'com.android.library' version '8.6.0' apply false
    id 'org.jetbrains.kotlin.android' version '1.9.23' apply false
}