avec Gradle 4.10.1
et le Android Gradle mis à jour vers 3.3.0
, je reçois l'avertissement suivant:
AVERTISSEMENT: l'API '
variantOutput.getPackageApplication()
' est obsolète et a été remplacée par 'variant.getPackageApplicationProvider()
'.
la ligne, avec le contexte environnant (qui attribue les noms de fichiers de sortie par variante de build):
applicationVariants.all { variant ->
variant.outputs.all { output ->
if (variant.getBuildType().getName() in rootProject.archiveBuildTypes) {
def buildType = variant.getBuildType().getName()
if (variant.versionName != null) {
def baseName = output.baseName.toLowerCase()
String fileName = "${rootProject.name}_${variant.versionName}-${baseName}.apk"
// this is the line:
outputFileName = new File(output.outputFile.parent, fileName).getName()
}
}
}
}
le guide de migration n'est pas trop utile; alors que le variant.outputs.all
est peut-être en faute - vous n'avez aucune idée de ce qu'il faut remplacer - et le guide de migration fait référence aux tâches et non à la création de variantes. en désactivant File → Settings → Experimental → Gradle → Only sync the active variant
, j'obtiens encore plus d'avertissements de dépréciation (le fait est qu'aucune de ces méthodes n'est appelée directement):
WARNING: API 'variant.getAssemble()' is obsolete and has been replaced with 'variant.getAssembleProvider()'.
WARNING: API 'variantOutput.getProcessResources()' is obsolete and has been replaced with 'variantOutput.getProcessResourcesProvider()'.
WARNING: API 'variantOutput.getProcessManifest()' is obsolete and has been replaced with 'variantOutput.getProcessManifestProvider()'.
WARNING: API 'variant.getMergeResources()' is obsolete and has been replaced with 'variant.getMergeResourcesProvider()'.
WARNING: API 'variant.getMergeAssets()' is obsolete and has been replaced with 'variant.getMergeAssetsProvider()'.
WARNING: API 'variant.getPackageApplication()' is obsolete and has been replaced with 'variant.getPackageApplicationProvider()'.
WARNING: API 'variant.getExternalNativeBuildTasks()' is obsolete and has been replaced with 'variant.getExternalNativeBuildProviders()'.
WARNING: API 'variantOutput.getPackageApplication()' is obsolete and has been replaced with 'variant.getPackageApplicationProvider()'.
Q: comment éviter ces avertissements de dépréciation en migrant vers la nouvelle API?
Une solution un peu moins douteuse:
def variant = findYourVariantSomehow()
def output = findCorrectOutputInVariant(variant)
def fileName = output.outputFileName
def fileDir = variant.packageApplicationProvider.get().outputDirectory.get()
def apkFile = file("$fileDir/$fileName")