我正在尝试设置签名过程,以便密钥库、密码和密钥密码 不 存储在项目build.gradle文件中。
build.gradle
目前我有以下内容build.gradle:
android { ... signingConfigs { release { storeFile file("my.keystore") storePassword "store_password" keyAlias "my_key_alias" keyPassword "key_password" } } buildTypes { release { signingConfig signingConfigs.release } } }
它工作得很好,但我 不能 将storePassword, 和的值keyPassword放在我的存储库中。我宁愿也不放在storeFile那里keyAlias。
storePassword
keyPassword
storeFile
keyAlias
有没有办法改变它,build.gradle以便它可以从某些外部来源(如仅驻留在我的计算机上的文件)获取密码?
当然,更改后build.gradle的计算机应该可以在任何其他计算机上使用(即使计算机无法访问密码)。
如果确实重要,我正在使用 Android Studio 和 Mac OS X Maverics。
Groovy 的好处是您可以自由混合 Java 代码,并且使用java.util.Properties. 也许使用惯用的 Groovy 有一种更简单的方法,但 Java 仍然非常简单。
java.util.Properties
创建一个keystore.properties文件(在本例中,在项目的根目录中settings.gradle,您可以将其放在任何您喜欢的位置:
keystore.properties
settings.gradle
storePassword=... keyPassword=... keyAlias=... storeFile=...
将此添加到您的build.gradle:
allprojects { afterEvaluate { project -> def propsFile = rootProject.file('keystore.properties') def configName = 'release' if (propsFile.exists() && android.signingConfigs.hasProperty(configName)) { def props = new Properties() props.load(new FileInputStream(propsFile)) android.signingConfigs[configName].storeFile = file(props['storeFile']) android.signingConfigs[configName].storePassword = props['storePassword'] android.signingConfigs[configName].keyAlias = props['keyAlias'] android.signingConfigs[configName].keyPassword = props['keyPassword'] } } }