Handling signingConfigs with gradle
Published by shakalaca on July 9th, 2014
之前都是透過 gradle.properties 分開管理 release 用的簽章,好處是不用把敏感的 information 也丟到公開的 repo,但有個問題最近困擾著我:如果存放 keystore 的路徑有中文,gradle 在 sign apk 時無法正確讀取 keystore。
試過很多亂七八糟的方法,最後是透過分開的 .gradle 檔案滿足這樣的需求。
首先建立 signing.gradle,裡面很精簡的只設定 release 用的 signingConfig:
android {
signingConfigs {
release {
keyAlias 'YourKeyAlias'
storeFile file('YourStoreFile')
storePassword 'YourStorePassword'
keyPassword 'YourKeyPassword'
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
而在 gradle.properties 指定一個 property 存放 signing.gradle 的路徑:
releaseSignConfig=/path/to/signing.gradle
最後在主要 project 的 build.gradle 中判斷是否需要引入:
if (project.hasProperty(“releaseSignConfig") && new File(project.property(“releaseSignConfig")).exists()) {
apply from: project.property(“releaseSignConfig");
}
或者你也可以寫:
if (project.hasProperty(“releaseSignConfig") && new File(releaseSignConfig).exists()) {
apply from: releaseSignConfig;
}
這樣便可以解決中文或者空白路徑的問題 如果各位先進有更好的解法 也歡迎來討論