今天app开发屋和朋友们分享的主题是Android安卓为什么要为应用程序签名,Android 系统要求签名机制,所有安装在 Android 系统上的软件都必须经过签名。与 Symbian 系统要求对安装软件进行签名的目的不同,Android 系统要求对软件进行签名不是为了获得软件在 Android 系统上安装的权限,而是为了用签名辨别软件的开发者。
Android 系统不会安装没有经过签名的应用程序,所有的 Android 应用程序都要求开发者使用一个证书来进行签名。该证书的私钥由应用程序的开发者所拥有,Android 系统通过该证书来识别应用程序的开发者。
只有使用同一个证书签名的应用程序,才能被 Android 系统允许进行升级、覆盖安装等操作。使用不同签名的两个应用程序,即使其包名和类名完全相同,Android 系统也不会允许其安装在同一个目录下。
之前的章节中提到过,之前开发的应用程序,没有经过签名,却可以在模拟器上安装并且运行,是因为在开发模式下编译应用程序的 ADT 工具会自动使用默认的证书来对应用程序进行签名,以便其可以在模拟器上运行。
单击 Eclipse 菜单中的 Window | Preferences | Android | Build,显示的是系统默认的调试用的签名数字证书(为 debug.keystore),如图 1 所示。
需要注意的是,使用 debug.keystore 进行签名的应用程序只能在模拟器上运行,而不能在真机上运行。在真机上运行的应用程序必须使用正式的证书进行签名。
用于给应用程序签名的证书不需要是权威机构发布的证书,开发者可以生成自己的签名证书。
Android 建议的签名证书的有效期一般要长于 25 年。
Android 系统只有在应用程序安装时才会检查证书的过期时间。若安装时证书已经过期,则应用程序不能安装。若在应用程序安装后证书过期,则不会影响应用程序的正常运行,但是会导致该应用程序再也不能升级。