在Android系统中,要求所有应用程序必须经过数字签名后才能安装。Android系统使用这个证书来识别应用程序的作者,并建立程序间的信任关系。 证书并不用让于用户控制可以安装哪些程序,证书也不需要授权中心来签名。在Android系统中,应用程序使用自己签名的证书是完全允许而且是很普遍的。
关于Android应用程序签名主要有以下几个重点:所有的应用程序都必须签名。系统不会安装任何一个没有签名的程序。这条规则适用于任何运行Android系统的地方,不管是真机还是模拟器。因此必须在模拟器或真机上运行/调试程序之前对程序进行签名。
可以使用自己的证书来签名。不需要任何授权中心。
要为最终用户发布应用程序的时候,必须签入一个合适的密钥。不可以发布程序的时候还使用SDK工具签入的Debug Key。
系统只在安装应用程序的时候检测证书的有效期。如果应用程序在安装之后证书失效了,应用程序依然可以正常工作。
可以使用标准工具——Keytool和Jarsigner生成Key并签名apk文件。
一旦为应用程序签名了,一定要使用zipalign工具来优化最终的APK包。
Debug Key和Release Key
在调试应用程序时,Android SDK工具会自动对应用程序进行了签名。Eclipse的ADT插件和Ant编译工具都提供了两种签名模式——Debug模式和Release模式。 在开发和测试时,可以使用Debug模式。Debug模式下,编译工具使用内嵌在JDK中的Keytool工具来创建一个keystore和一个 key(包含公认的名字和密码)。在每次编译的时候,会使用这个Debug Key来为apk文件签名。由于密码是公认的所以每次编译的时候,并不需要提示你输入keystore和key密码。
当程序准备发布时,必须在Release模式下使用