Android Gradle Plugin 3.0对操作apk输出的api做了变更。之前指定apk输出目录的方法不再适用。
Android Gradle Plugin 3.0之前
applicationVariants.all { variant ->
variant.outputs.each { output ->
output.outputFile = new File(output.outputFile.parent, defaultConfig.versionCode + "_" + output.outputFile.name)
}
}
Android Gradle Plugin 3.0新方法
需要做两点修改:
- 使用all()替换 each()
- 使用outputFileName 替换 output.outputFile,这个只改变输出apk包名。
applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "${variant.name}-${variant.versionName}.apk"
}
}
错误信息
如果没有修改,构建时报会类似的错误信息:
Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=debug, filters=[]}} of type com.android.build.gradle.internal.api.ApkVariantOutputImpl.
参考:https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html#variant_api