轉(zhuǎn)載請注明原作者,如果你覺得這篇文章對你有幫助或啟發(fā),不用請我喝咖啡: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: ")
}
}
這樣使用命令行進行打包(assembleRelease命令)會讓你輸入密碼。
4.遇到的問題及解決
設(shè)置apk簽名時從console中讀取keyAlias以及密碼,使用"system.console().readLine"方法,在編譯時總是出現(xiàn)問題:
Cannot invoke method readLine() on null object"
使用命令行的時候沒有問題,但是當使用android studio的時候,還是報這個錯,可能是android studio默認設(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)
這之后再從命令行讀取密碼以及別名
Reference:
https://www.timroes.de/2013/09/22/handling-signing-configs-with-gradle/
5.最終腳本
最終,gradle腳本中的相關(guān)部分長這樣:
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: ")
}
}