Ceci est une ancienne révision du document !
Cas général
com.android.tools.build
et de la version de Gradle
Bien mettre à jour la classe com.android.tools.build
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
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]}/app-${output.name}.apk")
et en dehors de publishing
:
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