一.Android签名的原理

Android要求所有已安装的应用程序都使用数字证书做数字签名, 数字证书的私钥由应用开发者持有. Android使用证书作为标识应用程序作者的一种方式, 并在应用程序之间建立信任关系.

所有的Android应用都必须有数字签名,没有不存在数字签名的应用,包括模拟器上运行的。Android系统不会安装没有数字证书的应用。签名的数字证书不需要权威机构来认证,是开发者自己产生的数字证书,即所谓的自签名。

签名的方法。

二.Android签名的意义

1、应用程序升级:如果你希望用户无缝升级到新的版本,那么你必须用同一个证书进行签名。这是由于只有以同一个证书签名,系统才会允许安装升级的应用程序。如果你采用了不同的证书,那么系统会要求你的应用程序采用不同的包名称,在这种情况下相当于安装了一个全新的应用程序。如果想升级应用程序,签名证书要相同,包名称要相同!    2、应用程序模块化:Android系统可以允许同一个证书签名的多个应用程序在一个进程里运行,系统实际把他们作为一个单个的应用程序,此时就可以把我们的应用程序以模块的方式进行部署,而用户可以独立的升级其中的一个模块      3、代码或者数据共享:Android提供了基于签名的权限机制,那么一个应用程序就可以为另一个以相同证书签名的应用程序公开自己的功能。以同一个证书对多个应用程序进行签名,利用基于签名的权限检查,你就可以在应用程序间以安全的方式共享代码和数据了。

4、在使用第三方服务时,有一些会使用到签名来标识应用。比如微信开放平台的接入就要用到签名。只有你在微信开放平台上的签名和你的应用签名一致并且包名一致时你才能调用微信提供的服务。(在使用此类第三方服务时一定要注意这一点)

三.Android签名的时要注意的事项

1、在使用编辑器时,会默认生成一个数字证书,这样我们才可以再模拟器或者真机上调试我们应用,但是在版本发布的时候必须生成我们自己的数字证书。

2、数字证书都是有有效期的,Android只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能。

四.详细过程(下面是用eclipse工具签名的过程,此方法适用于Android1.5及以上版本。)

步骤一:打开Eclipse->选择你要签名的项目->右击->android tools->Export signed Application package

步骤二,在出现的窗口确认是不是这个项目要签名,然后选择下一步:

Android签名校验和完整性校验 android签名证书_android

步骤三:在Export Android Application 这一步,如果我们之前已有有了 keystore, 选择我们之前已有的,否则我们新建一个。

如下,选择需要保存这个证书文件的目录,以及这个证书文件的一个密码。


Android签名校验和完整性校验 android签名证书_签名的意义_02


步骤四,点击下一步后,我们需要填写keystore的基本信息,如,别名,密码,有效期,姓名,组织,组织名称,所在城市,所在省份,国家等,点击Next


Android签名校验和完整性校验 android签名证书_签名的原理_03


步骤五、选择被签名后的APK保存位置。点击finish。注意是选择最终将产生的文件。


Android签名校验和完整性校验 android签名证书_签名的原理_04


之后我们在刚才选择的目录下就可以看到生成的签名后的APK文件。下次签名时直接使用我们己经生成的签名。


提供两个比较实用的工具

\