我有一个特殊情况,我需要在使用Jenkins构建时覆盖谷歌地图键字符串变量.我已经设置了这样一个特殊的结构:
调试
水库
值
google_maps_api.xml
主要
水库
值
google_maps_api.xml
因此,在主 res文件中我放了发布API密钥并在调试 res文件中我放了调试API密钥(对于我正在处理的机器 - 为Android的debug.keystore生成).
在构建gradle文件中,我有这个基本逻辑,用于根据Jenkins环境中的设置创建字符串资源:
String googleMapApiKey = System.env.MAP_API_KEY;
...
android {
...
buildTypes {
...
debug {
if (null != googleMapApiKey && !googleMapApiKey.equals("null")) {
resValue "string", "google_maps_key", googleMapApiKey
}
}
...
}
...
}
xml文件包含:
MY_DEBUG_API_KEY
我知道问题是因为字符串资源的保留标志,但如果删除,有可能事情搞砸了并且松散了字符串资源.有没有办法可以替换实际字符串资源的值而不只是在构建gradle文件中创建一个新的?
我只是认为当我使用Jenkins环境中的值时,解决方案也可以排除该文件,但我不知道它是否适用于android gradle系统.有谁知道这是否可行而且更重要,如何?
LE:
看来我有到RES文件从移动主文件夹到版本之一.因此我现在有以下结构:调试
水库
值
google_maps_api.xml
发布
水库
值
google_maps_api.xml
现在,似乎这样工作.
LLE:
上面的方法不起作用,我的结论很快.似乎仍然使用xml文件中的值,即使我在gradle脚本中声明了相同的内容(至少作为名称).