Android APP端进行OTA包的安装


前言:最近做OTA升级集成到APP中,涉及到一些函数使用和权限问题,简单做个记录
关于OTA包的下载是通过腾讯云的物联网开发平台,集成SDK到自有APP中

一、RecoverySystem

Recovery工作原理可以参考这篇博客:Recovery工作原理
RecoverySystem类进行OTA整包的安装,首先需要

OTA整包:update.zip (注意不是镜像文件的压缩文件,打包OTA整包需要专用命令可百度)

1.1 RecoverySystem.verifyPackage()

验证OTA包的函数,它有一个回调接口ProgressListener(),我们在其中判断验证进度达到100%时进行安装

1.2 RecoverySystem.installPackage()

安装OTA包的函数,该函数需要RECOVERY权限,故我们需在Manifest文件中进行权限声明

<uses-permission android:name="android.permission.RECOVERY"/>

二、文件路径问题

以上两个函数都需要传入update.zip所在的文件路径,但安卓机在启动时可能sdcard不会挂载,所以把update.zip放在sdcard中可能导致文件读不到的情况,这里我尝试把update.zip放在: /data/user/0/update.zip,运行正常
代码示例:

public boolean has_file(){
    String path = "/data/user/0/update.zip";
    File file = new File(path);
    return file.exists();
}

public void installFirmware() throws GeneralSecurityException, IOException {
    String path = "/data/user/0/update.zip";
    final File file = new File(path);
    new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                RecoverySystem.verifyPackage(file, new RecoverySystem.ProgressListener() {
                    @Override
                    public void onProgress(int i) {
                        Log.e("TAGG","验证安装包进度:"+i);
                        if(i==100){
                            try{
                                RecoverySystem.installPackage(getActivity(),file);
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                    }
                },null);
            } catch (GeneralSecurityException e) {
                throw new RuntimeException(e);
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    }).start();
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值