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

报错如下:

执行: 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

报错如下:

最后发现是同事修改了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改变了.

参考:Android OTA差分包升级失败_Ansen360的博客-CSDN博客

欢迎大家一起学习,讨论,微信公众账号

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值