通常不建议在配置文件中存储密码。在 macOS 中我们可以使用内置的钥匙串应用来存储密码,可以方便地从终端访问。
在这个示例中,我们将使用它来存储用于签名 Android 应用程序的密钥库的密码。
在钥匙串中保存密码
- 打开钥匙串应用。
- 点击 “+” 按钮,添加新密码。
- 输入钥匙串项名称(任意),账户名称(任意)以及使用
keytool
创建密钥时使用的密码,然后点击添加按钮即可。
从终端访问密码
在终端输入下面的命令:
$ security find-generic-password -s android_keystore -w
输入完成后,添加电脑的密码可以看到保存在钥匙串中的密码。
在 Gradle 中访问密码
将以下内容添加到 build.gradle
的开头:
// account:添加钥匙时的账户名;keyChain:钥匙项名
def getPassword(String account, String keyChain) {
def stdout = new ByteArrayOutputStream()
def stderr = new ByteArrayOutputStream()
exec {
commandLine 'security', '-q', 'find-generic-password', '-a', account, '-s', keyChain, '-w'
standardOutput = stdout
errorOutput = stderr
ignoreExitValue true
}
stdout.toString().trim()
}
然后在需要访问密码的通过 getPassword
获取密码:
// 获取密码
def keystorePassword = getPassword("android_keystore","android_keystore")
android {
...
defaultConfig { ... }
signingConfigs {
release {
storeFile file(MYAPP_RELEASE_STORE_FILE)
storePassword keystorePassword // 使用获取到的密码
keyAlias MYAPP_RELEASE_KEY_ALIAS
keyPassword keystorePassword // 使用获取到的密码
}
}
buildTypes {
release {
...
signingConfig signingConfigs.release
}
}
}