gradle3.0之後Android自定義輸出APK名稱的正確方式
阿新 • • 發佈:2019-01-02
升級gradle到3.0.1的時候,app.gradle報瞭如下錯誤:Cannot set the value of read-only property ‘outputFile’ for ApkVariantOutputImpl_Decorated,即outputFile只是可讀的,這是我的程式碼是:
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output. outputFile
def fileName
if (outputFile != null && outputFile.name.endsWith('.apk')) {
// 輸出apk名稱為XXapp1.4.0_2017-02-14.apk
if (variant.buildType.name.equals('release')) {
fileName = "XXapp${defaultConfig.versionName}_${releaseTime()}.apk"
} else if (variant.buildType.name.equals('debug')) {
fileName = "XXapp${defaultConfig.versionName}_${releaseTime()}_debug.apk"
}
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
查閱資料後得知:
Android plugin 3.0 建議使用
Use all() instead of each()
Use outputFileName instead of output.outputFile if you change only file name (that is your case)
//配置自定義打包名稱
applicationVariants.all { variant ->
variant.outputs.all {
def fileName
def date = new Date()
def formattedDate = date.format('yyyyMMdd')
if (variant.buildType.name.equals('release')) {
fileName = "${variant.mergedFlavor.versionName}_release_${formattedDate}.apk"
} else if (variant.buildType.name.equals('debug')) {
fileName = "${variant.mergedFlavor.versionName}_debug_${formattedDate}.apk"
}
outputFileName = fileName;
}
}