http://blog.k-res.net/archives/1229.htmlhtml
http://blog.csdn.net/superbigcupid/article/details/48230675android
最近开始研究Google Play的In-app Billing IAB内置计费API,发现一个比较烦人的问题就是测试时应用必须通过正式签名(其实接入各类SDK时,不少开放平台都须要签名的),而默认Eclipse ADT调试运行使用的是临时生成的Debug专用证书,默认为C:\Users\XXX\.android\debug.keystore。app
因而每次调试内置计费必须使用ADT的Export Signed Application Package打带正式签名的包,比较麻烦。后来发现ADT容许自定义调试用证书,在Window->Preferences->Android->Build->Custom debugkeystore这里,试了一下选择正式证书后提示:”Keystore was tampered with, or password was incorrect”,以下图所示:
其实这个界面并无提供输入Keystore密码,选择别名之类的地方,因此就感到很是奇怪了,查了一下官方文档发现,即便是自定义的调试证书,也须要保证和默认证书同样的密码,别名alias和别名密码。eclipse
文档中提到的默认证书信息以下:工具
Keystore name: “debug.keystore”
Keystore password: “android”
Key alias: “androiddebugkey”
Key password: “android”
CN: “CN=Android Debug,O=Android,C=US”post
遵循这个规则就能够用自定义调试证书了。不过仔细想一想感受这功能这样非常鸡肋,但愿之后版本的ADT会改进吧。测试
自定义调试证书的密码和alias命名以及alias密码都是有规矩的。其实Android应用开发接入各类SDK时会发现,有不少SDK是须要靠package name和keystore的指纹hash来识别的(百度地图SDK、Facebook SDK等等…),这样若是使用默认自动生成的debugkeystore的话就会给开发调试工做带来一些麻烦。这时能够经过修改正式的release keystore,生成一份“遵照规矩”的临时自定义调试证书给开发时用,就方便多了,具体方法以下:ui
1. 首先固然是先复制一份正式证书出来做为要修改成的临时调试证书。spa
2. 修改keystore密码的命令(keytool为JDK带的命令行工具):.net
keytool -storepasswd -keystore my.keystore
其中,my.keystore是复制出来的证书文件,执行后会提示输入证书的当前密码,和新密码以及重复新密码确认。这一步须要将密码改成android。
3. 修改keystore的alias:
keytool -changealias -keystore my.keystore -alias my_name -destalias androiddebugkey
这一步中,my_name是证书中当前的alias,-destalias指定的是要修改成的alias,这里按规矩来,改成androiddebugkey!这个命令会前后提示输入keystore的密码和当前alias的密码。(注意在2.中已经修改密码为android)
4. 修改alias的密码:
keytool -keypasswd -keystore my.keystore -alias androiddebugkey
这一步执行后会提示输入keystore密码,alias密码,而后提示输入新的alias密码,一样,按规矩来,改成android!(注意在2.中已经修改密码为android)
以上几个操做执行后,my.keystore就是符合规矩的debug keystore了,接着在Eclipse的ADT设置中选中这个custom debug keystore便可,以下(而后apply就能够了):
同时还能够看到证书的MD5以及SHA1指纹。
PS:以上3步命令行并无前后顺序。