Outils pour utilisateurs

Outils du site


prob:gradle:mise_a_jour

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].uncapitalize()}/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

prob/gradle/mise_a_jour.1685451527.txt.gz · Dernière modification : 2023/05/30 14:58 de root