Apksigner 中文文档 下载 App

v1(JAR)签名方案:老设备兼容的底座

它是怎么工作的

v1 方案沿用了 Java JAR 的签名传统:对 APK 压缩包里的每个文件条目分别计算摘要,签名信息写进包内 META-INF 目录。安装时系统逐条比对,任何一个文件对不上就拒绝安装。

为什么它还在

一个字:兼容。v1 是唯一被所有安卓版本接受的方案。目标设备里如果有 Android 6 或更早的机器,包里必须带 v1 签名,否则这些设备根本不走后面的校验流程,直接装不上。

它的固有弱点

逐条目校验留下了一个经典攻击面:v1 只保证"包内各文件未被改动",不约束 zip 结构本身——历史上著名的 Janus 类漏洞正是利用这一点,在保留合法签名条目的前提下改动包结构。这也是 Android 7.0 引入 v2 整包校验的直接动因,详见v2 方案。

什么包该带 v1

在 apk-signer 里怎么控制

签名设置里 v1/v2 各有开关(v3、v4 开关自 6.10.0 加入,见签名方案全景)。开关的默认组合以应用当前版本为准;组合策略的推荐见v1+v2 为什么是稳妥默认。