【问题标题】:What is the right way to define versionName as ext variable in Android build.gradle?在 Android build.gradle 中将 versionName 定义为 ext 变量的正确方法是什么?
【发布时间】:2015-04-13 03:20:21
【问题描述】:

我尝试将 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 代码未能检索到 versionName,如下所示

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

我认为我没有以正确的方式使用 gradle。 如有任何帮助,我们将不胜感激。

【问题讨论】:

  • 是否尝试过设置 versionCode 19 而不是在 defaultConfig 中使用另一个变量{}?
  • @Christian 如果我设置“versionCode 19”,我的代码运行良好。如果我设置“versionCode versionCode”,pi.versionCode=0。这与我对 versionName 所做的相同。
  • 在下面发布了我的答案。干杯!

标签: android gradle task build.gradle


【解决方案1】:

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

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

然后在你的默认配置中

versionCode project.versionCode
versionName project.versionName

【讨论】:

  • 还有两个问题:ext {} 是干什么用的?我的 ant {} 块如何使用 project.versionName?提前感谢您的持续回复或官方文档的链接。
  • "用这个代替 ext {}" - 为什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-05
  • 1970-01-01
  • 1970-01-01
  • 2016-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多