我要做的是创建6个不同的变体,每个变体的AndroidManifest几乎没有变化。数据是动态计算的,因此我不能简单地手工将其放入variant/AndroidManifest.xml
。
当我为一个特定的变体运行构建脚本时,说“ TinyDebug”,它没有完成我想做的事情。在这种情况下,我希望它的版本代码为1501。
我在这里对脚本进行了大量编辑,以使其更具可读性。由于数据计算的复杂性,我宁愿将它们放在一个任务中(初始化任务所依赖的任务)。
问题:为什么AndroidManifest中的version_code计算不正确?我应该如何执行计算,以便可以将风味因素考虑在内,并将其输出传递给AndroidManifest.xml
?
build.gradle
def int version_code_suffix = -1 //-1 means it is erronous or unset
task initialize{
doFirst{
android.productFlavors.tiny {
version_code_suffix = 1
}
}
}
android {
productFlavors {
tiny {
versionCode 1500 + version_code_suffix
}
}
tasks.whenTaskAdded { task ->
if (task.name == 'processTinyDebugResources') {
task.dependsOn initialize
}
}
}
AndroidManifest.xml构建后(应该为1501)
android:versionCode = 1499
答案 0 :(得分:0)
如果您将在如下所示的任何地方使用它,请尝试将其定义为项目变量。
project.ext.version_code_suffix = -1 //-1 means it is erronous or unset
task initialize{
doFirst{
android.productFlavors.tiny {
version_code_suffix = 1
}
}
}
android {
productFlavors {
tiny {
versionCode 1500 + version_code_suffix
}
}
tasks.whenTaskAdded { task ->
if (task.name == 'processTinyDebugResources') {
task.dependsOn initialize
}
}
}