转载请注明原作者,如果你觉得这篇文章对你有帮助或启发,不用请我喝咖啡:D
1.添加releaseConfig
1 | signingConfigs{ |
2.指向releaseConfig
在buildTypes中,release部分,添加sighingConfig 指向releaseConfig1
2
3
4
5
6
7
8buildTypes {
release {
minifyEnabled false
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.releaseConfig
}
}
3. 隐藏用户名
不想暴露用户名,修改步骤1中的storePassword和keyPassword为1
2
3
4
5
6
7
8
9signingConfigs{
releaseConfig{
storeFile file("hnt.keystore.jks")
storePassword System.console().readLine("\nKeyStore password: ")
keyAlias "HaniuTang"
keyPassword System.console().readLine("\nKey password: ")
}
}
这样使用命令行进行打包(assembleRelease命令)会让你输入用户名。
4.遇到的问题及解决
设置apk签名时从console中读取keyAlias以及密码,使用”system.console().readLine”方法,在编译时总是出现问题:1
Cannot invoke method readLine() on null object"
使用命令行的时候没有问题,但是当使用android studio的时候,还是报这个错,可能是android studio默认设置gradle为deamon方式。
方法1:去除优化gradle设置的./gradle/gradle.properties中的damon为true。
Reference:
http://forums.gradle.org/gradle/topics/standard_in_when_using_the_daemon方法2:加上
1
if(system.console() != null)
这之后再从命令行读取密码以及别名
Reference:
https://www.timroes.de/2013/09/22/handling-signing-configs-with-gradle/
5.最终脚本
最终,gradle脚本中的相关部分长这样:1
2
3
4
5
6
7
8
9
10
11
12signingConfigs{
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: ")
}
}