android7.1 OTA增量升级流程及问题

之前写了一个apk完成了OTA升级

一.应用层升级说明

大家知道android N已经是A/B升级模式,make otapackage之后就会生成update.zip升级文件

系统提供了UpdateEngine来完成这个升级:

       UpdateEngine engine = new UpdateEngine();
        mContext = context;

        engine.bind(new UpdateEngineCallback(){
            @Override
            public void onStatusUpdate(int status, float percent){
                SLog.i(TAG, "onStatusUpdate status = " + status + ", percent = " + 
                    percent);

            }
            @Override
            public void onPayloadApplicationComplete(int errorCode){
                SLog.i(TAG, "onPayloadApplicationComplete errorCode = " + errorCode);
                if(0 == errorCode){
                    reboot();
                }
            }
        });

        engine.applyPayload(url, offset, size, headerKeyValuePairs);

二.最近同事测试增量升级, 发现一些问题:

1.通过两次的make otapackage, 生成update文件之后, 无法生成增量包

执行命令:

/build/tools/releasetools/ota_from_target_files –v –-block -p out/host/
linux-x86 -k build/target/product/security/testkey -i
path_to_target_files_v1.zip path_to_target_files_v2.zip update.zip

报错如下:

android7.1 OTA增量升级流程及问题_第1张图片

执行: mmm external/bsdiff/ 之后解决这个问题

2.升级过程中system检验报错:

执行命令:

update_engine_client --update --follow --payload=file:///data/ota_package/update.zip --offset=45 --size=674344122 --headers="FILE_HASH=AVkwRr5bgVPJE3MDYUsrmMI1p0dYs5mK/Lo8JVwq/Ao=
FILE_SIZE=674344122
METADATA_HASH=Fyi0UPUbvcjTjsJPC7ixBceA9J/VDr7ehVRIidHK104=
METADATA_SIZE=86724

报错如下:

android7.1 OTA增量升级流程及问题_第2张图片

最后发现是同事修改了system的权限, 有remount操作导致. 

总结, 遇到这个问题有2种情况:

a.out/target/product/msm9999/obj/PACKAGING/target_files_intermediates,解压.zip文件之后的system.img

   和out/target/product/msm9999/里面的system.img不是同一个, 使用diff 比较一下即可发现

b.使用remount操作, 导致system改变了.

参考:https://blog.csdn.net/qq_25804863/article/details/80538248

你可能感兴趣的:(android系统相关)