Android调试大法 自定义IDE默认签名文件

但使书种多,会有岁稔时。这篇文章主要讲述Android调试大法 自定义IDE默认签名文件相关的知识,希望能为你提供帮助。

版权声明: 转载必须注明本文转自严振杰的博客: http://blog.yanzhenjie.com
android调试大法之自定义IDE默认签名文件, 你是否为调试第三方SDK时debug签名和release签名发生冲突而烦恼? 你是否在debug时第三方功能测试通过, 而release时无法使用?
如果你没有遇到我说的问题, 那么我举几个例子。
  1. 微信支付、微信登录、微信分享, debug时调试通过, release时调不起微信?
    • 如果你没做过, 你可以看这篇文章微信登录、微信分享教程。
  2. 百度地图、高德地图, 要不停的切换debug签名、release签名的hash值很麻烦?
上面的这些问题归根结底原因是我们开发的时候直接运行, 使用的是默认的debug.keystore这个签名文件, 而我们打包后正式环境用的是我们自定义的xxx.keystorexxx.jks等签名文件, 两个文件的hash值不同。
而一般第三方的SDK都是通过识别我们应用的包名和签名的hash来判断是否在他们平台注册过, 是否是官方正版应用等, 如果验证不通过, 自然不能调起第三方的的app了。
今天的文章内容不多, 只需要3分钟就可以看完, 同时保证可以解决上述因为签名引起的问题。
解决问题的原理 原理就是把我们正式的签名文件的keystore密码、aliasalias密码都修改成与Android默认签名debug.keystore的相同, 并且在EclipseAndroidStudio中指定我们默认debug签名文件路径, 此时当我们直接运行项目时ide将直接用我们指定的这个签名文件, 此时我们debug时的签名和正式发布的签名一致了, 所以在调试的时候什么微信、第三方支付都不存在签名错误等云云。
Android默认签名文件debug.keystore的keystore密码、alias、alias密码分别是:
  • keystore密码: android
  • alias: androiddebugkey
  • alias密码: android
所以接下来修改正式签名的这个三个属性。
修改keystore密码 alias alias密码 特别注意: 修改签名文件密码、alias、alias密码相当于破坏了这个文件, 所以我们修改的时候一定要copy一个签名文件出来, 然后修改这个copy出来的文件的上述三个属性。
修改keystore密码 alias alias密码 【Android调试大法 自定义IDE默认签名文件】假设我们的签名文件叫nohttp.jks或者nohttp.keystore, 反正就是你创建的那个签名文件。
  • 第一步, 打开命令行, 进入你的keystore文件所在的文件夹, 比如我的nohttp.jks在桌面:
    Android调试大法 自定义IDE默认签名文件

    文章图片

  • 第二步, 修改keystore密码, 在命令行输入:
    keytool -storepasswd -keystore nohttp.jks
    其中nohttp.jks是签名文件的全名, 回车后会提示输入证书的当前密码, 然后要求输入新密码、重复输入新密码。当前密码当然只有你知道了, 新密和重复密码按照开头讲的, 必须输入android
  • 第三步, 修改keystorealias, 在命令行输入:
    keytool -changealias -keystore nohttp.jks -alias < alianame> -destalias androiddebugkey
    其中nohttp.jks是签名文件的全名, < alianame> 是证书中当前的alias的名字, -destalias后面跟的是要修改成的alias的名字, 按照开头说的, 这里必须改为androiddebugkey; 比如我的alias的名字是nohttp, 那么我的完整的命令就是:
    keytool -changealias -keystore nohttp.jks -alias nohttp -destalias androiddebugkey
    回车后会提示输入keystore的密码( 上面已经修改为android) 和当前alias的密码( 这个只有你知道) 。
  • 第四步, 修改alias的密码, 在命令行输入:
    keytool -keypasswd -keystore nohttp.jks -alias androiddebugkey
    其中nohttp.jks是签名文件的全名, 回车后会提示输入keystore密码( 上面已经修改为android) , alias密码( 这个只有你知道) , 然后提示输入新alias密码, 按照开头讲的, 必须输入android
到这里修改alias属性的操作全部完成, 接下来在EclipseAndroidStuio中配置默认的debug keystore为我们修改属性后的这个keystore
给开发工具配置默认的keystore 我们常用的Android IDE就是ADTAndroidStudio了, 下面提供两个IDE配置默认debug keystore的发那个方法。
AndroidStudio
如果你用的是AndroidStudio, 首先我们把之前的修改之前的keystore和修改过的debug keystore都拷贝一份到项目根目录。
然后需要在项目的app module下的gralde文件做配置:
android { ...defaultConfig { applicationId ... ... }signingConfigs { // debug时的默认签名配置, 这里的密码等信息是刚我们修改后的。 debug { storeFile file(" ../sign_store_debug.jks" ) // 刚修改过的默认debug keystore路径。 storePassword ' android' // 默认debug keystore的密码。 keyAlias ' androiddebugkey' // 默认debug keystore的alias。 keyPassword ' android' // 默认debug keystore的alias的密码。 }// 和上面相同, 不过是正式文件的路径和密码, 我用*代替了。 release { storeFile file(" ../sign_store_release.jks" ) storePassword *** keyAlias *** keyPassword *** } }buildTypes { ... } }

下面是我配置的截图:
Android调试大法 自定义IDE默认签名文件

文章图片

大多数时候我们会把release下的路径、密码都写在local.properties中, 然后gralde动态读取, 因为local.properties文件是不会传到版本管理服务器的。
Eclipse + ADT
如果你用的ADT, 那么在Eclipse的菜单栏点击Window-Preferences, 然后左侧选中Android-Build, 在右侧出来的界面中Customer debug keystoreBrowser后选择刚才我们修改后的keystore, 然后确定即可。
Android调试大法 自定义IDE默认签名文件

文章图片

到此为止, 修改IDE默认签名文件就都完成了, 还在等什么, 快去试试配置你的应用试试吧。还有还有, 最后插一句, 欢迎加入我博客左侧的交流群来开车/害羞。
版权声明: 转载必须注明本文转自严振杰的博客: http://blog.yanzhenjie.com

    推荐阅读