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

What is the right way to define versionName as ext variable in Android 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。 如有任何帮助,我们将不胜感激。

这是在Gradle中设置全局变量的方法。使用它而不是分机 {}

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

然后在你的默认配置中

versionCode project.versionCode
versionName project.versionName