在Gradle for Android中,似乎是公共惯例来定义发布版本的签名配置,如下所示:
android {
signingConfigs {
debug {
storeFile file("debug.keystore")
}
myConfig {
storeFile file("other.keystore")
storePassword "android"
keyAlias "androiddebugkey"
keyPassword "android"
}
}
buildTypes {
foo {
debuggable true
jniDebugBuild true
signingConfig signingConfigs.myConfig
}
}
}
事情是,我想将我的build.gradle文件保留在版本控制中,并且不能很好地拥有我的密钥库的密码(这与我用于其他东西相同,愚蠢,我知道) git服务器。
有没有办法从我硬盘上的某个地方加载来自外部文件的signingConfig?
答案 0 :(得分:24)
我使用这样的东西。
我的应用根文件夹中有signing.properties
。
STORE_FILE=xxxx
STORE_PASSWORD=xxx
KEY_ALIAS=xxx
KEY_PASSWORD=xxx
此版本控制下未启用此文件。 当然你可以改变文件夹。
然后在你的build.gradle
中,您可以使用以下内容:
android {
signingConfigs {
release
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
def Properties props = new Properties()
def propFile = file('../signing.properties')
if (propFile.canRead()){
props.load(new FileInputStream(propFile))
if (props!=null && props.containsKey('STORE_FILE') && props.containsKey('STORE_PASSWORD') &&
props.containsKey('KEY_ALIAS') && props.containsKey('KEY_PASSWORD')) {
android.signingConfigs.release.storeFile = file(props['STORE_FILE'])
android.signingConfigs.release.storePassword = props['STORE_PASSWORD']
android.signingConfigs.release.keyAlias = props['KEY_ALIAS']
android.signingConfigs.release.keyPassword = props['KEY_PASSWORD']
} else {
android.buildTypes.release.signingConfig = null
}
}else {
android.buildTypes.release.signingConfig = null
}
如果更改文件夹,则必须更改此行:
def propFile = file('../signing.properties')
答案 1 :(得分:1)
您可以将敏感详细信息移至单独的签名文件,并将其加载到其中。
答案 2 :(得分:1)
放入文件 signing.properties ,在其中找到特定于模块的 build.gradle.kts 。不要忘记将其添加到您的 .gitignore 文件中!
signing.properties
storeFilePath=/home/willi/example.keystore
storePassword=secret
keyPassword=secret
keyAlias=myReleaseSigningKey
build.gradle.kts
android {
// ...
signingConfigs {
create("release") {
val properties = Properties().apply {
load(File("signing.properties").reader())
}
storeFile = File(properties.getProperty("storeFilePath"))
storePassword = properties.getProperty("storePassword")
keyPassword = properties.getProperty("keyPassword")
keyAlias = "release"
}
}
buildTypes {
getByName("release") {
signingConfig = signingConfigs.getByName("release")
// ...
}
}
}
答案 3 :(得分:0)
放入文件 signing.properties ,在其中找到特定于模块的 build.gradle 。不要忘记将其添加到您的 .gitignore 文件中!
signing.properties
storeFilePath=/home/willi/example.keystore
storePassword=secret
keyPassword=secret
keyAlias=myReleaseSigningKey
build.gradle
android {
// ...
signingConfigs{
release {
def props = new Properties()
def fileInputStream = new FileInputStream(file('../signing.properties'))
props.load(fileInputStream)
fileInputStream.close()
storeFile = file(props['storeFilePath'])
storePassword = props['storePassword']
keyAlias = props['keyAlias']
keyPassword = props['keyPassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
// ...
}
}
}