def releaseTime() {
return new Date().format("yyyy-MM-dd-HH-mm")
}
import com.android.build.OutputFile
android {
...
splits {
abi {
enable true
reset()
include 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' //select ABIs to build APKs for
universalApk true //generate an additional APK that contains all the ABIs
}
}
// map for the version code
project.ext.versionCodes = ['armeabi-v7a': 81, 'arm64-v8a': 82, 'x86': 83, 'x86_64': 84]
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
def time = releaseTime()
def abiName = output.getFilter(OutputFile.ABI)
// version code
output.versionCodeOverride = project.ext.versionCodes.get(abiName, 0) * 1000000 + variant.versionCode
// output apk name
outputFileName = "${variant.name}-${abiName}-${output.versionCodeOverride}-${time}.apk"
}
}
}
abi 中参数含义:
enable: 启用 ABI 拆分机制
exclude: 默认情况下所有 ABI 都包括在内,你可以移除一些ABI。
include:指明要包含哪些 ABI
reset():重置 ABI 列表为只包含一个空字符串(与 include 一起使用可以表示要使用哪一个 ABI,而不是要 exclude 哪些 ABI)
universalApk:是否打包一个通用版本(包含所有的 ABI ),默认值为 false,为 false 时每个 ABI 打一个包。
https://developer.android.google.cn/studio/build/gradle-plugin-3-0-0-migration#variant_api