打包签名
转自:http://blog.csdn.net/cwb1128/article/details/18349173
接触android开发也有一段时间了,对打包签名有所了解,但都是皮毛,一点不深入。今天结合网络上的资料和自己的实践,盘点下相关内容,打消自己的一些疑问,顺便做一下总结。
一:打包签名的好处
1)没有签名的应用不允许安装到模拟器或者真机上。
2)没有签名的或仅仅debug签名的应用不能在Android Market上架销售。
3)签名是开发者的身份标识,可以防止交易抵赖的发生。
4)防止开发商或个人混淆替换已经安装的程序,以保证签名不同的包不被替换。
5)保证应用的无缝持续升级,签名不同的应用不能覆盖升级。
6)利于应用的模块化开发部署和程序间数据共享。
二:打包的模式种类及区别
有两种打包签名的模式:debug 和 release 。
1)通过Eclipse上的“运行”按钮直接在手机或者模拟器上启动程序,采用的是系统自动生成的debug签名。通过菜单 Window -> Preferences -> Android -> Build 可以看到签名文件所在的位置,如下图。虽然可以更改,但个人觉得没有任何意义,只是调试程序而已。
注意:如果签名过期则导致你无法生成apk文件,此时你只要删除debug keystore即可,系统又会为你生成有效期为一年的新签名。
2)右击项目->android tools->Export signed Application package 是release签名模式,会用我们自己生成的key文件来签名。
3)Debug模式签名的应用程序不能在Android Market上架销售,它会强制你使用自己的签名。
4)Debug模式下签名用的证书,自从它创建之日起,1年后就会失效。
5)Debug模式的签名文件在不同的机器上所生成的可能不一样,如你换机器进行apk版本升级的话,可能会出现程序不能覆盖安装的问题!
三:签名其他需要了解的内容
1)Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证。
2)数字证书都是有有效期的,Android只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能。
四:release模式签名的方式
release模式签名的方式有多种,最常用的主要两种:Eclipse+ADT方式 和 命令行方式。
1)Eclipse+ADT方式
这个是最简单且常用的方式,步骤如下:
A: Project -> 取消Build Automatically
B: Project -> Clean
C: Project -> Build
D: 右击项目->android tools->Export signed Application package
第一次运行可以使用 Create new keystore,以后签名就可以使用 User existing keystore。按照说明一步步操作即可,很容易就能打包签名成功。
注意:请妥善保管生成的签名文件,不要丢失,以保证应用发布可重复使用,以免不能进行应用的无缝持续升级。
2)命令行模式
个人觉得这个不常用,如果你想了解打包和签名细节的话,也或者你得到了一个未签名的APK文件想要发布的话,可以采用这个方式。
可通过右击项目->android tools->Export Unsigned Application package,得到一个未签名的程序,然后使用标准的java工具keytool 和 jarsigner 来生成证书和给程序签名。
网络上关于 keytool 和 jarsigner 命令的教程很多,搜索一下即可了解如何使用。