[DESCRIPTION]
Google在N上引入了一项新的应用签名方案Signature Scheme v2,它能提供更快的应用安装时间和更多针对APK文件更改的保护
在N上预置APK时,如果APK是采用的Signature Scheme v2签名,采用原有的预置应用方式预置APK会失败:
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES: Failed to collect certificates fr
om /data/app/vmdl1483607312.tmp/base.apk: META-INF/CERT.SF indicates /data/app/v
mdl1483607312.tmp/base.apk is signed using APK Signature Scheme v2, but no such
signature was found. Signature stripped?]
[SOLUTION]
经过BUILD_PREBUILT后的apk与原apk是有差异的,因为v2是对apk整体签名,所以这个差异导致签名失效。
1、app预置到到工程中,用android.mk编译之后的APK是有区别的,android编译系统会用zipalign对APK进行字节对齐等操作
2、APK Signature Scheme v2这个是Google在N上新引入的签名方式。v2 签名将验证归档中每个文件的已压缩文件内容,如有任何自定义任务篡改 APK 文件或对其进行后处理(无论以任何方式),那么v2 签名会有作废的风险
在预置APK build进系统时候不让其走编译流程,在其他模块的android.mk加入下面的cp脚本:
$(shell cp $(LOCAL_PATH)/***/*.apk $(TARGET_OUT)/vendor/operator/app)
1、app预置到到工程中,用android.mk编译之后的APK是有区别的,android编译系统会用zipalign对APK进行字节对齐等操作
2、APK Signature Scheme v2这个是Google在N上新引入的签名方式。v2 签名将验证归档中每个文件的已压缩文件内容,如有任何自定义任务篡改 APK 文件或对其进行后处理(无论以任何方式),那么v2 签名会有作废的风险
在预置APK build进系统时候不让其走编译流程,在其他模块的android.mk加入下面的cp脚本:
$(shell cp $(LOCAL_PATH)/***/*.apk $(TARGET_OUT)/vendor/operator/app)
APK能通过PMS扫描安装成功,可能还会报so找不到的问题,可以参考:N上预置APK失败提示找不到so文件