我在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)
}
}
}
现在我已将Gradle插件更新到v.0.13.0并将Gradle更新到v.2.1。出现以下警告:
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.
如何重写Groovy脚本以消除弃用警告?
答案 0 :(得分:59)
根据Larry Schiefer的答案,您可以将脚本更改为以下内容:
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)
}
}
}
}
答案 1 :(得分:16)
完整的代码段如下所示:
// 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)
}
}
}
答案 2 :(得分:9)
最新的Android Gradle插件中的构建变量输出API已更改。它现在允许多个输出文件(或目录),这就是为什么此方法已被标记为已弃用。如果您改为使用variant.outputs
,它会为您提供Collection
,然后您可以迭代并获取每个输出文件。您必须验证文件对象是非空的并且它符合您的条件(例如,具有'.apk'扩展名。)然后您可以创建一个新的File
对象并将其添加到输出中采集。
答案 3 :(得分:4)
Gradle 3.0.0的Android插件
你可以这样使用
android.applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "${variant.name}-${variant.versionName}.apk"
}
}
您可以获得有关Android文档的功能和新变化的更多信息 https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html#update_gradle