该博客是对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

更多相关文章

  1. android:scrollbarStyle属性及滚动条和分割线覆盖问题
  2. Android关于java.lang.NoClassDefFoundError问题
  3. Android(安卓)debug.keystore的密码
  4. Android(安卓)debug.keystore的密码
  5. Android(安卓)处理启动页(Splash)白屏问题
  6. Android之emulator: ERROR及logcat不能提示问题
  7. Android点击事件的四种写法
  8. Android的SDK与ADT不匹配问题
  9. Android(安卓)自定义View(手写签名)

随机推荐

  1. Android(安卓)7.1.2(Android(安卓)N) Sys
  2. UiAutomator通过ant实现快速调试
  3. Android(安卓)使用OpenGLES 的粒子系统
  4. Android 实现通话监听
  5. MAC 配置android adb命令的环境变量
  6. Android & IOS & Chrome & Firefox OS哪
  7. Android AdapterView 源码分析以及其相关
  8. Android:控件anim动画效果xml文件属性值含
  9. Android ADB常用命令总结-续
  10. android ImageView 几点总结