前言
目前主流的android开发工具是Android Studio,当然也不乏还有开发者使用eclipse。各有利弊,看个人喜好。当时从eclipse转到AS的时候,稍稍有点不习惯,但是用惯了AS,再也回不去了,谁用谁知道。
坑D的事情来了,以前的一个老的项目使用的是eclipse开发的。今天早上使用eclipse重新编译了一下,安装后,发现无法使用微信进行第三方登录了。找了很多种方法,均已失败告终。最终发现是我的签名文件过期了。(⊙﹏⊙)b
本章针对于eclipse下的签名文件及修改做一个方法实现。
一、使用debug.keystore签名的缺点
1)当使用eclipse默认的签名文件debug.keystore生成apk,仅适用于本地的测试,若正式上传到Android market,需要正式的release.keystore;
2)由于每个项目组都有自身的签名,但默认Eclipse ADT调试运行使用的是临时生成的Debug专用证书,默认地址为 C:\Users\XXX.android\debug.keystore。于是每次调试程序必须使用ADT的Export Signed Application Package打带正式签名的包,或者另写重新签名脚本,比较麻烦;
3)针对对于第三方的应用如微信,出现不同的SDK时候,会无法进行登录、分享等操作,究其原因是因为签名不同导致;
4)Debug模式的签名文件在不同的机器上所生成的可能不一样,如你换机器进行apk版本升级的话,可能会出现程序不能覆盖安装的问题。
二、打包签名的优点
1)签名是开发者的身份标识,可以防止交易抵赖的发生;
2)防止开发商或个人混淆替换已经安装的程序,以保证签名不同的包不被替换;
3)保证应用的无缝持续升级,签名不同的应用不能覆盖升级;
4)利于应用的模块化开发部署和程序间数据共享;
5)APK如果使用一个key签名,发布时另一个key签名的文件将无法安装或覆盖老的版本,这样可以防止你已安装的应用被恶意的第三方覆盖或替换掉。
三、debug.store签名的替换
如何生成需要的签名,本章不进行赘述。在进行替换前,需要对默认的debug.keystore所遵循的调试证书规格进行了解,如下:
Keystore name: “debug.keystore”
Keystore password: “android”
Key alias: “androiddebugkey”
Key password: “android”
CN: “CN=Android Debug,O=Android,C=US”
3.1 准备工作
把需要修改的keystore(也就是要用到的keystore)复制到JDK--bin文件夹内,在bin文件夹内打开cmd。
3.2 修改bluemobi.keystore的密码为:android
在cmd命令中输入:
keytool -storepasswd -keystore my.keystore
其中my.keystore既需要修改的keystore→bluemobi.keystore,执行后会提示输入证书的当前密码(bluemobi.keystore原始的密码,以bluemobi为例),和新密码以及重复新密码确认。这一步需要将新密码改为android
3.3 alias的名称要改为:androiddebugkey
在cmd命令行中输入:
keytool -changealias -keystore my.keystore -alias my_name -destalias androiddebugkey
这一步中,my_name是证书中当前的alias,-destalias指定的是要修改为的alias,按照调试证书规格,需要修改为androiddebugkey,执行完这个命令会先后提示输入keystore的密码(即修改的密码: android)和当前alias的密码(原始的密码: bluemobi)。
如不知道bluemobi.keystore的alias,采用方法:
keytool -list -v -keystore my.keystore -storepass 密码
其中my. keystore为bluemobi.keystore,密码即为上面修改过的密码为android,即可查询bluemobi.keystore的alias
3.4 keystore的alias密码也改为:android
在cmd命令行中输入:
keytool -keypasswd -keystore my.keystore -alias androiddebugkey
其中my.keystore为 bluemobi.keystore,执行完这一步后会提示输入keystore密码(原始密码: bluemobi),alias密码(密码为: android),然后提示输入新的alias密码(密码为: android),同样,按照调试证书规格,改为android
3.5 替换debug.store
打开Eclipse--Window--Preferences--Android--Build,将修改后的keystore放到上面ADT的custom debug keystore里,重启eclipse即可
备注:也可以把修改过的bluemobi.keystore名字改为debug.keystore覆盖原来的debug.store,这种方法容易引起混淆,后面也不利于维护。
推荐使用上述方法替换签名文件。