1数字签名

Android系统要求每一个Android应用程序必须要经过数字签名才能够安装到系统中,也就是说如果一个Android应用程序没有经过数字签名,是没有办法安装到系统中的!Android通过数字签名来标识应用程序的作者和在应用程序之间建立信任关系,不是用来决定最终用户可以安装哪些应用程序。这个数字签名由应用程序的作者完成,并不需要权威的数字证书签名机构认证,它只是用来让应用程序包自我认证的。为了方便我们开发调试程序,ADT会自动的使用debug密钥为应用程序签名。

在这里,我会使用自己的密钥文件(*.keystore来对自己开发的程序进行签名,而不用ADT自带的。自定义的apk签名工作可以通过两种方式来完成:一种是通过ADT提供的图形化界面完成apk签名;另外一种是完全通过DOS命令来完成apk签名,这里使用第二种。

2签名步骤

2.1准备工作

apk签名要用到keytool工具:
keytool:生成数字证书,即密钥,也就是扩展名为.keystore的文件

2.2使用keytool工具生成数字证书

keytool-genkey-v-keystorezhangxueyi.keystore-aliaszhangxueyi.keystore-keyalgRSA-validity20000
说明:
1keytool是工具名称,-genkey意味着执行的是生成数字证书操作,-v表示将生成证书的详细信息打印出来,显示在dos窗口中;
2-keystorezhangxueyi.keystore表示生成的数字证书的文件名为zhangxueyi.keystore
3-aliaszhangxueyi.keystore表示证书的别名为zhangxueyi.keystore,当然可以不和上面的文件名一样;
4-keyalgRSA表示生成密钥文件所采用的算法为RSA
5-validity20000表示该数字证书的有效期为20000天,意味着20000天之后该证书将失效.
在执行上面的命令生成数字证书文件时,会提示你输入一些信息,包括证书的密码,示例如下:
APK的发布APK的发布APK的发布

这样的话,就会在文件目录"F:\毕业设计\张学义_毕业设计\数字签名"下成功的生成了我新建的密匙:

7.2.3APK签名

当手机端的程序部署成功之后,就会在本项目的bin文件夹下生成一个apk文件了,我们就是要对这个apk进行签名:

现在,我们要直接对此apk进行签名:

APK的发布

a.Android工程名称上点击右键,依次选择AndroidTools-ExportSignedApplicationPackage...

APK的发布

点击:“Next

APK的发布

选择“Useexistingkeystore”,在“Location”中选择自己的密匙,输入密码,点击“Next”:

APK的发布

点击“Next”:

APK的发布

选择apk签名后要存放的位置,点击“Next”:

APK的发布

好了,现在就会在目录F:\毕业设计\张学义_毕业设计\数字签名”中就会出现自己已经签名的apk了:

APK的发布

3注意事项

如果以前的程序是采用默认签名的方式(即debug签名),一旦换了新的签名应用将不能覆盖安装,必须将原先的程序卸载掉,才能安装上。如图所示:

APK的发布

因为程序覆盖安装主要检查两点:
1)两个程序的入口Activity是否相同。两个程序如果包名不一样,即使其它所有代码完全一样,也不会被视为同一个程序的不同版本;
2)两个程序所采用的签名是否相同。如果两个程序所采用的签名不同,即使包名相同,也不会被视为同一个程序的不同版本,不能覆盖安装。
另外,有人可能会认为反正debug签名的应用程序也能安装使用,那也没有必要自己签名了嘛。千万不要这样想,debug签名的应用程序有这样两个限制,或者说风险:
1debug签名的应用程序不能在AndroidMarket上架销售,它会强制你使用自己的签名
2debug.keystore在不同的机器上所生成的可能都不一样,就意味着如果你换了机器进行apk版本升级,那么将会出现上面那种程序不能覆盖安装的问题。不要小视这个问题,如果你开发的程序只有你自己使用,当然无所谓,卸载再安装就可以了但要是你的软件有很多使用客户,这就是大问题,就相当于软件不具备升级功能!

参考自http://blog.csdn.net/lyq8479/article/details/6401093

更多相关文章

  1. Android智能手机恶意程序半年增加14.1倍
  2. Android程序调试–LogCat按照日志信息级别进行输出和过滤
  3. Android应用程序模块详解

随机推荐

  1. Android(安卓)亲测源码分享
  2. Android之Style
  3. Android之Tab分页标签的实现方法一-----T
  4. android > intent > 自动跳转到 系统 设
  5. android获取手机屏幕的宽度及高度
  6. 短信拦截
  7. 类似股票的实时动态折线图
  8. Android通过代码自动连接WiFi
  9. Android service: startService的代码实
  10. Android TextView自定义选中弹出菜单记笔