build.gradle

=== Français (French) ===

Le rôle du fichier build.gradle

I. Introduction au système de build Gradle

Android Studio utilise Gradle pour construire les projets. Gradle est un outil de build très avancé qui utilise un langage spécifique à un domaine (DSL) basé sur Groovy pour déclarer les paramètres du projet, plutôt que le traditionnel XML.

Un projet HelloWorld contient deux fichiers build.gradle : un à l’extérieur (niveau projet) et un à l’intérieur (niveau module).


II. build.gradle externe (niveau projet)

Chemin : Répertoire racine du projet/build.gradle

buildscript {
    repositories {
        jcenter()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'

        // NOTE : Ne placez pas les dépendances de votre application ici ; elles doivent
        // se trouver dans les fichiers build.gradle de chaque module
    }
}

allprojects {
    repositories {
        jcenter()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}Langage du code : JavaScript (javascript)
Analyse des configurations clés
Élément de configurationDescription
jcenter()Déclare l’utilisation du dépôt d’hébergement de code JCenter. De nombreux projets Android open-source y sont hébergés ; une fois déclaré, vous pouvez y faire référence directement.
google()Déclare l’utilisation du dépôt Maven de Google pour obtenir les bibliothèques officielles comme Android Support Library et Constraint Layout.
classpath 'com.android.tools.build:gradle:3.1.2'Déclare le plugin Android pour Gradle. Gradle peut construire des projets Java, C++, etc., mais le plugin est nécessaire pour les projets Android.
allprojectsConfigure de manière unifiée les adresses des dépôts pour tous les modules (y compris les sous-modules).
task cleanDéfinit une tâche de nettoyage qui supprime tout le répertoire build du projet lors de son exécution.

Le fichier build.gradle externe ne nécessite généralement aucune modification, sauf si vous devez ajouter des dépôts globaux ou mettre à jour la version du plugin Gradle.


III. build.gradle interne (niveau module / répertoire app)

Chemin : app/build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    buildToolsVersion "27.0.3"
    defaultConfig {
        applicationId "com.foxdevelop.www.myapplication"
        minSdkVersion 14
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:27.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
}Langage du code : PHP (php)

Chaque section est détaillée ci-dessous.


IV. apply plugin — Déclaration du plugin

apply plugin: 'com.android.application'Langage du code : JavaScript (javascript)
ValeurSignification
com.android.applicationModule application, peut être exécuté directement.
com.android.libraryModule bibliothèque, ne peut pas être exécuté seul, destiné à être appelé par d’autres modules.

C’est la configuration clé qui distingue un module « App » d’une « Library ».


V. Bloc android — Configuration de build principale

1. Version de compilation et outils de build
compileSdkVersion 27
buildToolsVersion "27.0.3"Langage du code : CSS (css)
ConfigurationDescription
compileSdkVersionSpécifie la version du SDK Android utilisée pour compiler le projet. 27 correspond à Android 8.1.
buildToolsVersionNuméro de version des outils de build ; Android Studio invite à mettre à jour en cas de nouvelle version.
2. defaultConfig — Configuration par défaut
defaultConfig {
    applicationId "com.foxdevelop.www.myapplication"
    minSdkVersion 14
    targetSdkVersion 27
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}Langage du code : JavaScript (javascript)
PropriétéDescription
applicationIdNom de package unique de l’application, utilisé comme identifiant unique (pour Google Play par exemple).
minSdkVersionVersion minimale d’Android supportée ; 14 correspond à Android 4.0.
targetSdkVersionIndique que l’application a été entièrement testée sur cette version. Le système active les nouvelles fonctionnalités en conséquence (ex: mode multi-fenêtres sur 7.0).
versionCodeNuméro de version, un entier utilisé par les stores pour déterminer les mises à jour.
versionNameNom de version, une chaîne visible par l’utilisateur.
testInstrumentationRunnerSpécifie le runner pour les tests automatisés Android.
3. buildTypes — Types de build
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}Langage du code : JavaScript (javascript)
ConfigurationDescription
debugConfiguration de la version de test (peut être omise, a des valeurs par défaut).
releaseConfiguration de la version de production.
minifyEnabledActive ou non l’obfuscation du code. false = pas d’obfuscation, true = obfuscation.
proguardFilesSpécifie les fichiers de règles de obfuscation :
• Premier : règles générales du répertoire SDK.
• Deuxième : proguard-rules.pro, pour les règles spécifiques au projet.

Par défaut, Android Studio exécute la version debug ; nous verrons plus tard comment générer une version de production.


VI. dependencies — Gestion des dépendances

C’est la section la plus souvent modifiée, utilisée pour déclarer toutes les bibliothèques dont le projet dépend.

Trois types de dépendances
TypeDescriptionExemple
Dépendance localeDépend de fichiers jar ou répertoires locauxcompile fileTree(dir: 'libs', include: ['*.jar'])
Dépendance de bibliothèqueDépend d’un module bibliothèque dans le projetcompile project(':library')
Dépendance distanteDépend de bibliothèques open-source sur JCenter/Googlecompile 'com.android.support:appcompat-v7:27.+'
Analyse ligne par ligne
// Dépendance locale : ajoute tous les fichiers .jar du répertoire libs au chemin de build
compile fileTree(dir: 'libs', include: ['*.jar'])Langage du code : PHP (php)
// Dépendance distante : bibliothèque de compatibilité AppCompat
// Format : domaine:groupe:version
compile 'com.android.support:appcompat-v7:27.+'Langage du code : JavaScript (javascript)
// Dépendance distante : bibliothèque de mise en page ConstraintLayout
compile 'com.android.support.constraint:constraint-layout:1.0.2'Langage du code : JavaScript (javascript)
// Dépendance de test : JUnit pour les tests unitaires
testCompile 'junit:junit:4.12'Langage du code : JavaScript (javascript)
// Dépendance de test Android : Espresso pour les tests UI
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
})Langage du code : JavaScript (javascript)

Flux de travail des dépendances distantes : Gradle vérifie d’abord si la bibliothèque est en cache local → si oui, l’utilise → sinon, la télécharge automatiquement → puis l’ajoute au chemin de build.


VII. Résumé comparatif

FichierRôleFréquence de modification
build.gradle externeConfiguration globale des dépôts, version du plugin GradleRarement modifié
app/build.gradle interneConfiguration de build du module, gestion des dépendancesSouvent modifié
Configuration principaleAttributs clés
——————
apply pluginDistinction application / bibliothèque
compileSdkVersionVersion du SDK de compilation
applicationIdIdentifiant unique de l’application
minSdkVersionVersion minimale compatible
targetSdkVersionVersion cible de test
buildTypesConfiguration debug / release
dependenciesDépendances locales / distantes / bibliothèque

build.gradle

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *