如何在 HarmonyOS Next 中实现自定义 BackupExtensionAbility

OpenHarmony实战开发-通过BackupExtensionAbility实现应用接入数据备份恢复 BackupExtensionAbility,是Stage模型中扩展组件ExtensionAbility的派生类。开发者可以通过修改配置文件定制备份恢复框架的行为,包括是否允许备份恢复,备份哪些文件等。 阅读详情

本文旨在深入探讨华为鸿蒙HarmonyOS Next系统(截止目前API12)的技术细节,基于实际开发实践进行总结。
主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。
本文为原创内容,任何形式的转载必须注明出处及原作者。


BackupExtensionAbility 是 HarmonyOS Next 系统中用于实现应用数据备份恢复的核心组件。通过自定义 BackupExtensionAbility 类并实现 onBackup 和 onRestore 方法,开发者可以定义应用在数据备份和恢复过程中需要执行的操作。本文将详细介绍如何在 HarmonyOS Next 中注册和配置 BackupExtensionAbility,并展示其自定义实现的基本流程。


一、BackupExtensionAbility 的注册与配置文件说明

在开发应用的备份和恢复功能之前,需先在配置文件中注册 BackupExtensionAbility,使应用能够正确地接入 HarmonyOS Next 的备份恢复框架。

1. 配置 module.json5 文件

在 module.json5 配置文件中,通过配置 extensionAbilities 字段来注册 BackupExtensionAbility,使系统识别该类为备份恢复组件。具体配置项如下:

  • type:设置为 "backup" 表示该扩展组件为备份恢复类型。
  • metadata:添加 "ohos.extension.backup" 项目来指定备份相关的资源。
  • srcEntry:指定 BackupExtensionAbility 类文件的路径。
{
  "extensionAbilities": [
    {
      "description": "$string:BackupExtensionAbilityDesc",
      "icon": "$media:app_icon",
      "name": "BackupExtensionAbility",
      "type": "backup",
      "exported": false,
      "metadata": [
        {
          "name": "ohos.extension.backup",
          "resource": "$profile:backup_config"
        }
      ],
      "srcEntry": "./ets/backupExtension/BackupExtension.ets"
    }
  ]
}

2. 配置备份资源文件

在 resources/base/profile 文件夹中,添加与 module.json5 中 metadata.resource 字段一致的资源文件。此文件用于定义哪些应用数据和资源需要备份、是否允许恢复等配置。

以下为资源配置文件 backup_config.json 的示例:

{
  "allowToBackupRestore": true,
  "includes": [
    "/data/storage/el2/base/files/"
  ],
  "excludes": [
    "/data/storage/el2/base/files/cache/"
  ],
  "fullBackupOnly": false
}

该文件中的关键字段解释如下:

  • allowToBackupRestore:是否允许备份和恢复。
  • includes:需要备份的文件或文件夹列表。
  • excludes:无需备份的文件或文件夹列表。
  • fullBackupOnly:是否进行全量备份。

二、自定义 BackupExtensionAbility 类

配置完成后,接下来创建并自定义 BackupExtensionAbility 类,主要通过重写 onBackup 和 onRestore 方法来定义具体的备份和恢复逻辑。

  1. onBackup:该方法用于实现数据备份逻辑。可在此方法中指定备份的文件路径、数据格式等。
  2. onRestore:该方法用于实现数据恢复逻辑。在设备升级或应用重装后,系统会自动调用此方法,将备份目录中的数据还原到应用的沙箱目录。

以下是一个基础的 BackupExtensionAbility 类实现:

import { BackupExtensionAbility, BundleVersion } from '@kit.CoreFileKit';

const TAG = `BackupExtensionAbility`;

// 自定义 BackupExtensionAbility 类
export default class BackupExtension extends BackupExtensionAbility {
    // 数据备份方法
    onBackup() {
        console.log(TAG, `onBackup started, performing data backup...`);
        // 在此处编写数据备份逻辑,如指定备份路径和格式
    }

    // 数据恢复方法
    async onRestore(bundleVersion: BundleVersion): Promise<void> {
        console.log(TAG, `onRestore invoked with bundle version: ${JSON.stringify(bundleVersion)}`);
        if (bundleVersion.name.startsWith("0.0.0.0")) {
            console.log(TAG, `Performing data migration from HarmonyOS to HarmonyOS NEXT`);
            // 数据迁移处理逻辑
        } else {
            console.log(TAG, `Performing data restoration for other versions`);
        }
    }
}

三、备份和恢复数据的映射与控制

在 HarmonyOS Next 中,应用的数据通常存放于应用沙箱目录,而备份恢复框架会将这些数据迁移至备份目录。通过配置 includes 和 excludes 字段,开发者可灵活控制哪些数据需要备份,以及备份的数据恢复路径。

1. 数据目录映射

在应用数据备份中,以下几种常见目录的映射关系为:

应用数据目录备份恢复目录获取方式
/data/user_de/{userId}/{包名}//data/storage/el1/base/.backup/restore/{包名}/de/contextConstant.AreaMode.EL1
/data/user/{userId}/{包名}//data/storage/el2/base/.backup/restore/{包名}/ce/contextConstant.AreaMode.EL2
/data/media/{userId}/Android/data/{包名}//data/storage/el2/base/.backup/restore/{包名}/A/data/contextConstant.AreaMode.EL2

2. 数据存储与还原路径控制

通过 BackupExtensionAbility 的上下文对象 this.context,可以直接获取备份和恢复目录。开发者在实现 onBackup 和 onRestore 时,可以使用以下代码来读取和还原备份数据:

const deSourcePath = `${this.context.backupDir}restore/{包名}/de/`;
const ceSourcePath = `${this.context.backupDir}restore/{包名}/ce/`;

四、示例代码:onBackup 与 onRestore 的实现

以下代码示例展示了如何在 onBackup 和 onRestore 方法中实现数据备份和恢复逻辑。此示例演示了备份指定文件夹的数据,并在数据恢复过程中对不同系统版本执行特定的恢复操作。

import { BackupExtensionAbility, BundleVersion } from '@kit.CoreFileKit';
import { hilog } from '@kit.PerformanceAnalysisKit';

const TAG = `FileBackupExtensionAbility`;

// BackupExtensionAbility 自定义实现
export default class BackupExtension extends BackupExtensionAbility {
    // 数据备份逻辑
    async onBackup(): Promise<void> {
        hilog.info(0x0000, TAG, `onBackup invoked, starting data backup process...`);
        
        // 获取备份目录
        const backupPath = this.context.backupDir + "files/";
        try {
            // 执行备份逻辑
            hilog.info(0x0000, TAG, `Backing up data to path: ${backupPath}`);
            // 假设备份数据至指定目录,开发者可在此实现文件复制、打包等操作
        } catch (error) {
            hilog.error(0x0000, TAG, `Error during backup: ${error.message}`);
        }
    }

    // 数据恢复逻辑
    async onRestore(bundleVersion: BundleVersion): Promise<void> {
        hilog.info(0x0000, TAG, `onRestore invoked for bundle version: ${JSON.stringify(bundleVersion)}`);

        if (bundleVersion.name.startsWith("0.0.0.0")) {
            hilog.info(0x0000, TAG, `HarmonyOS to HarmonyOS NEXT upgrade detected, handling data migration.`);
            // 实现数据迁移逻辑
            const restorePath = `${this.context.backupDir}restore/{包名}/de/`;
            hilog.info(0x0000, TAG, `Restoring data from path: ${restorePath}`);
            // 从恢复目录中加载数据至沙箱目录
        } else {
            hilog.info(0x0000, TAG, `Standard restore for other versions.`);
        }
    }
}

在上述代码中:

  • onBackup 方法中定义了备份路径,并将应用数据存储到备份目录中。
  • onRestore 方法根据 bundleVersion 执行恢复逻辑,支持从 HarmonyOS 旧版本到 HarmonyOS NEXT 的数据迁移。

总结

通过自定义 BackupExtensionAbility 类,HarmonyOS Next 的备份恢复框架可以灵活处理应用数据的备份与恢复。咱们可以根据业务需求设置数据的备份路径、过滤条件,并在数据恢复阶段执行自定义的数据迁移策略。

如何使用命令行对RK开发板进行OpenHarmony版本烧录? 开发版烧录 阅读详情

相关推荐

HarmonyOS Next开发学习手册——应用数据备份恢复

用户在使用应用的过程中,会产生对应的应用数据,如配置信息、业务数据等。为了保证用户数据不会因为应用升级、迁移等操作而丢失,应用需要接入数据备份恢复。在开发前,需要先了解ExtensionAbility组件,建议参考 ExtensionAbility组件概述。BackupExtensionAbility是Stage模型中扩展组件ExtensionAbility的派生类,用于提供备份及恢复应用数据的能力。它是一种无界面的扩展组件,随着备份恢复任务的启动而运行,随着备份恢复任务的结束而退出。

maniuT的博客 2008

HarmonyOS实战开发-应用接入数据备份恢复

应用接入数据备份恢复需要通过配置BackupExtensionAbility实现。

2401_82546228的博客 1938

【鸿蒙实战开发】—— 应用数据迁移适配指导指南(二)

开发者可以在BackupExtension.ts文件中自定义类继承BackupExtensionAbility,通过重写其中的onBackup和onRestore方法,自定义应用数据的转换和迁移。开发者需要在应用配置文件module.json5中进行注册,其中注册类型type需要设置为backup,元数据信息metadata需要新增一个name为ohos.extension.backup的条目。单个应用设定的最长数据迁移时间为十五分钟,超过十五分钟还未完成应用数据迁移的应用,应用数据迁移会失败。

2401_88547687的博客 1159

鸿蒙开发进阶(HarmonyOS )BackupExtensionAbility的实现

开发者可以在BackupExtension.ts文件中自定义类继承BackupExtensionAbility,通过重写其中的onBackup和onRestore方法,自定义应用数据的转换和迁移。终端设备从HarmonyOS升级到HarmonyOS NEXT数据迁移场景中,onRestore回调接口中的参数bundleVersion.name的前缀为“0.0.0.0”。

m0_67143533的博客 949

HarmonyOS NEXT升级必看:APK转HAP数据迁移全攻略(附BackupExtensionAbility代码)

本文详细解析了HarmonyOS NEXT升级过程中,如何将APK应用数据平滑迁移至HAP格式。核心在于利用系统的数据迁移框架,通过自定义BackupExtensionAbility实现沙箱数据、配置文件及数据库的结构转换与路径适配,确保用户数据在系统升级后无缝衔接,提升应用体验。

weixin_29247219的博客 399

HarmonyOS数据迁移避坑指南:BackupExtensionAbility的正确使用姿势

本文深入解析了HarmonyOS应用从APK升级到HAP时,如何正确使用BackupExtensionAbility进行数据迁移。文章详细阐述了迁移流程时序、关键目录权限,并提供了SQLite数据库结构升级、大文件流式处理及异常回滚等实战策略与避坑指南,确保用户数据完整性与应用升级流畅度。

weixin_29310605的博客 353

如何在 HarmonyOS NEXT 中实现自定义 BackupExtensionAbility

通过自定义 BackupExtensionAbility 类,HarmonyOS NEXT 的备份恢复框架可以灵活处理应用数据的备份与恢复。在 HarmonyOS NEXT 中,应用的数据通常存放于应用沙箱目录,而备份恢复框架会将这些数据迁移至备份目录。在开发应用的备份和恢复功能之前,需先在配置文件中注册 BackupExtensionAbility,使应用能够正确地接入 HarmonyOS NEXT 的备份恢复框架。在设备升级或应用重装后,系统会自动调用此方法,将备份目录中的数据还原到应用的沙箱目录。

xinyuan82的博客 353

HarmonyOS 数据迁移实战:BackupExtensionAbility 深度解析与应用适配

本文深度解析了HarmonyOS应用从APK升级至HAP格式时,如何利用BackupExtensionAbility实现用户数据的无缝迁移。文章详细剖析了其作为核心“数据搬运工”的工作原理与迁移流程,并提供了从配置文件声明到核心恢复逻辑实现的完整开发适配指南,帮助开发者确保用户升级体验丝滑流畅。

weixin_29292431的博客 505

从HarmonyOS升级到HarmonyOS NEXT-环信SDK数据迁移

​本文通过使用环信 SDK 介绍如何从 HarmonyOS 系统升级到 NEXT 系统时,进行应用数据的迁移适配。

Heijinbaitu的博客 3563

鸿蒙5.0进阶开发:应用数据备份恢复-应用接入数据备份恢复

应用接入数据备份恢复需要通过BackupExtensionAbility实现。

AyomQAQ的博客 1833

GEOS-Chem笔记——模式下载安装+驱动数据+运行流程

看过我博客的会发现我写了很多CESM的笔记,但是说实话,平时科研我其实更多时候是GEOS-Chemuser。之所以写了很多CESM笔记,其实是因为不会,就边学边写。然后GEOS-Chem已经用比较熟了,所以也没想过做笔记啥的。但是我发现越来越多朋友私信我各种CESM问题,我觉得我可能给大家营造了一种我是CESM达人的错觉。感觉自己有点跑偏了呢。公平起见,我觉得我有必要补充点GEOS-Chem笔记。 GEOS-Chem是研究大气化学的人常用的大气化学传输模式,在全世界范围的大气化学研究组中被广泛使用。不过.

砍柴姑娘Jourosy的博客 1万+

HarmonyOS Next 应用数据备份基础知识

数据备份是指将应用的关键信息、用户数据等存储在安全的备份目录中,以便在应用重装或设备迁移时进行恢复。备份目录映射:系统为每个应用在内部存储空间中映射一个独立的备份恢复目录,确保不同应用之间的数据不会相互干扰。数据备份场景:包括应用卸载重装、设备升级迁移等。HarmonyOS Next 支持基于 OTA 升级后的自动数据恢复。安全隔离机制:HarmonyOS 提供了应用沙箱,确保备份数据的安全性,防止未授权的应用访问数据。在 HarmonyOS Next 的数据备份框架中,

same4869的博客 2826

机载电脑与飞控串口通信(实测读取飞控IMU数据)《一、香橙派5max启动串口UART通信与飞控板通信,一次必通!》《二、allspark1与PIX6C通信踩坑及出坑》《三、orinnx载板与飞控通信》

机载电脑与飞控串口通信(实测读取飞控IMU数据)《一、香橙派5max启动串口UART通信与雷迅v5nano飞控板通信,一次必通!》《二、阿木机载电脑allspark1与PIX6C通信踩坑及出坑》,还有如何打开飞控串口以及如何提高飞控IMU频率。

2402_82745259的博客 3469

HarmonyOS实战开发:@ohos.application.BackupExtensionAbility (备份恢复扩展能力)

BackupExtensionAbility模块提供备份恢复服务相关扩展能力,为应用提供扩展的备份恢复能力。

2401_84194030的博客 995

保姆级教程:在LKD3588开发板上为RK3588添加SC2210摄像头驱动(含完整DTS配置)

本文提供了一份详细的教程,指导如何在LKD3588开发板上为RK3588处理器添加SC2210摄像头驱动,包括完整的DTS配置和内核编译步骤。教程涵盖了环境准备、驱动文件添加、DTS配置详解、内核编译与烧录、驱动测试以及常见问题排查,帮助开发者快速实现SC2210传感器在RK3588平台上的集成与优化。

weixin_42641741的博客 479

STM32 FOC电机控制:手把手教你用CubeMX配置TIM1中心对齐PWM(含代码避坑)

本文详细解析了STM32 FOC电机控制中TIM1中心对齐PWM的配置方法,涵盖CubeMX图形化设置、HAL库代码调用及常见问题排查。特别针对L6230Q驱动芯片的使能逻辑和死区时间配置提供实用指南,帮助开发者高效实现无刷电机的高性能控制。

weixin_27027459的博客 442

【鸿蒙next开发】文件基础服务:@ohos.application.BackupExtensionAbility (备份恢复扩展能力)

摘要:本文详细介绍了鸿蒙HarmonyOS的BackupExtensionAbility模块,该模块提供应用数据备份恢复的扩展能力。

m0_73088370的博客 724

TI理想二极管在冗余电源中应用实例

深入探讨理想二极管如何提升冗余电源系统的效率与可靠性,通过实际应用案例展示其在电流隔离和自动切换中的优势,帮助工程师优化电源架构设计。

weixin_30653091的博客 987

鸿蒙 NEXT适配教程 | 用户数据迁移适配

经过“应用分析 -> 应用适配(含适配)-> 应用上架 -> 端到端验证”几个步骤最终完成应用数据的迁移,本文主要介绍的是 应用分析 和应用适配(含验证) 部分的介绍。希望本文可以帮助到正在和即将进行数据迁移的同学们。如果有需要探讨的地方可以在下方留言。

huan132456765的博客 5664

ROS 之 使用yocs_velocity_smoother对机器人速度进行限制

yocs_velocity_smoother是一个速度、加速度限制器,用来防止robot navigation的速度/转速过快,加速度/快减速过大。Bound incoming velocity messages according to robot velocity and acceleration limits. The velocity smoother nodelet runs together with the kobuki_node to apply robot’s velocity and .

https://shixuebin.gitee.io/hexo-blog/ 2621

13、基于RBF的自适应鲁棒控制与反步控制方法及实现

本文介绍了基于RBF神经网络的自适应鲁棒控制与反步控制方法,详细阐述了控制系统的程序结构、核心算法及实现流程。通过Simulink搭建仿真系统,利用RBF网络逼近系统中的不确定非线性函数,并结合Lyapunov稳定性理论设计控制律,实现了对倒立摆等复杂非线性系统的高精度跟踪控制。文章还提供了完整的MATLAB/Simulink代码示例和仿真结果分析,验证了该方法的有效性与鲁棒性,为实际工程应用提供了可行的技术路径。

ol789012的博客 87

鸿蒙开发进阶(HarmonyOS )应用适配流程

适配流程包括:适配准备、应用适配、开发者自验证、应用上架和端到端验证。

m0_67143533的博客 1852

把慢点掰开看:在 SAP HANA 中启用 SQL 优化耗时跟踪 SqlOptTime 的实战指南

摘要:SAP HANA 性能排查中,常出现SQL查询时快时慢的现象,表面看似执行问题,实则是编译阶段耗时过长。通过SQL优化跟踪工具SqlOptStep和SqlOptTime,可精准区分编译与执行时间。SqlOptStep展示优化树变化过程,而SqlOptTime则记录各阶段耗时,帮助定位问题根源。启用SqlOptTime需配置traceprofile,建议限定特定用户以减少系统负载。实际案例显示,报表响应慢常由计算视图编译(CeQo)导致,而非执行阶段问题。解决方案包括调整计算视图展开方式或优化基础视图结

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1006

HarmonyOS NEXT - 应用数据备份恢复

用户在使用应用的过程中,会产生对应的应用数据,如配置信息、业务数据等。为了保证用户数据不会因为应用升级、迁移等操作而丢失,应用需要接入数据备份恢复。在开发前,需要先了解ExtensionAbility组件,建议参考ExtensionAbility组件概述。BackupExtensionAbility是Stage模型中扩展组件ExtensionAbility的派生类,用于提供备份及恢复应用数据的能力。它是一种无界面的扩展组件,随着备份恢复任务的启动而运行,随着备份恢复任务的结束而退出。

u011143672的博客 4779

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

HarmonyOS 应用迁移实战指南

《HarmonyOS应用迁移全景指南:从Android到鸿蒙的完整路径》 摘要:随着HarmonyOS NEXT放弃安卓兼容性,开发者需将应用迁移至ArkTS+ArkUI技术栈。本文系统梳理迁移流程:1)战略评估阶段需分析代码规模(小/中/大项目分别对应重写、核心复用或渐进迁移策略)及鸿蒙特有能力需求;2)环境配置需DevEco Studio Beta3+和HarmonyOS NEXT真机;3)数据迁移为核心难点,需通过BackupExtensionAbility实现沙箱数据转换;4)代码迁移建议按&quo

油墨香^-^的博客 570

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

鸿蒙0基础学习【应用数据迁移适配指导】文件基础服务

HarmonyOS NEXT应用数据迁移适配指南 本文介绍了HarmonyOS NEXT开发者进行应用数据迁移适配的环境要求与操作流程。开发者需使用特定版本的迁移调试工具、DevEco Studio和Compatible SDK进行开发适配。适配流程主要包括: 实现BackupExtensionAbility,通过重写onBackup和onRestore方法处理数据迁移,特别注意onRestore是同步接口且需处理"0.0.0.0"前缀的系统升级场景; 配置backup_config.j

zhenggaoxiao232的博客 1470

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

上一篇: HarmonyOS Next 应用数据备份基础知识
下一篇: 备份文件夹与数据目录映射在 HarmonyOS 中的管理
SameX-4869
博客等级 码龄18年 3354粉丝 657原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值