Android(安卓)Studio在Gradle中隐藏Keystore密码
16lz
2021-12-04
该博客是对gradle整理汇总这篇文章的补充
1、一般写法
通常签名的配置方法为:
android { signingConfigs { config_release { keyAlias 'releaseKey' keyPassword '123456' storePassword '123456' storeFile file('key/releaseKey.jks') } } ......//省略其他配置}
2、改良写法:
这样写固然没有问题,但是把签名信息(主要是密码)写在gradle中是不安全的,我们可以把这些签名信息添加到gradle.properties:
RELEASE_KEY_PASSWORD = 123456RELEASE_KEY_ALIAS = releaseKeyRELEASE_STORE_PASSWORD = 123456RELEASE_STORE_FILE = key/releaseKey.jks
然后在build.gradle中引用即可:
signingConfigs { config_release { storeFile file(RELEASE_STORE_FILE) keyAlias RELEASE_KEY_ALIAS storePassword RELEASE_KEY_PASSWORD keyPassword RELEASE_STORE_PASSWORD }}
如果不想提交到版本库,可以添加到local.properties中,然后在build.gradle中读取。
2、更安全写法:
签名密码的私密性是最安全的,所以我们要是能把它改成每次打包时手动输入才是最安全的:
signingConfigs { config_release { storeFile file(RELEASE_STORE_FILE) keyAlias RELEASE_KEY_ALIAS storePassword System.console().readLine("\nKeystore password:") keyPassword System.console().readLine("\nKey password:") }}
这样在执行 打包命令时,就会被要求输入密码.
3、遇到的问题及解决
问题描述:
设置apk签名时从console中读取keyAlias以及密码,使用”system.console().readLine”方法,在编译时总是出现问题:
使用命令行的时候没有问题,但是当使用android studio的时候,还是报这个错,可能是android studio默认设置gradle为deamon方式。
解决方法:
步骤1:去除优化gradle设置的./gradle/gradle.properties中设置damon为true的这行语句:
org.gradle.daemon=true
步骤2:加上判断console是否为空的语句:
if (System.console() != null)
这之后再从命令行执行,读取手动输入的密码
4、最终脚本
最终,gradle脚本中的相关部分长这样:
signingConfigs { config_release { storeFile file(RELEASE_STORE_FILE) keyAlias RELEASE_KEY_ALIAS def sPassword = null def kPassword = null if (System.console() != null) sPassword = System.console().readLine("\nEnter store password ") if (System.console() != null) kPassword = System.console().readLine("\nEnter key password ") keyPassword kPassword storePassword sPassword } }
遗留问题:
此种用法在命令行中执行没问题,但是用gradle自带命令执行报错,提示找不到keyPassword.
和论坛上其他开发者讨论,暂无解决方案,此问题先保留,待解决!
参考文案:
http://blog.csdn.net/jjwwmlp456/article/details/44942109
http://www.jianshu.com/p/714ea34f739a
更多相关文章
- android:scrollbarStyle属性及滚动条和分割线覆盖问题
- Android关于java.lang.NoClassDefFoundError问题
- Android(安卓)debug.keystore的密码
- Android(安卓)debug.keystore的密码
- Android(安卓)处理启动页(Splash)白屏问题
- Android之emulator: ERROR及logcat不能提示问题
- Android点击事件的四种写法
- Android的SDK与ADT不匹配问题
- Android(安卓)自定义View(手写签名)