0

我想做的是创建 6 个不同的变体,每个变体几乎没有 AndroidManifest。数据是动态计算的,不能简单variant/AndroidManifest.xml的手动输入。

当我为特定变体运行构建脚本时,比如“TinyDebug”,它并没有做我想做的事情。在这种情况下,我希望它具有版本代码 1501。

我在这里对脚本进行了大量编辑,以使其更具可读性。由于数据计算的复杂性,我宁愿将它们放在一个任务中(初始化任务依赖于该任务)。

问题:为什么 AndroidManifest 中的 version_code 计算不正确?我应该如何执行我的计算,以便他们可以考虑风味,并将他们的输出传递给AndroidManifest.xml

构建.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
4

1 回答 1

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
        }
    }
}
于 2019-04-04T13:41:00.503 回答