对Android中的apk文件进行数字签名及版本更新时遇到apk签名问题

来源:互联网 发布:实用的软件项目 编辑:程序博客网 时间:2024/05/08 23:04
(一)apk文件签名的作用:
1. 发送者的身份认证。由于开发商可能通过使用相同的 Package Name 来混淆替换已经安装的程序,以此保证签名不同的包不被替换2. 保证信息传输的完整性。签名对于包中的每个文件进行处理,以此确保包中内容不被替换。
(二)步骤:
1. 安装配置好JDK 1.6
2. 使用Java的keytool工具生成密钥
C:\android.keystore就是生成的密钥和证书存储文件;-alias定义了密钥别名是android;-keyalg指定了密钥算法,用的是非对称RSA算法;-validity指定了证书的有效天数。在cmd中执行命令后,需要一步步输入提示的各种信息(如图)

至此密钥证书文件生成,可以在之前指定的目录里找到生成的keystore文件。然后就可以用它来对apk文件进行签名。这个证书文件要做好备份,另外也要记住自己设定的密码。因为一旦忘记密码或者证书丢失,就不得不用新的密钥进行签名;而使用新密钥签名的应用程序就失去了与旧版本应用程序的连续性,这会给产品的应用市场的发布和更新带来麻烦。
3. 将eclipse中的android应用程序的apk文件导出
右击eclipse中的android项目——>Android Tools——>Export Unsigned Application Package即可,将导出的apk文件放到与keystore文件同一文件夹里
4. 对apk文件进行签名
利用Java里的jarsigner工具来对apk进行签名。有一点值得注意,就是前面用到的keytool工具,JDK和JRE的bin目录下都有;而jarsigner工具只随着JDK发行。
5.验证签名是否成功

至此,apk签名成功。效果图:

 

参考资料:http://www.haowu.info/2013/01/01/sign-android-apk-files-in-command-line/

                  http://blog.csdn.net/aeolus1019/article/details/8121031

出现"已安装了存在签名冲突的同名数据包"的原因及解决办法

如果你在android上更新一个已经安装过较早版本软件时,安装到最后一步提示你:已安装了存在签名冲突的同名数据包,然后安装失败。这是因为旧版软件的签名信息与新版不一致造成的。你可以卸载这个软件,然后安装新版软件。

如果无法卸载,可能手机(pad)在发售前将该软件内置在手机中无法卸载。如果是这个原因的话,你可以尝试“root”系统,然后卸载掉该软件的旧版本,然后安装。

如果你是一个开发人员,那么出现这个问题可能是因为,较旧的版本你是使用eclipse自动发布到模拟器上的,而eclipse自动发布时使用的是一个测试用签名,这个签名与你正式打包的签名不是一个。(这个问题一般发生在测试自动更新功能上,嘿嘿)。想继续测试自动更新,解决的办法也很简单,手工删除该软件的旧版(eclipse自动安装的那个),然后使用adb工具安装旧版再测试新版就好。

 

原创粉丝点击