轉(zhuǎn)載請(qǐng)注明原作者畦木,如果你覺得這篇文章對(duì)你有幫助或啟發(fā),不用請(qǐng)我喝咖啡:D
1.添加releaseConfig
signingConfigs{
releaseConfig{
storeFile file("mykey.keystore.jks")
storePassword "storepwd"
keyAlias "MyApp"
keyPassword "mypwd"
}
}
2.指向releaseConfig
在buildTypes中朽色,release部分,添加sighingConfig 指向releaseConfig
buildTypes {
release {
minifyEnabled false
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.releaseConfig
}
}
3. 隱藏密碼
不想暴露密碼,修改步驟1中的storePassword和keyPassword為
signingConfigs{
releaseConfig{
storeFile file("hnt.keystore.jks")
storePassword System.console().readLine("\nKeyStore password: ")
keyAlias "HaniuTang"
keyPassword System.console().readLine("\nKey password: ")
}
}
這樣使用命令行進(jìn)行打包(assembleRelease命令)會(huì)讓你輸入密碼婆翔。
4.遇到的問題及解決
設(shè)置apk簽名時(shí)從console中讀取keyAlias以及密碼,使用"system.console().readLine"方法掏婶,在編譯時(shí)總是出現(xiàn)問題:
Cannot invoke method readLine() on null object"
使用命令行的時(shí)候沒有問題啃奴,但是當(dāng)使用android studio的時(shí)候,還是報(bào)這個(gè)錯(cuò)雄妥,可能是android studio默認(rèn)設(shè)置gradle為deamon方式最蕾。
- 方法1:去除優(yōu)化gradle設(shè)置的./gradle/gradle.properties中的damon為true依溯。
Reference:
http://forums.gradle.org/gradle/topics/standard_in_when_using_the_daemon
- 方法2:加上
if(system.console() != null)
這之后再?gòu)拿钚凶x取密碼以及別名
Reference:
https://www.timroes.de/2013/09/22/handling-signing-configs-with-gradle/
5.最終腳本
最終,gradle腳本中的相關(guān)部分長(zhǎng)這樣:
signingConfigs{
releaseConfig{
storeFile file("mykey.keystore.jks")
storePassword
if(System.console() != null)
System.console().readLine("\nKeystore password: ")
keyAlias "MyApp"
keyPassword
if(System.console() != null)
System.console().readLine("\nKey password: ")
}
}