APK数字签名

 

debug签名:开发中使用。应用程序不能在Android Market上架销售,自从它创建之日起,1年后就会失效。

为什么要签名?

Android系统要求所有的程序经过数字签名才能安装,如果没有可用的数字签名,系统将不许安装运行此程序,不管是模拟器还是真实手机




正式签名:

1. 让用户卸载旧版本, 重新在应用市场上下载最新版本, 会导致用户流失

2. 更换包名, 重新发布, 会出现两个手机卫士, 运行新版app, 卸载旧版本

 签名冲突


已经安装了存在签名冲突的同名数据包

服务器端apk是通过正式签名打的包

stuido直接运行项目, 默认采用的而是debug签名文件

两个签名文件不一样, 无法覆盖安装





用户永远用的是正式签名的版本


注意: 签名文件非常重要, 千万不能丢失!

万一丢了呢?

1. 提示用户先卸载1.0, 然后再安装2.0, 造成用户流失!
2. 换包名, 有两个手机卫士, 用户会比较纠结


在 Android 系统中,所有安装到系统的应用程序都必有一个数字证书,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系。
Android 系统要求每一个安装进系统的应用程序都是经过数字证书签名的,数字证书的私钥则保存在程序开发者的手中。Android 将数字证书用来标识应用程序的作者和在应用程序之间建立信任关系,不是用来决定最终用户可以
安装哪些应用程序。这个数字证书并不需要权威的数字证书签名机构认证(CA),它只是用来让应用程序包自我认证的。同一个开发者的多个程序尽可能使用同一个数字证书,这可以带来以下好处。
(1)有利于程序升级,当新版程序和旧版程序的数字证书相同时,Android 系统才会认为这两个程序是同一个程序的不同版本。如果新版程序和旧版程序的数字证书不相同,则 Android 系统认为他们是不同的程序,并产生冲突,会要求新程序更改包名。
(2)有利于程序的模块化设计和开发。Android 系统允许拥有同一个数字签名的程序运行在一个进程中,Android程序会将他们视为同一个程序。所以开发者可以将自己的程序分模块开发,而用户只需要在需要的时候下载适当的模块。
在签名时,需要考虑数字证书的有效期:

(1)数字证书的有效期要包含程序的预计生命周期,一旦数字证书失效,持有改数字证书的程序将不能正常升级。
(2)如果多个程序使用同一个数字证书,则该数字证书的有效期要包含所有程序的预计生命周期。
(3)Android Market 强制要求所有应用程序数字证书的有效期要持续到 2033 年 10 月 22 日以后。


Android 数字证书包含以下几个要点:


(1)所有的应用程序都必须有数字证书,Android 系统不会安装一个没有数字证书的应用程序
(2)Android 程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证
(3)如果要正式发布一个 Android ,必须使用一个合适的私钥生成的数字证书来给程序签名,而不能使用 adt 插件或者 ant 工具生成的调试证书来发布。
(4)数字证书都是有有效期的,Android 只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能。

2、使用 Eclipse 如何生成数字签名


可以通过 Eclipse 导出工程时为当前工程设置签名证书。File -> Export ->Export Android Application->Create New keystore ....

2、使用 studio 如何生成数字签名


posted on 2017-02-12 20:59  LoaderMan  阅读(322)  评论(0编辑  收藏  举报

导航