在Android build.gradle中将versionName定义为ext变量的正确方法是什么?

时间:2015-04-13 03:20:21

标签: android gradle task build.gradle

我尝试将versionName定义为要在我的gradle配置文件app / build.gradle中使用的ext变量。

ext {
    versionCode = 19
    versionName = "1.2.3"
    ...
}
...
android {
    ...
    defaultConfig {
        ...
        versionCode versionCode
        versionName versionName
    }
    ...
}
...
task updateReleaseMetadata(type:Exec) {
    commandLine 'sh'
    args "MyShellScript.sh", versionName
}
...

看起来工作正常。但是我的android代码无法检索版本名称,如下所示

PackageInfo pi = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
return pi.versionName;  // return null

我想我没有以正确的方式使用gradle。 任何帮助都会得到满足。

1 个答案:

答案 0 :(得分:10)

这是在Gradle中设置全局变量的方法。使用此代替ext {}

project.ext.set("versionCode", 19)
project.ext.set("versionName", "1.2.3")

然后在你的defaultConfig

versionCode project.versionCode
versionName project.versionName