apk打包和反编译四、为你的应用程序签名
Signing Your Application(为你的应用程序签名)。
在Google提供的帮助文档中,有详细的描述:Android SDK/docs/guide/publishing/app-signing.html#secure-key
Signing Your Applications(为你的应用程序签名)
Android系统要求所有已安装的应用程序需要使用应用开发人员提供的私钥进行数字签名。Android系统使用证书的方法确认作者的一个应用程序和应用程序之间建立信任关系。
理解有关签名Android应用程序的要点:
- 所有的应用程序必须被签名。如果应用程序没有签名,那么Android系统是不允许它安装到一个模拟器或者一个设备上的。
- 测试和调试您的应用程序过程中,Android SDK创建一个特殊的调试密钥要来签名你的应用程序。
- 当你准备发布你的应用程序给最终用户,你必须用一个合适的私钥来签署它。你不能试用SDK工具生成的调试密钥来签署发布一个应用程序。
- 你可以使用你自己的签名证书去签名你的应用程序。而不需要证书授权方。
- 系统测试一个签名者证书的有效期只有在安装时。如果一个应用程序的签名者证书安装应用程序之后到期,应用程序将继续正常运转。
- 您可以使用标准的工具- Keytool和Jarsigner -生成密钥,签上您的应用程序的apk文件。
- 在你要发布的应用程序签名之后,我们建议您使用zipalign工具来优化最后的APK包。
Android系统会不安装或不运行没有签名的应用程序。这适用于任何Android系统,无论是否在一个实际的设备或模拟器。由于这个原因,在一个设备上运行和调试他,你必须为它签名。
Signing Process(签名过程)
Android应用程序的构建签名过程不同,取决于你使用哪个构建模式来构建自己的应用程序。有两种构建模式:调试模式和发布模式。当你在开发和测试应用程序的时候,使用调试模式。你使用发布模式,在您想要构建一个发布版本的应用程序,您可以直接向用户发布或发布在应用程序市场的地方,如Android市场。
the tools don't need to prompt you for the debug key's alias and password each time you compile.当你创建一个调试模式的时候,Android SDK会用实用的密钥工具(包括JDK)生成一个调试的密钥。因为是SDK创建的调试密钥,它知道这个调试密钥别名和密码。每次你用调试模式编辑你的工程,构建工具使用调试密钥连同Jarsigner(也包括在JDK)签署应用程序的.apk文件。因为SDK构件工具知道别名和密码,你每次编辑的时候,这个工具不需要提示你的别名和密码。
当你在发布模式下构建你自己的私钥签署你的应用程序。如果你没有一个私有密钥,您可以使用密钥生成工具来创建一个给你。当你在发布模式下编辑你的应用程序,构建工具使用您的私钥连同Jarsigner实用工具来签上您的应用程序的.apk文件。因为你使用的是自己的证书和私钥,你需要提供密码给密钥存储库和别名。
当您使用Eclipse ADT插件运行或调试应用程序,调试签名过程将自动发生。当您使用Ant构建脚本与调试选项,调试签署也将自动发生。使用Eclipse导出向导或修改Ant构建脚本和构建与发布选项,能自动释放签名过程。
Signing Strategies(签名策略)
应用程序签名的某些方面可能会影响你如何处理你的应用程序的发展,特别是如果你正计划发布多个应用程序。一般来说,推荐策略适用于在整个应用程序的预期寿命,需要使用相同的证书签署您所有的应用程序的开发人员。有几个原因解释为什么你会这样做:- 应用程序升级 – 当你发布你的更新的应用程序, 你想要继续使用相同的证书去签署你的更新的程序,如果你想用户无缝的更新新的版本,当系统安装你的更新应用程序时,它会比较新旧两个版本的签名证书。如果证书完全匹配,系统就会允许你的安装。如果你没有使用完全匹配的证书签署新的版本的应用程序,那么你必须要给应用程序指定一个不同的包名——在这种情况下,用户安装新版本作为一个全新的应用程序。
- 应用模块化——Android系统允许使用相同证书签署的应用程序运行在相同的进程中。如果应用程序要求,那么系统把他们最为一个单独的应用程序看待。通过这种方法,您可以在模块中部署应用程序,如果需要的话,用户可以更新每个独立的模块。
- 通过权限共享代码/数据——Android系统提供了基于签名的权限执行,根据一个指定的证书签署,这样应用程序可以暴露功能到另一个应用程序。使用相同的证书签署多个应用程序和使用基于签名的权限检查,您的应用程序可以以一种安全的方式共享代码和数据。
- 如果你打算支持升级为单个应用程序,你应该确保有效期超过了该应用程序的预期寿命。建议25年有效期或更多。当你有效期过期后,用户将不再能够无缝地升级到新版本的应用程序。
- 如果你以相同的密钥签署了多个不同的应用程序,您应该确保您有效期超过预期生命周期的所有版本的所有的应用程序,包括依赖应用程序,未来可能添加到套件在。
- 如果你想要在Android市场发布你的应用程序,这个密钥你用来签署应用程序的有效期必须结束于2033年10月22日。市场服务器执行此要求,以确保用户可以无缝升级市场应用到最新的版本。
当您设计您的应用程序,记住这些要点,并确保用适当的证书签署你的应用程序。
未完 待续
更多相关文章
- Android开发从入门到精通(7)_1
- android sdk 签名
- 我的第一个 Mono for Android(安卓)应用
- Android(安卓)sharedpreferences轻量级存储
- android应用程序内存分析
- Android(安卓)Manifest.xml文件解析
- Android(安卓)httpClient 支持HTTPS
- Android将Widget添加到自己的应用程序
- 如何判断 两个不同包名的 Android(安卓)应用的 Apk 签名是否一致