任何人都可以告知在发布之前签署APK的确切重要性。
答案 0 :(得分:41)
来自Android Documentation for Signing Applications:
Android系统要求所有已安装的应用程序都是 用其私钥持有的证书进行数字签名 应用程序的开发人员。 Android系统使用证书作为 识别申请作者和建立的手段 应用之间的信任关系。证书未使用 控制用户可以安装的应用程序。证书 不需要由证书颁发机构签名:它是完美的 允许的,也是典型的,Android应用程序使用自签名 证书。
了解有关签署Android应用程序的重要事项 是:
- 所有申请必须签名。如果未签名,系统将不会在仿真器或设备上安装应用程序。
- 为了测试和调试您的应用程序,构建工具使用由Android创建的特殊调试密钥为您的应用程序签名 SDK构建工具。
- 当您准备好为最终用户发布应用程序时,您必须使用合适的私钥对其进行签名。你不能发表 使用SDK生成的调试密钥签名的应用程序 工具。
- 您可以使用自签名证书对应用程序进行签名。不需要证书颁发机构。
- 系统仅在安装时测试签名者证书的到期日期。如果申请人的签名者证书在之后到期 安装应用程序后,应用程序将继续运行 正常进行。
- 您可以使用标准工具 - Keytool和Jarsigner - 生成密钥并在应用程序.apk文件上签名。
- 在您的应用程序签名发布后,我们建议您使用zipalign工具优化最终的APK包。
Android系统不会安装或运行不是的应用程序 签了得当。这适用于运行Android系统的任何地方, 无论是在实际设备上还是在仿真器上。出于这个原因,你 必须先为您的应用程序设置签名,然后才能运行它 在模拟器或设备上调试它
为什么意味着:
应用程序签名的某些方面可能会影响您的处理方式 开发您的应用程序,,特别是如果您计划的话 发布多个应用程序。
一般而言,所有开发人员的建议策略是签署所有 你的应用程序使用相同的证书,整个 预期的应用程序寿命。有几个原因 你应该这样做:
应用程序升级 - 在您发布应用程序更新时,必须继续使用相同的方式对更新进行签名 证书或证书集,如果您希望用户能够 无缝升级到新版本。系统安装时 对应用程序的更新,它会比较新的证书 版本与现有版本中的版本。如果证书匹配 确切地说,包括证书数据和订单,然后是 系统允许更新。如果您在不使用的情况下签署新版本 匹配证书,您还必须分配不同的包名称 到应用程序 - 在这种情况下,用户安装新版本 作为一个全新的应用程序。
应用程序模块化 - Android系统允许由同一证书签名的应用程序在同一进程中运行,如果 应用程序如此请求,以便系统将它们视为一个 单一申请。通过这种方式,您可以部署您的应用程序 模块和用户可以独立更新每个模块 需要的。
通过权限进行代码/数据共享 - Android系统提供基于签名的权限实施,以便 应用程序可以将功能暴露给另一个应用程序 使用指定证书签名。通过签署多个应用程序 使用相同的证书并使用基于签名的权限 检查,您的应用程序可以安全的方式共享代码和数据。
确定签署策略的另一个重要考虑因素 是如何设置您将用于签名的密钥的有效期 你的申请。
如果您计划支持单个应用程序的升级,则应确保密钥的有效期超出预期 该应用程序的生命周期。有效期为25年或以上 推荐的。当您的密钥有效期到期时,用户将不会 更长时间能够无缝升级到您的新版本 应用
如果您使用相同的密钥签署多个不同的应用程序,则应确保密钥的有效期超出预期 所有应用程序的所有版本的生命周期,包括 可能在将来添加到套件中的相关应用程序。
如果您计划在Google Play上发布您的应用程序,您用于签署应用程序的密钥的有效期必须结束 2033年10月22日之后.Google Play强制执行此要求以确保 用户可以在新版本时无缝升级应用程序 可用。
答案 1 :(得分:4)
为什么?
开发人员可以防止他人篡改其应用。
签名以保护您的应用!
这在公钥加密中起作用。您是唯一拥有私钥的人。您是唯一可以签署您的应用程序的人。用户可以信任直接来自您的应用。经数学证明,如果私钥不可用,则篡改应用程序是不可行的。
您知道,在公用密钥加密中,有两个密钥,就像硬币的侧面一样。私钥和公钥。您将私钥保密。您将其锁定并保持安全。另一方面,您发布公用密钥。
这些密钥就像硬币的侧面,因为用一个密钥加密的密钥和用另一个密钥解密的密钥。
这如何应用于应用签名?
签名正在使用私钥加密。
因为您在应用商店中发布了公共密钥,并且用户拥有了您的公共密钥。他们可以解密您的应用程序,因此可以确定该应用程序确实是您自己的。 Android和应用商店为他们完成了此任务。
应用商店通过使用公钥解密来验证签名。
就这样,伙计们。
答案 2 :(得分:-1)
签署Apk: 生成签名的apk意味着用您只知道的密码或密钥对apk进行加密,您必须永远记住该apk,就好像您在应用程序上进行的任何进一步升级一样,您必须使用您的应用程序进行访问。 / p>