如何针对特定构建类型要求环境变量?

时间:2016-02-20 21:44:18

标签: android gradle

我试图以这样的方式配置我的构建类型:

  • release必须能够访问密钥环境变量(否则应该失败)
  • debug版本不需要密钥

问题是debug构建失败(缺少环境变量)。有没有人知道为什么会发生这种情况,即使getSecretKey()仅从release构建类型调用?

    buildTypes {
        def getSecretKeyOrAbort = {
            def key = System.getenv("MY_SECRET_KEY")
            if (key) return key
            else throw new GradleException("Environmental variable MY_SECRET_KEY required.")
        }

        debug {
            buildConfigField 'String', 'LICENSE_KEY', ''
        }
        release {
            buildConfigField 'String', 'LICENSE_KEY', getSecretKeyOrAbort()
        }
    }

1 个答案:

答案 0 :(得分:0)

一种方法是在所有环境中设置环境变量。

如果正在开发中,请将 env =“dev”设置为prod env =“prod”

然后在属性文件中添加一个键值对,类似这样..

dev =“YOUR_SECRET_KEY”

prod =“NO_KEY”

然后通过读取环境变量然后从属性文件中获取它来读取这些键值。