【问题标题】:Android Gradle 'versionCode' not read from environment variableAndroid Gradle 'versionCode' 未从环境变量中读取
【发布时间】:2017-05-18 19:33:25
【问题描述】:

我有一个通过 CI 服务器部署到 Google Play alpha 轨道的 Android。对于 Android versionCode,我使用通过环境变量注入 Gradle 脚本的 CI 内部版本号。

这曾经很好用;但目前 Google Play 不接受任何构建。当我为 Gradle 手动触发 alpha 上传构建(使用 gradle-play-publisher 插件)时,我最终会遇到以下错误:

APK has an invalid version code.

因此,当查看(使用aapt dump badging apk-path)生成的 APK 时,我看到版本代码 (versionCode='') 的值为空。

构建脚本中的相关代码:

def appVersionCode = System.getenv("BUILD_NUMBER") as Integer ?: 0
defaultConfig {
  ...
  versionCode appVersionCode
  ...
}

似乎没有正确读取变量;但是它正确读取 System.getenv("KEY_PASS") 以用于签名。

变量也设置好了:

❯ echo $BUILD_NUMBER
1234

有谁知道为什么这个特定的变量似乎没有被读取(不再)?

Gradle 版本:3.5,带有 Android Gradle 插件 2.3.1。

【问题讨论】:

    标签: android gradle automation


    【解决方案1】:

    尝试将您的代码更改为:

    def appVersionCode = Integer.valueOf(System.env.BUILD_NUMBER ?: 0)
    defaultConfig {
      ...
      versionCode appVersionCode
      ...
    }
    

    【讨论】:

    • 更好地使用 def appVersionCode = Integer.valueOf(System.env.BUILD_NUMBER ?: 1) 因为版本代码 0 无效。
    猜你喜欢
    • 1970-01-01
    • 2020-12-02
    • 2016-12-23
    • 2017-03-06
    • 1970-01-01
    • 2015-07-19
    • 2012-09-05
    • 2017-11-16
    • 2019-11-30
    相关资源
    最近更新 更多