Ceci est une ancienne révision du document !
Table des matières
com.android.tools.build
com.android.tools.build
est obsolète
com.android.tools.build
désignait la version du plugin Gradle
. Il faut maintenant définir la version de Gradle
dans la version des plugins
/ id
.
Avant :
buildscript { dependencies { classpath 'com.android.tools.build:gradle:2.1.2' } }
Après
- build.gradle
plugins { id 'com.android.application' version '8.0.2' apply false id 'com.android.library' version '8.0.2' apply false }
- Compatibilité entre la la version de Gradle et du plugin Gradle
Bien mettre à jour la version des id
du build.gradle
en même temps que le champ distributionUrl
de Gradle dans le fichier gradle-wrapper.properties
.
Voir la page Gradle Plugin pour la compatibilité entre la version de gradle et son plugin.
Voir la page Maven pour la dernière version disponible de la classe com.android.tools.build:gradle
.
Il est aussi possible de lancer la commande suivante deux fois :
./gradle wrapper --gradle-version --7.5.1
Vielle version à Gradle 7
Avant :
- build.gradle
android { compileSdkVersion 24 buildToolsVersion "24.0.1" defaultConfig { minSdkVersion 16 targetSdkVersion 24 } }
Après (ajout d'un namespace
) :
- build.gradle
android { namespace 'com.same.application.id' compileSdk 24 buildTools "24.0.1" defaultConfig { minSdk 16 targetSdk 24 } }
Version 7 vers 8
''publishing'' / ''publications''
L'élément components
est maintenant vide. Il n'est donc plus nécessaire de l'appeler depuis afterEvaluate
.
Il faut donc trouver des alternatives.
- Cas d'une librairie
Si on utilise la boucle :
android.libraryVariants.all { variant -> variant.outputs.all { output -> create(variant.name.capitalize(), MavenPublication) { ... afterEvaluate { from components.findByName("${variant.name}") } } } }
Il faut remplacer afterEvaluate
par :
artifact(tasks.getByName("bundle${variant.name.capitalize()}Aar"))
- Cas d'une application
Dans le cas d'une application, les bundle ne sont pas de type MavenPublication et ne peuvent pas d'utiliser en tant qu'artefact.
Si on utilise la boucle :
android.applicationVariants.all { variant -> variant.outputs.all { output -> create(variant.name.capitalize(), MavenPublication) { ... afterEvaluate { // components are shared_debug_apk / shared_debug_aab from components.findByName("${variant.name}_apk") } } } }
Il faut remplacer afterEvaluate
par :
def match = variant.name =~ '^(.*)(Release|Debug)$' artifact("$buildDir/outputs/apk/${match[0][1]}/${match[0][2].uncapitalize()}/app-${output.name}.apk")
et en dehors de publishing
:
- build.gradle
tasks.whenTaskAdded { task -> if (task.name.startsWith("publish")) { def match = task.name =~ '^publish(.*)(Release|Debug)PublicationTo(.*)$' dependsOn(tasks.getByName("assemble${match[0][1]}${match[0][2]}")) } }
gradle publish.dependsOn('assemble') not working Archive du 29/07/2019 le 22/05/2023
repositories
Avant :
- build.gradle
buildscript { repositories { jcenter() } } allprojects { repositories { jcenter() } }
Après (changement de fichier) :
- settings.gradle
pluginManagement { repositories { gradlePluginPortal() google() mavenCentral() } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS) repositories { google() mavenCentral() mavenLocal() } }
Solve Gradle error: Plugin with id 'com.android.application' not found Archive du 17/05/2022 le 12/06/2023
AndroidX
Avant :
- build.gradle
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:24.1.1' }
Après :
- build.gradle
dependencies { implementation 'androidx.appcompat:appcompat:1.4.2' }