问题描述
我已使用 apksigner 工具签署了一个 apk 文件,其中标志 v1-signing-enabled 设置为 false
java -jar apksigner.jar sign --v1-signing-enabled false --key dsa-1024.pk8 --cert dsa-1024.x509.pem --in original.apk --out signed-original1.apk -v
成功签署apk。
但是当我验证它时,它失败了
java -jar apksigner.jar verify --in signed-original1.apk -v
DOES NOT VERIFY ERROR: Missing META-INF/MANIFEST.MF
v1 签名(jar 签名)是强制性的吗?
谢谢
解决方法
v1 签名不保护 APK 的某些部分,例如 ZIP 元数据。 APK 验证器需要处理大量不受信任(尚未验证)的数据结构,然后丢弃签名未涵盖的数据。这提供了一个相当大的攻击面。此外,APK 验证程序必须解压缩所有压缩条目,消耗更多时间和内存。为了解决这些问题,Android 7.0 引入了 APK Signature Scheme v2。