J'utilise la configuration simplifiée suivante dans un projet d'application Android.
Android {
compileSdkVersion 20
buildToolsVersion "20.0.0"
defaultConfig {
minSdkVersion 8
targetSdkVersion 20
versionCode 1
versionName "1.0.0"
applicationVariants.all { variant ->
def file = variant.outputFile
def fileName = file.name.replace(".apk", "-" + versionName + ".apk")
variant.outputFile = new File(file.parent, fileName)
}
}
}
Maintenant que j'ai mis à jour le plug-in Gradle vers v.0.13.0 et Gradle vers v.2.1. les avertissements suivants apparaissent:
WARNING [Project: :MyApp] variant.getOutputFile() is deprecated.
Call it on one of variant.getOutputs() instead.
WARNING [Project: :MyApp] variant.setOutputFile() is deprecated.
Call it on one of variant.getOutputs() instead.
WARNING [Project: :MyApp] variant.getOutputFile() is deprecated.
Call it on one of variant.getOutputs() instead.
WARNING [Project: :MyApp] variant.setOutputFile() is deprecated.
Call it on one of variant.getOutputs() instead.
Comment puis-je réécrire le script Groovy pour se débarrasser des avertissements de dépréciation?
En s'appuyant sur la réponse de Larry Schiefer vous pouvez changer le script en quelque chose comme ceci:
Android {
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
def fileName = outputFile.name.replace('.apk', "-${versionName}.apk")
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
}
L'extrait de code complet ressemble à celui-ci:
// Customize generated apk's name with version number
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
def manifestParser = new com.Android.builder.core.DefaultManifestParser()
def fileName = outputFile.name.replace(".apk", "-DEBUG-" + manifestParser.getVersionName(Android.sourceSets.main.manifest.srcFile) + ".apk")
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
L'API de sortie de la variante de génération a changé dans le dernier Android Gradle. Elle autorise désormais plusieurs fichiers de sortie (ou répertoires), c'est pourquoi cette méthode a été marquée comme obsolète. Si vous utilisez variant.outputs
à la place, il vous donnera un Collection
que vous pourrez ensuite parcourir et obtenir chaque fichier de sortie. Vous devrez vérifier que l'objet fichier n'est pas nul et qu'il correspond à vos critères (par exemple, a une extension ".apk".) Ensuite, vous pouvez créer un nouvel objet File
et l'ajouter à la sortie dans la collection.
Plugin Android pour Gradle 3.0.0
Vous pouvez utiliser comme ça
Android.applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "${variant.name}-${variant.versionName}.apk"
}
}
vous pouvez en savoir plus sur les fonctionnalités et les nouvelles modifications dans Android https://developer.Android.com/studio/build/gradle-plugin-3-0-0- migration.html # update_gradle