android – 如何为Travis CI构建模拟Gradle的buildConfigField?

我尝试将我的 Android应用程序与Travis CI集成.我的应用程序需要一个api密钥,不应该在repo中发布.所以,我把我的api密钥放在全局gradle属性文件〜/ .gradle / gradle.properties中:

MY_SECRET_API_KEY="aaaabbbcccdddeeefff"

然后我在app / build.gradle文件(在公共存储库中)中读取此值并将其设置为buildconfig字段:

apply plugin: 'com.android.application'

android {

    // ...

    buildTypes.each {
        it.buildConfigField "String", "API_KEY", MY_SECRET_API_KEY
    }

    // ...
}

并通过访问BuildConfig.API_KEY在应用程序代码中使用此api密钥.

我从Travic CI收到以下错误消息:
无法在com.android.build.gradle.AppExtension_Decorated上找到属性“MY_SECRET_API_KEY”.

最佳答案 使用Travis的环境变量;更具体地说,使用加密变量,以便在构建输出中始终屏蔽安全变量的值.您可以在gradle脚本中将Tavis env变量读作System.getenv(‘key’).在本地端使用环境变量也更清晰.如果您仍想使用gradle.properties,您可以执行以下操作:

hasProperty('secret_api_key') ? secret_api_key: System.getenv('secret_api_key')

要设置Travis env变量,请参阅here:
《android – 如何为Travis CI构建模拟Gradle的buildConfigField?》

点赞