OTA生成差分包内置应用报错

ota做差分包的时候遇到个问题,生成差分包在内置应用做差分的时候会报错
ERROR:
Failed to generate imgdiff for //system/priv-app/TestApp_1/TestApp_1.apk: tgt=70499-75692 75694-75930, src=70499-71112:
W/ziparchive(25145): Zip: bad offsets (dir 22384640, size 53154, eocd 22245282)
imgdiff E 07-14 14:21:25 25145 25145 imgdiff.cpp:661] Failed to open zip file /tmp/tgt-KxNSNW: Invalid offset

排查应用后发现是因为so文件,导致差分包生成报错

我是采用以apk的形式内置应用到系统的,so文件是直接集成到apk里的,没有导出来使用Android.mk引用,因为这样也没报错,谁想差分包生成会出问题。

既然是因为so文件导致报错,那就导出so文件
解压apk so文件都是放在lib 目录下的
OTA生成差分包内置应用报错_第1张图片OTA生成差分包内置应用报错_第2张图片

将整个lib导出来,跟apk放同一级目录,然后删除apk里的lib目录。
修改Android.mk 增加
LOCAL_PREBUILT_JNI_LIBS :=
lib/arm64-v8a/libnative-lib.so
lib/arm64-v8a/libopencv_java3.so

我的so文件是只要用64位的,如果系统是64 so只有32位的话 还需要加
LOCAL_MULTILIB := 32 指定编译32bit

你可能感兴趣的:(android,源码)