Outils pour utilisateurs

Outils du site


prob:gradle:mise_a_jour

Ceci est une ancienne révision du document !


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

Vieille 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'
}
prob/gradle/mise_a_jour.1692359717.txt.gz · Dernière modification : 2023/08/18 13:55 de root