Android系统要求每一个安装进系统的应用程序都是经过数字证书签名的,数字证书的私钥则保存在程序开发者的手中。Android系统将数字证书用于在应用程序的作者和应用程序之间建立信任关系,但并不用于决定最终用户可以安装哪些应用程序。这个数字证书并不需要权威的数字证书签名机构认证,它只是用于应用程序包自我认证的。
Android数字证书包含以下几个要点:
所有的应用程序都必须有数字证书,Android系统不会安装一个没有数字证书的应用程序。
Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证。
如果要正式发布一个Android应用程序安装包,必须使用一个合适的私钥生成的数字证书来给程序签名,而不能使用如ant工具等生成的调试证书来发布。
数字证书包含应用程序所有者姓名,所在组织,国家,证书创建时间,证书有效期等信息。
Android使用标准的Java工具 Keytool and Jarsigner 来生成数字证书,并给应用程序包签名。
Android数字证书跟包名无关,多个不同包名的应用程序安装包可使用同一个数字证书对其进行签名。
Android系统不会覆盖安装运行包名相同,签名证书不同的两个安装包。
注意
如果您的App已经上线Android市场,或者已经正式发布,有用户已经正式使用了,切勿再更换签名证书,否则,App在自动更新覆盖安装升级时,Android系统将会认为新签名证书的App安装包是“非法签名”的App,而不予安装,导致更新失败,流失用户。
# 移动应用开发平台中的Android签名证书
开发者在编译安装包之前,可通过移动应用开发平台的“一键创建证书”功能来为本应用创建Android签名证书,平台使用标准的Java工具 Keytool and Jarsigner 来生成数字证书。另外您也可以使用“上传证书”功能,上传自己通过其他途径(如Android ADT、ANT等)生成的标准签名证书。
# 一键创建证书
“一键创建证书”功能,仅需要开发者通过可视化的操作界面,填写相关信息之后,即可自动为本应用生成相应的签名证书,同时提供该证书的下载地址。
自动生成的证书,相关信息中的所有者姓名默认为开发者在平台注册时的邮箱地址的@前半段,公司组织信息默认为邮箱地址全称,所在城市默认为北京,证书有效期默认100年。
关于证书的所有信息,都可以自行设定。注意,证书有效期不应该低于2033年前,证书的别名以及密码请妥善保管。
# 上传自己的证书
移动应用开发平台在支持“一键创建证书”的自动化操作的同时,也允许开发者为本应用上传自己通过其他途径生成的证书,如Android的ADT,ANT工具,命令行调标准Java工具生成的等。方便开发者将已上线的项目从原生或者其他平台迁移到移动应用开发平台,而不因签名问题带来用户损失等影响。
上传自己的证书,只需要点击“上传证书”按钮,选中要上传的keystore文件后即可,上传成功后,证书别名,证书库密码,证书密码的输入框将自动变成可编辑状态,输入该证书对应的正确别名和密码后,点击保存即可。
注意
如果输入的证书库密码、证书密码或者证书别名中有任意一个不正确,将导致编译安装包的时候报证书密码或者别名错误而编译失败,您需要重新上传证书,并输入正确的别名和密码。