请教下, OpenHarmony 支持将 OTA 包下载到本地然后通过调用 update.LocalUpdater 的 applyNewVersion 的方法进行升级吗?
我通过 hdc 将 OTA 包拷贝到设备的 /data/updater 目录下,然后通过调用 applyNewVersion 接口进行升级,可以升级成功。
this.localUpdater.applyNewVersion([{
fileType: update.ComponentType.OTA,
filePath: "/data/updater/updater_full.zip",
}])
如果我将 OTA 包放到应用目录下(/data/app/el2/0/base/<PackageName>/files) ,上面的 filePath 传入对应的路径,调用 applyNewVersion 时无法正常升级并且提示:updaterkits.cpp 238 : updaterkits: xxxxx/updater_full.zip is not readable。
另外我想请教下,OTA 包有方法可以直接下载到公共目录吗,比如下载到 /data/updater 目录,现在尝试往 data/updater 目录下写会提示13900002 No such file or directory或者无权限。
我在ohos4.0上已验证OK,第三方APP可以进行本地升级,(参考https://laval.csdn.net/user/discuss/67e20d0c45a25f3de59ec039)你是在哪个版本环境
就本地升级而言,根据你的现象可以分为几个问题:
1.APP如何将OTA包放在公共目录,如/data/updater?
需要配置沙箱权限/system/etc/sandbox/appdata-sandbox.json,使得APP能访问/data/updater
2.APP如何用/data/updater/*.zip进行本地升级?
参考上述链接demo 代码,与问题1独立开,手动将zip copy到/data/updater。另外如果使用applyNewVersion()接口本地升级,需修改update_service_local_updater.cpp将默认sd卡升级流程改为强制升级模式。
印象里目录应该是 data/update/ota_package/
