环境要求
开发者需要通过OTA升级的形式,将终端设备升级到HarmonyOS NEXT Developer Beta1。
工具要求
工具 | 版本 | 说明 |
---|---|---|
“迁移调试”工具 | 205.0.0.115 | 模拟验证数据迁移 |
DevEco Studio | DevEco Studio NEXT Developer Beta1 | 请参考: DevEco Studio使用指南 |
Compatible SDK | 5.0.0(12) | 请参考: 版本说明 |
创建新工程
本章节从创建新工程开始,指导开发者接入“备份恢复框架”,已经创建工程的开发者可以跳过本节。
- 打开DevCco Studio编译器,在菜单栏点击File**** >**** New**** >**** Create Project,创建新工程。
- 在创建工程界面选择创建Empty Ability工程,单击Next按钮进入下一步。
- 在Configure Your Project界面,根据开发者的需求,创建自己的工程,Compatible SDK栏请选择:5.0.0(12)。选择完毕之后,点击Finish按钮完成工程创建。
- 工程创建成功之后进入如下界面。
BackupExtensionAbility的实现
开发者可以在BackupExtension.ts文件中自定义类继承BackupExtensionAbility,通过重写其中的onBackup和onRestore方法,自定义应用数据的转换和迁移。终端设备从HarmonyOS升级到HarmonyOS NEXT数据迁移场景中,onRestore回调接口中的参数bundleVersion.name的前缀为“0.0.0.0”。下面的代码展示了一个空实现,应用的数据转换和迁移逻辑,请在指定位置填充实现。
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 {
console.log(TAG, `onRestore ok ${JSON.stringify(bundleVersion)}`);
if (bundleVersion.name.startsWith("0.0.0.0")){
// 在此处实现终端设备从HarmonyOS 4.0升级到HarmonyOS NEXT后,应用数据的转换和迁移
// 涉及异步操作请进行同步等待
console.log(TAG, `HarmonyOS to HarmonyOS NEXT scenario`);
} else {
// 在此处实现从HarmonyOS NEXT设备迁移到HarmonyOS NEXT设备后,应用数据的处理。无特殊要求,可以空实现
// 涉及异步操作请进行同步等待
console.log(TAG, `Other scenario`);
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
注意:
onRestore 接口是同步接口,其内部所有的异步操作请进行同步等待。
以下步骤以空工程为例,介绍如何实现BackupExtensionAbility:
- 在entry/src/main/ets/目录下,点击 New > Directory 创建backupExtension目录。
-
点击entry/src/main/ets/****backupExtension/目录,点击 New > File 创建BackupExtension.ets文件。
[图片上传失败…(image-d3cd06-1721802948418)]
-
参考示例代码实现BackupExtensionAbility,下图的例子以空实现为例。
注意
单个应用设定的最长数据迁移时间为十五分钟,超过十五分钟还未完成应用数据迁移的应用,应用数据迁移会失败。
APK应用沙箱目录与备份恢复目录映射关系见下表中所示:
APK应用沙箱目录 | 备份恢复目录 | 备份恢复目录获取方式 |
---|---|---|
/data/user_de/{userId}/{APK包名}/ | data/storage/el1/base/.backup/restore/{APK包名}/de/ | this.context.area = contextConstant.AreaMode.EL1; |
let deSourcePath = this.context.backupDir + “restore/{APK包名}/de/” | ||
/data/user/{userId}/{APK包名}/ | /data/storage/el2/base/.backup/restore/{APK包名}/ce/ | his.context.area = contextConstant.AreaMode.EL2; |
let ceSourcePath = this.context.backupDir + “restore/{APK包名}/ce/” | ||
/data/media/{userId}/Android/data/{APK包名}/ | /data/storage/el2/base/.backup/restore/{APK包名}/A/data/ | this.context.area = contextConstant.AreaMode.EL2; let dataSourcePath = this.context.backupDir + “restore/{APK包名}/A/data/” |
/data/media/{userId}/Android/obb/{APK包名}/ | /data/storage/el2/base/.backup/restore/{APK包名}/A/obb/ | this.context.area = contextConstant.AreaMode.EL2; let obbSourcePath = this.context.backupDir + “restore/{APK包名}/A/obb/” |
元数据资源配置文件适配
开发者通过元数据资源配置文件,启用备份恢复,并定义备份恢复框架需要传输的文件。下面的例子就展示了一个元数据资源配置文件内容:
{
"allowToBackupRestore": true,
"extraInfo": {
"supportScene": [
"hmos2next"
]
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
以下步骤以空工程为例,介绍如何配置元数据资源文件:
- 在entry/src/main/resources/base/****profile/目录下,点击 New > File 创建backup_config.json文件。
- 参示例示例代码实现元数据资源文件配置,实现如下图。
module.json5适配
开发者需要在应用配置文件module.json5中进行注册,其中注册类型type需要设置为backup,元数据信息metadata需要新增一个name为ohos.extension.backup的条目。下面的例子就展示了一个完整的BackupExtensionAbility配置文件:
"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
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
注意:
extensionAbilities需要配置在entry内的module.json5才能正常访问。
以下步骤以空工程为例,介绍如何配置module.json5文件:
- 开发者需要在entry内的module.json5里面进行注册。参考示例代码实现元数据资源文件配置,实现如下图。
鸿蒙全栈开发全新学习指南
有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以要有一份实用的鸿蒙(HarmonyOS NEXT)学习路线与学习文档用来跟着学习是非常有必要的。
针对一些列因素,整理了一套纯血版鸿蒙(HarmonyOS Next)全栈开发技术的学习路线,包含了鸿蒙开发必掌握的核心知识要点,内容有(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、WebGL、元服务、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、OpenHarmony驱动开发、系统定制移植等等)鸿蒙(HarmonyOS NEXT)技术知识点。
本路线共分为四个阶段:
第一阶段:鸿蒙初中级开发必备技能
第二阶段:鸿蒙南北双向高工技能基础:gitee.com/MNxiaona/733GH
第三阶段:应用开发中高级就业技术
第四阶段:全网首发-工业级南向设备开发就业技术:gitee.com/MNxiaona/733GH
《鸿蒙 (Harmony OS)开发学习手册》(共计892页)
如何快速入门?
1.基本概念
2.构建第一个ArkTS应用
3.……
开发基础知识:gitee.com/MNxiaona/733GH
1.应用基础知识
2.配置文件
3.应用数据管理
4.应用安全管理
5.应用隐私保护
6.三方应用调用管控机制
7.资源分类与访问
8.学习ArkTS语言
9.……
基于ArkTS 开发
1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
16.……
鸿蒙开发面试真题(含参考答案):gitee.com/MNxiaona/733GH
鸿蒙入门教学视频:
美团APP实战开发教学:gitee.com/MNxiaona/733GH
写在最后
- 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
- 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
- 关注小编,同时可以期待后续文章ing?,不定期分享原创知识。
- 想要获取更多完整鸿蒙最新学习资源,请移步前往小编:
gitee.com/MNxiaona/733GH



评论记录:
回复评论: