Android 如何模仿Gradle';Travis CI build的s buildConfigField?
我尝试将我的android应用程序与Travis CI集成。我的应用程序需要一个api密钥,不应该在repo中发布。因此,我将我的api密钥放入全局gradle属性文件Android 如何模仿Gradle';Travis CI build的s buildConfigField?,android,gradle,continuous-integration,travis-ci,Android,Gradle,Continuous Integration,Travis Ci,我尝试将我的android应用程序与Travis CI集成。我的应用程序需要一个api密钥,不应该在repo中发布。因此,我将我的api密钥放入全局gradle属性文件~/.gradle/gradle.properties: MY_SECRET_API_KEY="aaaabbbcccdddeeefff" 然后我在app/build.gradle文件(位于公共存储库中)中读取该值,并将其设置为buildconfig字段: apply plugin: 'com.android.applicatio
~/.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\u key
在应用程序代码中使用此api密钥
我从Travic CI收到以下错误消息:
在com.android.build.gradle.AppExtension\u装饰上找不到属性“MY\u SECRET\u API\u KEY”。使用Travis的环境变量;更具体地说,使用加密变量,以便在生成输出中始终屏蔽安全变量的值。不过,您可以将gradle脚本中的Tavis env变量读取为
System.getenv('key')
。在本地端使用环境变量也更干净。如果仍要使用gradle.properties,可以执行以下操作:
hasProperty('secret_api_key') ? secret_api_key: System.getenv('secret_api_key')
要设置Travis环境变量,请参见:
那么gradle.properties在你的本地机器上吗?@RaGe,是的
gradle.properties
仅在我的本地机器上Avis在远程服务器上,对吗?它看不到你的梯度。属性?是的,没错。travis ci位于远程服务器上,因此没有gradle.properties
文件。这就是我的问题,有没有办法配置gradle(或travis ci)来构建我的项目,而不必在存储库中发布gradle.properties
。@MichaelVescovo,是的,我使用的是