在Android系统中,所有安装到系统的应用程序都必须有一个数字证书,用于识别应用程序的作者,建立应用程序之间的信任关系。如果一个权限的protectionLevel是签名,那么只有那些与该权限所在程序拥有相同数字证书的应用程序才能获得该权限。Android使用Java的数字证书相关机制,在apk上打上数字证书。要了解android的数字证书,需要了解以下数字证书的概念和Java的数字证书机制。Android系统要求每一个安装到系统中的应用程序都经过数字证书签名,数字证书的私钥保存在程序开发者手中。Android使用数字证书来识别应用程序作者并建立应用程序之间的信任关系,而不是确定最终用户可以安装哪些应用程序。该数字证书不需要经过权威数字证书签名机构的认证,仅用于让应用程序包进行自我认证。一:同一开发商的多个程序尽可能使用同一个数字证书,可以带来以下好处。(1)有利于程序升级。当新版程序和旧版程序的数字证书相同时,Android系统会认为这两个程序是同一个程序的不同版本。如果新程序和旧程序的数字证书不一样,Android系统认为它们是不同的程序,就会发生冲突,需要新程序更改包名。(2)有利于程序的模块化设计和开发。Android系统允许具有相同数字签名的程序运行在一个进程中,Android程序会将它们视为同一个程序。因此,开发者可以以模块的形式开发自己的程序,用户只需要在需要的时候下载相应的模块即可。(3)数据和代码可以通过权限的方式在多个程序之间共享。Android提供了一种基于数字证书的权限授予机制,应用程序可以与其他程序共享通用功能或数据给那些与自己拥有相同数字证书的程序。如果某个权限的protectionLevel是签名,那么这个权限只能授予那些与该权限所在包具有相同数字证书的程序。签名时需要考虑数字证书的有效期:(1)数字证书的有效期应包括程序的预期生命周期。一旦数字证书过期,持有该数字证书的程序将无法正常升级。(2)如果多个程序使用同一个数字证书,则数字证书的有效期应包括所有程序的预期生命周期。(3)AndroidMarket规定所有应用程序数字证书有效期至2033年10月22日之后。二:Android数字证书包含以下要点:(1)所有应用程序都必须有数字证书,Android系统不会安装没有数字证书的应用(2)Android包使用的数字证书是可以自签名的,不需要权威的数字证书授权机构签名认证(3)如果要正式发布一个Android,你必须使用合适的私钥生成的数字证书对程序进行签名,不能使用adt插件或ant工具生成的debug证书进行发布。(4)数字证书都是有效的,Android只在应用安装时检查证书的有效性。如果程序已经安装在系统中,即使证书过期,也不会影响程序的正常功能。(***ndroid使用标准的java工具Keytool和Jarsigner生成数字证书并对应用程序包进行签名。(6)使用zipalign优化程序。Android系统不会安装和运行任何没有数字签名的apk程序。是否Android开发工具(ADT插件和Ant)可以协助开发者对apk程序进行签名,它们有两种模式:调试模式(debugmode)和发布模式(releasemode)).在debug模式下,android开发工具每次编译时都会使用调试用的数字证书对程序进行签名,开发者无需关心,程序发布时,开发者需要使用自己的自己的数字证书对apk包进行签名有两种方法。(1)使用命令行中的JDK和Keytool(生成数字证书)和Jarsigner(用数字证书进行签名)对apk包进行签名。(2)使用ADT导出向导d进行签名(如果没有数字证书,可能需要生成数字证书)。3、两种签名方式第一种签名方式,使用Keytool和Jarsigner对程序进行签名(适用于1.5以下版本)命令:keytool-genkey-v-keystoreandroid.keystore-aliasandroid-keyalgRSA-validity20000这个命令其中,-keystoreophone.keystore表示生成的证书,可以添加路径(默认在用户家目录下);-aliasophone表示证书的别名是ophone;-keyalgRSA表示使用的RSA算法;-validity20000表示证书有效期为20000天。此时我们会在互通主目录下看到ophone.keystore,也就是我们刚刚创建的证书。第二种签名方法:现在介绍android1.5及更新版本的apk签名方法1,打开Eclipse->选择你要签名的项目->右键->androidtools->ExportsignedApplicationpackage...2,跳转outofthewindow3.Projectchecks如果projectname没有问题,点击Next,然后跳出keystore选择。如果密钥库文件已经存在,请选择它并输入密钥库的密码进行签名。如果没有,选择createnewkeystore,然后选择keystore的保存位置,设置keystore的密码,点击Next。4、填写keystore的基本信息,如别名、密码、有效期、名称、组织、组织名称、城市、省份、国家等,点击下一步5。选择保存已签名APK的位置。单击完成。6.您可以在您保存的位置找到对应的签名APK文件。
