- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
最近,当我准备签署我的 APK 以发布到 Play 商店时,我得到了这个新选项:
点击“签名帮助”链接,打开此网页: https://developer.android.com/about/versions/nougat/android-7.0.html#apk_signature_v2
搜索更多,我发现了这个:
事实证明,这是 Android 7.x 上的一项新验证,有助于使 APK 更安全,但体积也更小。
我尝试使用此新功能,正如博客上所写,它确实使 APK 更小了一些。此外,正如它所写的那样,它仅适用于 Android 7.x 及更高版本(但您实际上可以在同一个 APK 上使用这两种方法进行签名,让您也可以在旧版本的 Android 上安装应用程序)。
我不明白使用新的签名机制是否安全,以及他们在文档中究竟警告了什么。
我读过至少一条警告,我认为大多数开发人员不需要特别注意:
Caution: If you sign your app using APK Signature Scheme v2 and make further changes to the app, the app's signature is invalidated. For this reason, use tools such as zipalign before signing your app using APK Signature Scheme v2, not after.
我想我可以忽略这个警告,因为我只是让 IDE 自己使用默认构建行为构建 APK。
我尝试使用所有 3 种方式对应用程序进行签名:
似乎 v2 单独无法安装在 7.x 之前的 Android 版本上,但其余的可以,而且 v2 似乎比 v1 小,而 v1&v2 比 v1 稍微大一点。
从旧签名切换到新签名是否安全(当然同时启用两个签名)?
用户升级会有什么问题吗?用户是否会从 v1 升级到 v2,或从 v2(或 v1&v2)升级到 v1(以防出现问题) - 有什么问题吗?
我应该知道任何警告吗?我可以忽略我提到的警告是对的吗?
除了更好的安全性之外,使用 v1 和 v2(一起)进行签名还提供了哪些我在 v1 上没有的功能?
我的猜测是,只有从 Android 7 开始,我们才能使用 v2,它提供了一种拥有更小的 APK 的方法。是真的吗?
最佳答案
- Is it safe to switch from the old signing to the new one (Enabling both signing of course) ?
是的。只要签名后不修改APK就可以了。
- Will users have any issues upgrading? Will users upgrading from v1 to v2, or from v2 (or v1&v2) to v1 (in case something went wrong) - have any issues?
没有问题。一旦 Android 包管理器验证了 APK 签名(使用 v1 或 v2 方案),它就会提取签名证书,然后基于任何进一步的逻辑(例如,是否允许将此 APK 用作旧版本的更新)在签名证书上。因此,只要您的 APK 使用相同的签名证书进行签名,您就可以了。
- Should I know about any warnings? Was I right that I can ignore the warning I've mentioned?
如果您仅使用 Android Plugin for Gradle/Android Studio 来构建和签署您的 APK,则可以忽略该特定警告。该警告适用于使用自定义构建管道的开发人员,这些管道可能会在签名后修改 APK。
我不知道有任何其他警告。
- Aside from better security, what does signing using v1&v2 (together) provide, that I don't have on v1 ?
v2 签名验证速度更快。这意味着 v2 签名的 APK 在 Android Nougat(Android 7.0,API 级别 24)和更高版本上的安装/更新速度更快。
- My guess is that only from Android 7, we will be able to use just v2, which provides a way for having smaller APKs. Is it true?
正确。但是,APK 大小节省从来都不是 APK 签名方案 v2 的目标。节省只是与 APK 中的文件数量成正比的一个小数字,而不是与它们的大小成正比。您保存的是 META-INF/MANIFEST.MF
和 META-INF/*.SF
中的每个文件摘要。 META-INF/*.(RSA|DSA|EC)
被 APK 中其他地方的类似大小的 APK Signature Scheme v2 Block 替换。
关于android - 在使用新的 "APK Signature Scheme v2"时,我们应该了解哪些注意事项和警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40691627/
我遇到了一个奇怪的问题。我的应用程序的 Release 版本似乎运行良好,但最近当我切换到 Debug 版本时,我在启动时立即遇到访问冲突。当释放分配的内存块时,就会发生访问冲突。所有这些都发生在静态
我在 C# 中偶然发现了这种奇怪的语法形式,并试图弄清楚它的含义以及如何使用它。网络上似乎没有关于此的任何文档。 object data = new { var1 = someValue, var2
我正在尝试使用浏览器的内置类型 CSSStyleDeclaration 以编程方式传递和修改样式(由于 .cssText 属性,这很方便)。 但是,new CSSStyleDeclaration()
我有现成的代码: internal bool firstAsSymbol(out Symbol s) { return (s = first as Symbol) !=
在新的 Eclipse 版本 2022-03 中,一些(但不是全部)java 项目在 Project Explorer View 中的外观发生了变化。尽管 Package Presentation 设
我正在尝试使用 FormData 通过获取 API 在 POST 请求中发送用户输入的数据。问题是,当我用我创建的表单创建一个新的 FormData 对象时,它一直在创建一个空对象——没有条目/键/值
我有一个用一些 intel-intrinsincs 编写的 C 代码。在我先用 avx 然后用 ssse3 标志编译后,我得到了两个完全不同的汇编代码。例如: AVX: vpunpckhbw %xm
最近,discord 为您自己的应用程序添加了对斜杠命令的支持。我通读了它的文档,并尝试搜索一些视频(但是该功能刚刚出现),但我不明白我实际上需要做什么才能使其正常工作。我正在使用 WebStorm(
我想使用 JRI 从 Java 调用 R。 我在 eclipse 下在主类中运行它: Rengine c = new Rengine(new String[] { "--vanilla" },
我正在使用新的 Place Autocomplete那是来自新的静态Google Places SDK 客户端库 (here)。所以它真的很容易使用,我刚得到this tutorial它按预期工作。
我刚刚更新到 flutter 版本 1.25.0-5.0.pre.92,我的代码中出现了很多与空安全相关的错误,这些错误以前运行良好。我没有以任何方式选择空安全,我所做的只是运行 flutter 升级
我已经使用 React Native 有一段时间了,但我想我会在网络上试用 React。所以我遵循了这个指南:https://reactjs.org/docs/create-a-new-react-a
周六早上在这里。尝试学习新的 Scala 编译器 dotty。 安装在我的 Mac 上使用 brew install lampepfl/brew/dotty 安装成功。我有版本 dotr -versi
我使用了谷歌地方的新依赖。单击自动完成 View 时应用程序崩溃。错误如下。, java.lang.NullPointerException: Place Fields must be set.
我关注了这个博客-> https://medium.com/@teyou21/training-your-object-detection-model-on-tensorflow-part-2-e9e
在哪里可以找到用于在此架构上进行组装的新寄存器的名称? 我指的是 X86 中的寄存器,如 EAX、ESP、EBX 等。但我希望它们是 64 位的。 我认为它们与我反汇编 C 代码时不同,我得到的是 r
新的服务总线库 Azure.Messaging.ServiceBus 使用 ServiceBusReceivedMessage 来接收消息 https://learn.microsoft.com/en
需要使用实时流媒体 channel 的实时编码类型在新的 Azure 门户中配置广告插入和石板图像。请帮忙解决这个问题,因为我找不到该功能。 最佳答案 此处描述了 Azure 媒体服务的广告插入选项
我正在使用新的 GitHub 操作,下面的工作流程的想法是在打开或同步 pr 时运行,它应该首先检查并安装依赖项,然后运行一些 yarn 脚本 name: PR to Master on: pul
我听说 DMD 2.058 中将有一个用于匿名函数的新语法,但我找不到任何相关信息。新语法是什么?旧语法是否会被弃用? 最佳答案 我相信它就像 C#'s . 以下内容是等效的: delegate(i,
我是一名优秀的程序员,十分优秀!