【发布时间】:2020-02-03 19:58:42
【问题描述】:
我知道它只是用于管理 google play store 中的应用程序。
但是还有其他原因可以保护代码免受反编译器的影响吗?
我想知道面试中这个问题的正确答案是什么。
谁让我知道我们应该签署申请的原因?
【问题讨论】:
我知道它只是用于管理 google play store 中的应用程序。
但是还有其他原因可以保护代码免受反编译器的影响吗?
我想知道面试中这个问题的正确答案是什么。
谁让我知道我们应该签署申请的原因?
【问题讨论】:
如果您问我们为什么要签署 apk,那么数字签名是一种证明数字文件真实性的方法,例如文档、消息或在这种情况下是 apk,这实际上只是一个集合文件。
因此,通过签署一个 apk,我们有效地创建了一种方法,以确保使用该 apk 的任何人都能获得他们期望收到的文件的可验证副本。这在安全性方面具有明显优势,因为其他人无法在保持相同签名的同时更改此文件。
来自the docs:
您应该这样做有几个原因:
应用升级:系统在安装应用更新时,会将新版本中的证书与新版本中的证书进行比较 现有版本。系统允许更新,如果证书 匹配。如果您使用不同的证书签署新版本,您 必须为应用分配一个不同的包名——在这种情况下,用户 将新版本安装为全新的应用。
应用程序模块化:Android 允许使用相同证书签名的 APK 在同一进程中运行,如果应用程序要求,系统 将它们视为单个应用程序。通过这种方式,您可以将您的应用程序部署在 模块,用户可以独立更新每个模块。
通过权限共享代码/数据: Android 提供基于签名的权限强制执行,以便应用可以公开 使用指定签名的另一个应用程序的功能 证书。通过使用相同的证书签署多个 APK 并 使用基于签名的权限检查,您的应用可以共享代码和 以安全的方式收集数据。
如果您计划支持应用升级,请确保您的应用 签名密钥的有效期超过预期寿命 该应用程序的。建议有效期为 25 年或更长。 当您的密钥有效期到期时,用户将无法再 无缝升级到您的应用的新版本。
如果您计划在 Google Play 上发布您的应用程序,您使用的密钥 签署您的应用程序的有效期必须在 10 月 22 日之后结束 2033. Google Play 强制执行此要求,以确保用户可以在新版本可用时无缝升级应用。
【讨论】: