Android Centraliser les dépendances via le fichier "dependencies.gradle"


Exemple

Lorsque vous travaillez avec des projets multi-modules, il est utile de centraliser les dépendances dans un seul emplacement plutôt que de les répartir sur de nombreux fichiers de construction, en particulier pour les bibliothèques communes telles que les bibliothèques de support Android et les bibliothèques Firebase .

Une méthode recommandée consiste à séparer les fichiers de construction Gradle, avec un build.gradle par module, ainsi qu’un dans la racine du projet et un autre pour les dépendances, par exemple:

root
  +- gradleScript/
  |     dependencies.gradle
  +- module1/
  |     build.gradle
  +- module2/
  |     build.gradle
  +- build.gradle

Ensuite, toutes vos dépendances peuvent être situées dans gradleScript/dependencies.gradle :

ext {
    // Version
    supportVersion = '24.1.0'

    // Support Libraries dependencies
    supportDependencies = [
            design:            "com.android.support:design:${supportVersion}",
            recyclerView:      "com.android.support:recyclerview-v7:${supportVersion}",
            cardView:          "com.android.support:cardview-v7:${supportVersion}",
            appCompat:         "com.android.support:appcompat-v7:${supportVersion}",
            supportAnnotation: "com.android.support:support-annotations:${supportVersion}",
    ]

    firebaseVersion = '9.2.0';

    firebaseDependencies = [
            core:         "com.google.firebase:firebase-core:${firebaseVersion}",
            database:     "com.google.firebase:firebase-database:${firebaseVersion}",
            storage:      "com.google.firebase:firebase-storage:${firebaseVersion}",
            crash:        "com.google.firebase:firebase-crash:${firebaseVersion}",
            auth:         "com.google.firebase:firebase-auth:${firebaseVersion}",
            messaging:    "com.google.firebase:firebase-messaging:${firebaseVersion}",
            remoteConfig: "com.google.firebase:firebase-config:${firebaseVersion}",
            invites:      "com.google.firebase:firebase-invites:${firebaseVersion}",
            adMod:        "com.google.firebase:firebase-ads:${firebaseVersion}",
            appIndexing:  "com.google.android.gms:play-services-appindexing:${firebaseVersion}",
    ];
}

Ce qui peut alors être appliqué à partir de ce fichier dans le fichier de niveau supérieur build.gradle comme ceci:

// Load dependencies
apply from: 'gradleScript/dependencies.gradle'

et dans le module1/build.gradle comme ceci:

// Module build file
dependencies {
    // ...
    compile supportDependencies.appCompat
    compile supportDependencies.design
    compile firebaseDependencies.crash
}

Une autre approche

Une approche moins détaillée pour centraliser les versions de dépendances de bibliothèque peut être obtenue en déclarant une fois le numéro de version comme variable et en l'utilisant partout.

Dans la racine de l'espace de travail, build.gradle ajoute ceci:

ext.v = [
    supportVersion:'24.1.1',
]

Et dans chaque module qui utilise la même bibliothèque, ajoutez les bibliothèques nécessaires

compile "com.android.support:support-v4:${v.supportVersion}"
compile "com.android.support:recyclerview-v7:${v.supportVersion}"
compile "com.android.support:design:${v.supportVersion}"
compile "com.android.support:support-annotations:${v.supportVersion}"