我正在开发依赖于 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 文件和修改构建文件的情况下构建项目?
首先在根项目目录中创建一个名为 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 中执行相同的检查,如果属性不可用,则可以省略发布版本:
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
}
}
}
设法弄清楚了这个问题。根据 Gradle 文档,配置按以下顺序应用:
项目根目录中的 gradle.properties。
gradle.properties in GRADLE_USER_HOME 目录中。
系统属性,例如,当在命令上设置 -Dgradle.user.home 时 线。
所以我所要做的就是在 gradle 主目录中添加自定义 gradle.properties 文件(Mac 上的/USERNAME/.gradle/(