转载地址:http://blog.yanzhenjie.com
Android调试大法之自定义IDE默认签名文件,你是否为调试第三方SDK时debug签名和release签名发生冲突而烦恼?你是否在debug时第三方功能测试通过,而release时无法使用?
如果你没有遇到我说的问题,那么我举几个例子。
- 微信支付、微信登录、微信分享,debug时调试通过,release时调不起微信?
- 如果你没做过,你可以看这篇文章微信登录、微信分享教程。
- 百度地图、高德地图,要不停的切换debug签名、release签名的hash值很麻烦?
- …
上面的这些问题归根结底原因是我们开发的时候直接运行,使用的是默认的debug.keystore
这个签名文件,而我们打包后正式环境用的是我们自定义的xxx.keystore
、xxx.jks
等签名文件,两个文件的hash值不同。
而一般第三方的SDK都是通过识别我们应用的包名和签名的hash来判断是否在他们平台注册过,是否是官方正版应用等,如果验证不通过,自然不能调起第三方的的app了。
今天的文章内容不多,只需要3分钟就可以看完,同时保证可以解决上述因为签名引起的问题。
解决问题的原理
原理就是把我们正式的签名文件的keystore
密码、alias
、alias
密码都修改成与Android
默认签名debug.keystore
的相同,并且在Eclipse
、AndroidStudio
中指定我们默认debug
签名文件路径,此时当我们直接运行项目时ide将直接用我们指定的这个签名文件,此时我们debug
时的签名和正式发布的签名一致了,所以在调试的时候什么微信、第三方支付都不存在签名错误等云云。(重点:签名文件和密码没有关系!!! 需要去了解签名的原理)
Android默认签名文件debug.keystore
的keystore密码、alias、alias密码分别是:
- keystore密码:
android
- alias:
androiddebugkey
- alias密码:
android
所以接下来修改正式签名的这个三个属性。
修改keystore密码 alias alias密码
特别注意:修改签名文件密码、alias、alias密码相当于破坏了这个文件,所以我们修改的时候一定要copy一个签名文件出来,然后修改这个copy出来的文件的上述三个属性。
准备:进入debug.keystore 当前目录下(mac,Windows一样):
1: 修改keystore
密码: keytool -storepasswd -keystore debug.keystore
2: 修改keystore
的alias: keytool -changealias -keystore debug.keystore -alias demokey.keystore -destalias androiddebugkey
3: 修改alias
的密码: keytool -keypasswd -keystore debug.keystore -alias androiddebugkey
完成!
备注相关信息都是我本地的。
个人开发者如果想体验微信登录功能,有一个变通的版本,就是用 ShareSDK 里面带的appid 和key,来做你的测试 :)