我很难找到一个解决方案来覆盖项目的versionName
,仅作为发行版本的一部分,所以基本上在运行assembleRelease
时任务。
我的第一次尝试是:
android.applicationVariants.all { variant ->
if (variant.buildType.name == "release") {
variant.outputs.each { output ->
println("******* Overriding versionName ******* ")
output.versionNameOverride = "x.y.z" // getReleaseVersion()
}
}
}
这似乎可行,几乎...:
adb shell dumpsys package com.myapp | grep "versionName"
确认版本已被覆盖,但是问题是上面的代码块也被调用用于调试版本,这是我要避免的事情。
经过更多搜索后,我偶然发现了以下建议:
android.applicationVariants.all { variant ->
if (variant.buildType.name == "release") {
variant.assemble.doLast {
variant.outputs.each { output ->
println("******* Overriding versionName ********")
output.versionNameOverride = "x.y.z" //getReleaseVersion()
}
}
}
}
这会将outputs
的迭代包装为variant.assemble.doLast { }
。
现在此代码实际上仅是为了发布而调用的,但是,当从apk提取版本时,存在默认版本,因此事实证明该版本未被覆盖...
我在配置gradle任务方面经验不足,不胜感激如何解决此问题。