我为什么要在发布之前签署我的应用程序APK

时间:2014-05-28 08:46:06

标签: android security android-manifest apk sign

任何人都可以告知在发布之前签署APK的确切重要性。

3 个答案:

答案 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>