Platform: RK3399
OS: Android 7.1
Kernel: v4.4.83
现象:
在rk3288上预置的apk放到rk3399平台上确不能使用了,出现error log如下:
Failed to parse /data/app/Ben3.0.AudioService: Failed to collect certificates from /data/app/Ben3.0.AudioService/Ben3.0.AudioService.apk
app安装逻辑:
app是被预置在/system/etc/目录下,恢复出厂设置时会被copy到/data/app目录下,
按照系统执行逻辑,在下一次重启的时候,如果签名正确,那么就会被正常地安装到/data/app下。
分析调试过程:
- 由于我是预置了多个app,奇怪的是有些是能正常安装的,但是都是用同一个签名文件打包的,很诡异。
- 查看验证签名的源代码, 出现异常是在new StrictJarFile()部分。
private static void collectCertificates(Package pkg, File apkFile, int parseFlags)
......
boolean verified = false;
try {
Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "verifyV2");
allSignersCerts = ApkSignatureSchemeV2Verifier.verify(