Android应用开发接入各种SDK时会发现,有很多SDK是需要靠package name和的证书指纹SHA1码来识别的,如百度地图SDK。这样如果使用默认自动生成的debug的话就会给开发调试工作带来一些麻烦。这时可以通过修改正式的release keystore,生成一份“遵守规矩”的临时自定义调试证书给开发时用,就方便多了,具体方法如下。
首先要知道默认的debug证书位置在哪里,打开Eclipse-->Windows-->Preferences
-->Android-->Build,如下图所示:
然后打开cmd查看,进入 .android 目录,然后输入命令查看该debug.keystore的详细信息。如下:
C:\Documents and Settings\Administrator\.android>keytool -list -v -keystore debug.keystore 输入密钥库口令: 密钥库类型: JKS 密钥库提供方: SUN 您的密钥库包含 1 个条目 别名: androiddebugkey 创建日期: 2015-9-7 条目类型: PrivateKeyEntry 证书链长度: 1 证书[1]: 所有者: CN=Android Debug, O=Android, C=US 发布者: CN=Android Debug, O=Android, C=US 序列号: 4ccdc980 有效期开始日期: Mon Sep 07 14:00:58 CST 2015, 截止日期: Wed Aug 30 14:00:58 CST 2045 证书指纹: MD5: 95:15:A3:05:C6:02:86:07:C3:42:D7:AF:E8:F1:B6:ED SHA1: E1:F7:8E:35:DF:DC:85:9E:7D:AB:62:83:5A:F0:AD:D6:A3:41:D8:06 SHA256: BB:06:CD:55:45:5F:43:58:C5:5B:59:3D:6B:1D:F1:85:B0:F1:15:69:98:4D:7A:2C:17:0B:E9:BB:13:A1:82:51 签名算法名称: SHA256withRSA 版本: 3 扩展: #1: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: AA 1C 94 38 C4 8B 6D 03 38 2D 37 79 69 B5 69 4D ...8..m.8-7yi.iM 0010: 86 33 B8 19 .3.. ] ] ******************************************* *******************************************
可以得到相关信息为:
Keystore name: “debug.keystore”
Keystore password: “android”
Key alias: “androiddebugkey”
Key password: “android”
CN: “CN=Android Debug,O=Android,C=US”
因此我们遵循这个规则就可以用自定义调试证书了。
第一步:为我们的应用生成一个正式版的证书。如下图所示。
1、创造一个新的keystore,并选择导出到什么位置,填写密码,密码为ouyangpeng
2、填写别名,别名密码,有效期、姓名、组织、城市、省份、国家等信息,密码为ouyangpeng
3、这样就在相应的目录下,生成了相应的证书,我给的名字是baiduMapLoc-release-key.keystore
4、通过命令查看生成的baiduMapLoc-release-key.keystore 的相关信息。
C:\Documents and Settings\Administrator\桌面\baiduMapLoc>keytool -list -v -keystore baiduMapLoc-release-key.keystore 输入密钥库口令: 密钥库类型: JKS 密钥库提供方: SUN 您的密钥库包含 1 个条目 别名: baidumaploc 创建日期: 2015-10-10 条目类型: PrivateKeyEntry 证书链长度: 1 证书[1]: 所有者: CN=ouyangpeng, OU=ouyangpeng, O=ouyangpeng, L=深圳, ST=广东, C=中国 发布者: CN=ouyangpeng, OU=ouyangpeng, O=ouyangpeng, L=深圳, ST=广东, C=中国 序列号: 5eac1cda 有效期开始日期: Sat Oct 10 11:50:39 CST 2015, 截止日期: Mon Oct 02 11:50:39 CST 2045 证书指纹: MD5: 91:15:11:06:05:CB:E0:CB:4B:2B:36:02:81:16:A7:DF SHA1: E9:A3:E4:95:1F:D2:11:0E:3E:89:45:26:AB:EF:A2:FB:DB:3F:5B:1A SHA256: C4:D6:15:27:23:81:EC:3A:53:68:FE:04:63:91:70:79:B6:93:A6:5F:3D:29:ED:62:43:01:67:11:F3:28:91:8C 签名算法名称: SHA256withRSA 版本: 3 扩展: #1: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: 69 D8 5C C9 2C 8E 9E B8 49 E3 E1 31 A7 35 B2 D1 i.\.,...I..1.5.. 0010: 10 52 FB 17 .R.. ] ] ******************************************* *******************************************
如图所示:
第二步:复制刚才生成的正式版本的证书baiduMapLoc-release-key.keystore,并将复制的证书改名为baiduMapLoc-debug-key.keystore。
第三步:修改baiduMapLoc-debug-key.keystore的密码
因为debug版本的keystore要求密码为android,所以将原始密码ouyangpeng改成android。如下图所示。
C:\Documents and Settings\Administrator\桌面\baiduMapLoc>keytool -storepasswd -keystore baiduMapLoc-debug-key.keystore 输入密钥库口令: 新keystore password: 重新输入新keystore password:
第四步:修改baiduMapLoc-debug-key.keystore的alias别名。
C:\Documents and Settings\Administrator\桌面\baiduMapLoc>keytool -changealias -keystore baiduMapLoc-debug-key.keystore -alias baiduMapLoc -destalias androiddebugkey 输入密钥库口令: 输入 <baiduMapLoc> 的密钥口令
因为debug版本的keystore要求alias为androiddebugkey,所以将原始alias为baidumaploc改成androiddebugkey。如下图所示。
第五步:修改baiduMapLoc-debug-key.keystore的alias别名的密码。
C:\Documents and Settings\Administrator\桌面\baiduMapLoc>keytool -keypasswd -keystore baiduMapLoc-debug-key.keystore -alias androiddebugkey 输入密钥库口令: 输入 <androiddebugkey> 的密钥口令 新<androiddebugkey> 的密钥口令: 重新输入新<androiddebugkey> 的密钥口令:
因为debug版本的keystore要求alias为androiddebugkey,并且别名密码为android,因此我们要将密码从ouyangpeng修改为android,如下图所示。
第六步:查看修改后的baiduMapLoc-debug-key.keystore详细信息
C:\Documents and Settings\Administrator\桌面\baiduMapLoc>keytool -list -v -keystore baiduMapLoc-debug-key.keystore 输入密钥库口令: 密钥库类型: JKS 密钥库提供方: SUN 您的密钥库包含 1 个条目 别名: androiddebugkey 创建日期: 2015-10-10 条目类型: PrivateKeyEntry 证书链长度: 1 证书[1]: 所有者: CN=ouyangpeng, OU=ouyangpeng, O=ouyangpeng, L=深圳, ST=广东, C=中国 发布者: CN=ouyangpeng, OU=ouyangpeng, O=ouyangpeng, L=深圳, ST=广东, C=中国 序列号: 5eac1cda 有效期开始日期: Sat Oct 10 11:50:39 CST 2015, 截止日期: Mon Oct 02 11:50:39 CST 2045 证书指纹: MD5: 91:15:11:06:05:CB:E0:CB:4B:2B:36:02:81:16:A7:DF SHA1: E9:A3:E4:95:1F:D2:11:0E:3E:89:45:26:AB:EF:A2:FB:DB:3F:5B:1A SHA256: C4:D6:15:27:23:81:EC:3A:53:68:FE:04:63:91:70:79:B6:93:A6:5F:3D:29:ED:62:43:01:67:11:F3:28:91:8C 签名算法名称: SHA256withRSA 版本: 3 扩展: #1: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: 69 D8 5C C9 2C 8E 9E B8 49 E3 E1 31 A7 35 B2 D1 i.\.,...I..1.5.. 0010: 10 52 FB 17 .R.. ] ] ******************************************* *******************************************
对比一下release版本的证书,MD5和SHA1都是一样的
第七步:将修改后的baiduMapLoc-debug-key.keystore导入到Eclipse中
第八步:将修改后的baiduMapLoc-debug-key.keystore分享给团队开发人员,这样大家开发同一个APP时候的debug版本keystore也是一样的了。这样MD5码和SHA1码都是一样的,在百度SDK中去申请秘钥什么的都可以只要申请一份了。
====================================================================================
作者:欧阳鹏 欢迎转载,与人分享是进步的源泉!
转载请保留原文地址:http://blog.csdn.net/ouyang_peng
====================================================================================