android {
...
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
outputFileName =
defaultConfig.applicationId.subSequence(defaultConfig.applicationId.lastIndexOf(".")
+ 1, defaultConfig.applicationId.length()) + "-v" + defaultConfig.versionCode + "-" +
releaseTime() + ".apk"
}
}
}
...
}
def releaseTime() {
return new Date().format("yyyyMMdd_HHmmss", TimeZone.getTimeZone("GMT+8:00"))
}
//新版的gradle会有以下报错
WARNING: API 'variantOutput.getPackageApplication()' is obsolete and has been replaced with 'variant.getPackageApplicationProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance.
To determine what is calling variantOutput.getPackageApplication(), use -Pandroid.debug.obsoleteApi=true on the command line to display more information.
Affected Modules: app
没有什么影响,参考:https://blog.youkuaiyun.com/yuzhiqiang_1993/article/details/86576718
但是生成的版本号会是null,例如:vnull
解决办法,将 defaultConfig 修改为 varian
参考:https://www.cnblogs.com/blogs-of-lxl/p/10306145.html
最终版本:
android.applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = defaultConfig.applicationId.subSequence(defaultConfig.applicationId.lastIndexOf(".")
+ 1, defaultConfig.applicationId.length()) + "-v${variant.versionName}-${releaseTime()}.apk"
}
}