我尝试将我的Android应用程序与Travis CI集成。我的应用程序需要一个api密钥,不应该在repo中发布。所以,我把我的api密钥放在全局gradle属性文件CREATE OR REPLACE TRIGGER before_status
BEFORE INSERT OR UPDATE OF status ON blog_post
FOR EACH ROW
BEGIN
IF :new.status != 'O' OR 'A' THEN
raise_application_error(-20101, 'Value must be A or O, cannot be anything else');
END IF;
END;
中:
~/.gradle/gradle.properties
然后我在MY_SECRET_API_KEY="aaaabbbcccdddeeefff"
文件(位于公共存储库中)中读取此值并将其设置为buildconfig字段:
app/build.gradle
并通过访问apply plugin: 'com.android.application'
android {
// ...
buildTypes.each {
it.buildConfigField "String", "API_KEY", MY_SECRET_API_KEY
}
// ...
}
在应用代码中使用此API密钥。
我从Travic CI收到以下错误消息: 无法找到属性' MY_SECRET_API_KEY'在com.android.build.gradle.AppExtension_Decorated。
答案 0 :(得分:1)
使用Travis的环境变量;更具体地说,使用加密变量,以便在构建输出中始终屏蔽安全变量的值。您可以在gradle脚本中将Tavis env变量读作System.getenv('key')
。在本地端使用环境变量也更清晰。如果你仍想使用gradle.properties,你可以这样做:
hasProperty('secret_api_key') ? secret_api_key: System.getenv('secret_api_key')
要设置Travis env变量,请参阅here: