因为要适配android11版本,targetSdkVersion修改为 30后,进行加固apk,在android11上安装失败。
失败原因:加固apk后,v2签名没了,需要重新签v2.

我们可以使用Android SDK自带的apksigner.jar 对APK进行签名操作,apksigner.jar 存放在\Android\Sdk\build-tools\27.0.3\lib目录下。
cmd编辑,打开指定目录
cd C:\Users\18745\AppData\Local\Android\Sdk\build-tools\27.0.3\lib
查看apk签名情况
这是安装失败的apk文件路径 C:\Users\18745\Desktop\DNP_3.3.96.2(6.1.8)_psigned.apk
java -jar apksigner.jar verify -v C:\Users\18745\Desktop\DNP_3.3.96.2(6.1.8)_psigned.apk
通过执行命令返回的结果可以看到V1与V2的签名情况
这是未签名的APK返回的的结果:
DOES NOT VERIFY
ERROR: Missing META-INF/MANIFEST.MF
这是v1签名的APK返回的的结果:
Verifies
Verified using v1 scheme (JAR signing): true
Verified using v2 scheme (APK Signature Scheme v2): false
这是v1v2都签名的APK返回的的结果:
Verifies
Verified using v1 scheme (JAR signing): true
Verified using v2 scheme (APK Signature Scheme v2): true
例子
java -jar apksigner.jar sign --ks [签名路径] --ks-key-alias [alias名称] --ks-pass pass:[密码] --key-pass pass:[密码] --out [签名后的新包路径] [待签名的包路径]
java -jar apksigner.jar sign --ks D:\ruanjian\AndroidPath\DeepiotPatrol\app\jks\deep.jks --ks-key-alias deep --ks-pass pass:123456 --key-pass pass:123456 --out C:\Users\18745\Desktop\DNP_3.3.96.2(6.1.8)_加固.apk C:\Users\18745\Desktop\DNP_3.3.96.2(6.1.8)_psigned.apk
生成签名后再次执行已确认v2签名是否成功
java -jar apksigner.jar verify -v C:\Users\18745\Desktop\DNP_3.3.96.2(6.1.8)_加固.apk
Verifies
Verified using v1 scheme (JAR signing): true
Verified using v2 scheme (APK Signature Scheme v2): true
新的apk可以安装在Android 11手机上了
针对Android 11设备安装失败的问题,原因是加固后的APK丢失了V2签名。解决方案是使用Android SDK的apksigner.jar工具对APK重新签名,确保同时包含V1和V2签名。通过命令行工具检查签名状态,确认签名成功后,加固的APK可以在Android 11上正常安装。
2060

被折叠的 条评论
为什么被折叠?



