我依靠Jenkins CI开发Android项目。所有签名密钥都存储在加密的gradle.properties文件中的单独存储库中。在项目存储库中,跟踪gradle.properties文件,并且(显然)不包含密钥。
以下是项目模块的示例build.gradle签名部分:
signingConfigs {
release {
keyAlias KEY_ALIAS
storeFile file(KEYSTORE_PATH)
storePassword KEYSTORE_PASSWORD
keyPassword MOBILE_KEY_PASSWORD
}
我的问题是:如何在我的本地开发机器上存储这些键,并且能够构建项目而不用更改gradle.properties文件并修改构建文件?
答案 0 :(得分:0)
首先在根项目目录中创建名为external.properties
的文件。
然后检查此文件是否存在
def externalPropertyFile = file("${rootProject.projectDir.path}${File.separator}external.properties")
if (!propertyFile.exist()) {
throw new GradleException("external.property file doesn't exist")
}
验证当前上下文中是否存在属性,如果未加载属性文件
if (!rootProject.ext.has("externalProperties")) {
rootProject.ext {
externalProperties = new Properties()
externalProperties.load(propertyFile.newReader())
}
}
您可以在签名配置中执行相同的检查,如果属性不可用,则省略发布版本:
signingConfigs {
if (rootProject.ext.has("externalProperties")) {
release {
keyAlias rootProject.externalProperties.KEY_ALIAS
storeFile file(rootProject.externalProperties.KEYSTORE_PATH)
storePassword rootProject.externalProperties.KEYSTORE_PASSWORD
keyPassword rootProject.externalProperties.MOBILE_KEY_PASSWORD
}
}
}
答案 1 :(得分:0)
管理好了解决这个问题。根据{{3}},配置按以下顺序应用:
项目根目录中的gradle.properties。
GRADLE_USER_HOME目录中的gradle.properties。
系统属性,例如在命令上设置-Dgradle.user.home时 线。
所以我所要做的就是在gradle主目录中添加自定义gradle.properties文件(Mac上的/USNAME=/gradle/)