鸿蒙HarmonyOS NEXT设备升级应用数据迁移流程
数据迁移是什么
什么是数据迁移,对用户来讲就是本地数据的迁移,终端设备从HarmonyOS 3.1 Release API 9及之前版本(单框架)迁移到HarmonyOS NEXT(双框架)后保证本地数据不丢失。例如,我在某APP上面是登录状态,从单框架升级到双框架打开APP后依旧是登录状态,这就是数据迁移,并不是云端数据的处理,是本地数据的处理。当然,这只是其中一个用户信息,除用户信息外还有一系列开发者用到的设备数据等等,需要迁移。
HarmonyOS NEXT提供了“数据迁移框架”和“备份恢复框架”,为开发者提供应用数据的迁移和转换能力。开发者完成适配,APK应用切换为HarmonyOS应用后,可继承原APK应用中适配HarmonyOS应用的数据。流程大概如下:

数据迁移机制
应用数据迁移任务需要执行的步骤包括:应用安装,数据迁移和数据恢复。
- 应用安装步骤:
- “数据迁移框架”向华为应用市场发送HarmonyOS应用下载和安装请求。
- 华为应用市场下载并安装HarmonyOS应用。
- 数据迁移步骤:
在HarmonyOS应用安装完成之后,“数据迁移框架”将应用沙箱数据从中间目录搬迁到备份恢复目录。
- 数据恢复步骤:
- 在应用数据搬迁到备份恢复目录后,“数据迁移框架”向“备份恢复框架”发送应用数据恢复请求。
- “备份恢复框架”拉起应用的“BackupExtensionAbility”独立进程,启动应用数据恢复。
- 应用通过“BackupExtensionAbility”从备份恢复目录加载APK应用的数据,处理后保存到HarmonyOS应用沙箱中,完成应用数据恢复。
- “备份恢复框架”在应用数据恢复完成后,清空备份恢复目录。

应用适配流程
迁移目录对应关系
开发者需要在HarmonyOS应用的代码中,实现“BackupExtensionAbility”,使应用接入到“备份恢复框架”中,完成应用数据的转换和迁移。后续HarmonyOS应用通过访问HarmonyOS应用沙箱获取应用的数据。
备份恢复目录如下表中所示:

APK应用沙箱目录与备份恢复目录映射关系

代码实现
创建BackupExtensionAbility,APP在BackupExtensionAbility中实现应用的数据转换和迁移逻辑。
import { BackupExtensionAbility, BundleVersion } from '@kit.CoreFileKit';const TAG = `BackupExtensionAbility`;/*** serviceExt进程入口*/
export default class BackupExtension extends BackupExtensionAbility {onBackup () {console.log(TAG,`onBackup ok`);}/*** 数据恢复处理接口。接口是同步接口,其内部所有的异步操作请进行同步等待。** @param bundleVersion 版本信息*/async onRestore (bundleVersion : BundleVersion): Promise<void> {console.log(TAG, `onRestore ok ${JSON.stringify(bundleVersion)}`);//bundleVersion.name的前缀为“0.0.0.0”时,表示终端设备从HarmonyOS升级到HarmonyOS NEXT数据迁移场景if (bundleVersion.name.startsWith("0.0.0.0")){// 在此处实现终端设备从HarmonyOS 4.x升级到HarmonyOS NEXT后,应用数据的转换和迁移// 涉及异步操作请进行同步等待console.log(TAG, `HarmonyOS to HarmonyOS NEXT scenario`);} else {// 在此处实现从HarmonyOS NEXT设备迁移到HarmonyOS NEXT设备后,应用数据的处理。无特殊要求,可以空实现// 涉及异步操作请进行同步等待console.log(TAG, `Other scenario`);}}
}
module.json5中配置
"extensionAbilities": [{"description": "DemoBackupExtension","icon": "$media:app_icon","name": "BackupExtensionAbility","srcEntry": "./ets/backupExtension/BackupExtension.ets", // 对应BackupExtension.ets在代码仓中的位置"type": "backup", // 类型需要选择backup"exported": false,"metadata": [ // 对应注册的元数据资源{"name": "ohos.extension.backup","resource": "$profile:backup_config"}]}
]
数据迁移结果验证
开发者验证
1、将单架构要迁移数据的APP数据通过Android Studio 按下面对应目录导出zip包,然后放到手机本地,或者登录华为账号放到我的云盘里面方便登录下载。


2、下载手动迁移工具 **MigrateTool ,**选择刚才导出的zip文件,再输入要迁入到的应用签名,点击启动迁移,迁移提示成功之后(注意如果迁移失败,可能是zip数据问题,根据上面目录排查)。打开APP验证即可功能。


)
QA端到端验证
如果是已经上架的应用,可以发布一个内测版本,然后审核通过后指定设备做线上验证。
- 当前开发者持有的终端设备为HarmonyOS NEXT。开发者在验证升级前,需要将设备从HarmonyOS NEXT回退到HarmonyOS。在应用适配完成并上架到华为应用市场之后,开发者需要联系华为方技术支撑人员提供版本,支持开发者将终端设备从HarmonyOS NEXT回退到HarmonyOS。系统回退的入口为:设置 > 通用 > 开发者模式 > 系统回退。
- 将终端设备回退到HarmonyOS后,需要预置APK应用的数据。在数据预置完成后,开发者需要联系华为方技术支撑人员提供版本,支持开发者将终端设备从HarmonyOS升级到HarmonyOS NEXT。系统更新的入口为:设置 > 系统和更新 > 软件更新。
- 终端设备成功从HarmonyOS升级到HarmonyOS NEXT,走过开机向导界面后,开始执行应用数据迁移。开发者请在应用数据迁移结束后,验证应该数据迁移的结果。
相关文章:
鸿蒙HarmonyOS NEXT设备升级应用数据迁移流程
数据迁移是什么 什么是数据迁移,对用户来讲就是本地数据的迁移,终端设备从HarmonyOS 3.1 Release API 9及之前版本(单框架)迁移到HarmonyOS NEXT(双框架)后保证本地数据不丢失。例如,我在某APP…...
利用 PCI-Express 交换机实现面向未来的推理服务器
在数据中心系统的历史上,没有比被 Nvidia 选为其 AI 系统的组件供应商更高的赞誉了。 这就是为什么新兴的互连芯片制造商 Astera Labs 感到十分高兴,因为该公司正在 PCI-Express 交换机、PCI-Express 重定时器和 CXL 内存控制器方面与 Broadcom 和 Marv…...
Python调用手机摄像头检测火焰烟雾的三种方法
方法1:使用IP摄像头应用 OpenCV 1. 在手机上安装IP摄像头应用(如IP Webcam for Android) 2. 配置应用并启动服务器 3. 在Python中使用OpenCV连接 import cv2 import numpy as np # 手机IP摄像头URL(替换为你的手机IP和端口…...
Python if else while for 学习笔记
一.if,else if语句用于根据条件执行代码块 else语句可与if语句结合,当if判断为假时执行else语句 x10 if x>5:print("x大于5") y3 if y>5:print("y大于5") else:print("y小于等于5")结果: 二.while循环…...
正则化是什么?
正则化(Regularization)是机器学习中用于防止模型过拟合(Overfitting)的一种技术,通过在模型训练过程中引入额外的约束或惩罚项,降低模型的复杂度,从而提高其泛化能力(即在未见数据上…...
搜索-BFS
马上蓝桥杯了,最近刷了广搜,感觉挺有意思的,广搜题类型都差不多,模板也一样,大家写的时候可以直接套模板 这里给大家讲一个比较经典的广搜题-迷宫 题目问问能否走到 (n,m) 位置,假设最后一个点是我们的&…...
《边缘计算风云录:FPGA与MCU的算力之争》
点击下面图片带您领略全新的嵌入式学习路线 🔥爆款热榜 88万阅读 1.6万收藏 文章目录 **第一章:边城烽烟——数据洪流压境****第二章:寒铁剑匣——FPGA的千机变****第三章:枯木禅杖——MCU的至简道****第四章:双生契…...
R-GCN-Modeling Relational Data with GraphConvolutional Networks(论文笔记)
CCF等级:B 发布时间:2018年6月 25年3月31日交 目录 一、简介 二、原理 1.整体 2.信息交换与更新 2.1基分解 2.2块对角矩阵 3.实体分类或链接预测 3.1实体分类 3.2链接预测 三、结论和未来工作 一、简介 RGCN通过允许不同关系类型之间的信息…...
蓝桥杯第十六届模拟赛——基础细节考频分析
文章目录 前言一、STL函数二、日期问题三、质数与约数四、基本常识总结 前言 一、STL函数 #include< cmath > 详解floor函数、ceil函数和round函数 1.floor() 功能:把一个小数向下取整如果数是2.2 ,那向下取整的结果就为2.000000如果数是-2.2 &…...
【C++初阶】----模板初阶
1.泛型函数 泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。 2.函数模板 2.1函数模板的概念 函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型…...
PyCharm操作基础指南
一、安装与配置 1. 版本选择 专业版:支持 Web 开发(Django/Flask)、数据库工具、科学计算等(需付费)。 社区版:免费,适合纯 Python 开发。 2. 安装步骤 访问 JetBrains 官网 下载对应版本。…...
Pycharm(七):几个简单案例
一.剪刀石头布 需求:和电脑玩剪刀石头布游戏 考察点:1.随机数;2.判断语句 import random # numrandom.randint(1,3) # print(num) # print(**30) #1.录入玩家手势 playerint(input(请输入手势:(1.剪刀 2.石头 3&…...
Android并发编程:线程池与协程的核心区别与最佳实践指南
1. 基本概念对比 特性 线程池 (ThreadPool) 协程 (Coroutine) 本质 Java线程管理机制 Kotlin轻量级并发框架 最小执行单元 线程(Thread) 协程(Coroutine) 创建开销 较高(需分配系统线程资源) 极低(用户态调度) 并发模型 基于线程的抢占式调度 基于协程的协作式调度 2. 核心差异…...
MySQL内存使用率高问题排查与解决方案:
目录标题 **一、问题现象****二、核心排查步骤****1. 参数检查****2. 内存使用分析****3. 存储过程/函数/视图检查****4. 操作系统级检查** **三、解决方案****1. 调整MySQL配置****2. 关闭透明大页(THP)****3. 优化查询与存储过程****4. 硬件与环境优化…...
gnvm切换node版本号
1. gnvm下载官网 GNVM - Node.js version manager on Windows by Go 2. 安装 2.1 不存在 Node.js 环境 下载并解压缩 gnvm.exe 保存到任意文件夹,并将此文件夹加入到环境变量 Path。 2.2 存在 Node.js 环境 下载并解压缩 gnvm.exe 保存到 Node.js 所在的文件夹。 2.…...
PyTorch 深度学习实战(29):目标检测与 YOLOv12 实战
在上一篇文章中,我们探讨了对比学习与自监督表示学习。本文将深入计算机视觉的核心任务之一——目标检测,重点介绍最新的 YOLOv12 (You Only Look Once v12) 算法。我们将使用 PyTorch 实现 YOLOv12 模型,并在 COCO 数据集上进行训练和评估。…...
Python爬虫:开启数据抓取的奇幻之旅(一)
目录 一、爬虫初印象:揭开神秘面纱 二、工欲善其事:前期准备 (一)Python 环境搭建 1.下载 Python 安装包: 2.运行安装程序: 3.配置环境变量(若自动添加失败)&#x…...
python下载m3u8格式视频
一、安装 m3u8库 pip install requests pip install requests m3u8 二、编码实现 import os import re import requests import subprocess# 下载ts文件 def down_ts_file(base_url, m3u8_url, download_dir):# 从m3u8文件中获取所有ts的分片名称信息response requests.get…...
【区块链安全 | 第五篇】DeFi概念详解
文章目录 DeFi1. DeFi 生态概览2. 去中心化交易所(DEX)2.1 AMM(自动做市商)模型2.2 订单簿模式(现货交易) 3. 借贷协议3.1 Aave3.2 使用闪电贷(Flash Loan) 4. 稳定币(St…...
【初探数据结构】归并排序与计数排序的序曲
💬 欢迎讨论:在阅读过程中有任何疑问,欢迎在评论区留言,我们一起交流学习! 👍 点赞、收藏与分享:如果你觉得这篇文章对你有帮助,记得点赞、收藏,并分享给更多对数据结构感…...
基于ruoyi快速开发平台搭建----超市仓库管理(修改记录1)
一、数据库的设计一定注意不要用关键字 数据库是同学设计的,但是在实践过程中,发现,生成的代码一直报错,结果发现数据库里面商品表里面的商品类别竟然设置成class, 注意:: class 是 Java 中的关键字&…...
《AI加持,SQL Server预测性维护全攻略》
在数字化时代,数据就是企业的生命线,而SQL Server作为一款应用广泛的关系型数据库管理系统,承载着企业海量的数据资产。但数据库运行过程中,故障就像隐藏在暗处的“定时炸弹”,随时可能引发数据丢失、业务中断等严重后…...
Java基础——面向对象
1.抽象Abstract:抽象类和抽象方法; 抽象类:不完整的类,就是抽象类:abstract class 类名; 抽象方法:只有声明,没有实现的方法; abstract 返回值类型 方法名(参数&#…...
Springboot学习笔记3.20
目录 1.实战篇第一课 我们将会在本次实战中学习到哪些知识点? 开发模式和环境搭建: 注册接口 1.Lombok 2.开发流程 1.controller层,这个层会指明访问路径和要执行的逻辑: 2.我们把返回结果根据接口文档包装成一个类result&a…...
Ubuntu和Windows实现文件互传
1.开启Ubuntu下的FTP服务: (1)终端输入: sudo apt-get install vsftpd(2)安装完成后: 终端输入: /etc 是 Linux 系统的全局配置文件目录,存储系统和应用程序的配置信息…...
java面向对象从入门到入土
面向对象进阶 (写程序的套路) 面向:拿,找 对象:能干活的东西 面向对象编程:拿东西过来做对应的事情 (写程序的套路) 面向:拿,找 对象:能干活的东西 面向对象编程:拿东西过来做对应的事情 重点学习:学习已有对象并使用,学习如何自己设计对象并使用 设计对…...
linux ACL权限控制之用户权限控制程序设计
linux中的ACL(Access Control List,访问控制列表)是一种比传统UNIX权限更细粒度的权限控制机制,允许为文件和目录设置更为具体的用户和组权限。本文介绍使用acl命令和程序api对文件进行更精细的用户权限控制。 1. 命令行示例 使…...
Java多线程与JConsole实践:从线程状态到性能优化!!!
目录 一、前言二、JConsole 使用教程二、线程的基本状态2.1新建状态(New)2.2就绪状态(Ready)2.3运行状态(Running)2.4 阻塞状态(Blocked)2.5. 等待状态(Waitingÿ…...
从入门到精通:SQL注入防御与攻防实战——红队如何突破,蓝队如何应对!
引言:为什么SQL注入攻击依然如此强大? SQL注入(SQL Injection)是最古老且最常见的Web应用漏洞之一。尽管很多公司和组织都已经采取了WAF、防火墙、数据库隔离等防护措施,但SQL注入依然在许多情况下能够突破防线&#…...
Stable Diffusion vue本地api接口对接,模型切换, ai功能集成开源项目 ollama-chat-ui-vue
1.开启Stable Diffusion的api服务 编辑webui-user.bat 添加 –api 开启api服务,然后保存启动就可以了 2.api 文档地址 http://127.0.0.1:7860/docs3. 文生图 接口 地址 /sdapi/v1/txt2img //post 请求入参 {enable_hr: false, // 开启高清hrdenoising_stre…...
