- 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/
我有一个 k*n矩阵 X 和 k*k矩阵A。对于X的每一列,我想计算标量 X[:, i].T.dot(A).dot(X[:, i]) (或者,数学上, Xi' * A * Xi )。 目前,我有一个
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我是 VueJS 的新手。我已经使用 vuetify/webpack-ssr 模板创建了一个项目,现在我想创建一个登录页面,但是没有显示表单,控制台给了我以下信息: [Vue warn]: Unkno
我尝试将 value 插入到 C++ vector v 之前的第 i 元素(或元素 (i-1) 之后) )。代码很简单 v.insert(v.begin() + i, value); 我确信当 i 介
我需要显示使用合并排序算法排序的 vector 。然而,当我使用 v.begin() 时,我的 friend 使用 v.data() 来传递 vector 。他的代码运行良好,而我的却不行。请解释。
这是我的命令(url1、url2、url3、url4 是占位符): ffmpeg -i url1 -i url2 -i url3 -i url4 -filter_complex “[1:v:0] [1
我以前用过Vue,我知道怎么用v-for渲染元素序列,v-if或v-show有条件地显示元素,并且 v-model例如,控制段落的内容。 但现在我需要对 DOM 进行更精细的控制: 我有一个range
我正在学习所有权和借用。 borrow1 和borrow2 的区别在于在borrow2 打印时使用了&: fn borrow1(v: &Vec) { println!("{}", &v[10]
我找不到一种方法来选择不同的选项来渲染 v-for 中的文本。是否有可能或者我是否需要以不同的方式构建逻辑来执行类似于下面的代码的操作? // i
Iterable 的三个直接子类型是 Map , Seq , 和 Set .除了性能问题之外,似乎还有一个 Seq是从整数到值的映射,以及 Set是从值到 bool 值的映射(如果值在集合中,则为 t
我想应用一个计算方法,如果键存在则增加值,否则将 1。有 Map map = new HashMap<>(); 我不明白为什么 for (int i = 0; i v != null ? v++ :
标准(IEEE 754/C)是否保证以下代码断言永远不会失败? int main() { for ( /* all possible float / double values */ )
代码由Vue语言编写,使用Element-ui框架, 如果一个对象包含某些内容,则会显示该内容,如果不包含则禁用菜单按钮。 输出应该是这样的: a、b(禁用)、c、d、e 但我的是这样的: a、a(禁
如果我这样做: {{ morevalue }} {{ value }} v-else 中的跨度也会在第二个 V-FOR 上循环,即使它上面没有任何 v-for,为什么? 这是
如果我这样做: {{ morevalue }} {{ value }} v-else 中的跨度也会在第二个 V-FOR 上循环,即使它上面没有任何 v-for,为什么? 这是
我将 Vue.js 与 Vuetify 一起使用,我正在尝试使用 v-data-table 从后端加载菜单列表并使用 对其设置一些权限v-switches 但我在尝试 v-model 数组时遇到问题:
我在 Java 的流式操作中努力维护我想要的数据结构,这很可能是由于缺乏正确的理解和实践。 public class Main { public static void main(String
我正在尝试为匹配中的每个匹配呈现一些 HTML,但是,我不太确定 实际上是正确的。 更具体地说,我不确定我是否可以使用 v-bind:match='match'在与循环相同的元素上 v-for='ma
所以我想知道为什么这个 v-if 和 v-else 语句不起作用,为什么我要以不同的方式解决它。 代码如下 Required: Select a Workflow {{ isChain ?
我有一个 VueJS 组件 ,我在同一个模板中使用了两次来显示两组不同的数据。每个都显示在自己的 使用 v-if 切换的容器在导航选项卡上。 似乎这些组件被实例化为同一个实例。我调用 console
我是一名优秀的程序员,十分优秀!