首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

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

  • 25-02-22 07:01
  • 2547
  • 13250
blog.csdn.net

概述

用户在使用应用的过程中,会产生对应的应用数据,如配置信息、业务数据等。为了保证用户数据不会因为应用升级、迁移等操作而丢失,应用需要接入数据备份恢复。

在开发前,需要先了解ExtensionAbility组件,建议参考 ExtensionAbility组件概述 。

BackupExtensionAbility是Stage模型中扩展组件ExtensionAbility的派生类,用于提供备份及恢复应用数据的能力。它是一种无界面的扩展组件,随着备份恢复任务的启动而运行,随着备份恢复任务的结束而退出。

不同应用所需实现的场景不同,分为:

  • 应用接入数据备份恢复 :应用均可以接入数据备份恢复,在接入后,应用可通过修改配置文件定制备份恢复框架的行为,包括是否允许备份恢复、备份哪些数据。

应用本身无法触发数据的备份和恢复,仅能进行备份恢复的配置。

应用触发数据备份恢复(仅对系统应用开放)

接入数据备份恢复

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

BackupExtensionAbility,是 Stage模型 中扩展组件 ExtensionAbility 的派生类。开发者可以通过修改配置文件定制备份恢复框架的行为,包括是否允许备份恢复,备份哪些文件等。

接口说明

备份恢复扩展能力API的接口使用指导请参见 BackupExtensionAbility API参考 和 BackupExtensionContext API参考 。

约束与限制

  • 当备份恢复时,所有待备份文件及目录的路径不得超过4095字节,否则将导致未定义行为。
  • 当备份目录时,应用进程必须拥有读取该目录及其所有子目录的权限(DAC中的r),否则将导致备份失败。
  • 当备份文件时,应用进程必须拥有搜索该文件所有祖父级目录的权限(DAC中的x),否则将导致备份失败。

开发步骤

  1. 在应用配置文件module.json5中注册extensionAbilities相关配置

新增"extensionAbilities"字段,其中注册类型"type"设置为"backup",元数据信息 “metadata” 新增一个"name"为"ohos. extension. backup"的条目。

BackupExtensionAbility配置文件示例:

{
    "extensionAbilities": [
        {
            "description": "$string:ServiceExtAbility",
            "icon": "$media:icon",
            "name": "BackupExtensionAbility",
            "type": "backup",
            "exported": false,
            "metadata": [
                {
                    "name": "ohos.extension.backup",
                    "resource": "$profile:backup_config"
                }
            ],
            // 在BackupExtension.ets文件里自定义继承BackupExtensionAbility,重写其中的onBackup/onBackupEx和               // onRestore/onRestoreEx方法,推荐使用onBackupEx/onRestoreEx。
            // 如果没有特殊要求可以空实现,则备份恢复服务会按照统一的备份恢复数据规则进行备份恢复。
            "srcEntry": "./ets/BackupExtension/BackupExtension.ets", 
        }      
    ]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  1. 新增元数据资源配置文件

    在元数据资源配置文件中,定义备份恢复时需要传输的文件。元数据资源配置文件名称需要与module.json5中"metadata.resource"名称保持一致,其保存位置在工程的resources/profile文件夹下。

元数据资源配置文件示例:

{
    "allowToBackupRestore": true,
    "includes": [
        "/data/storage/el2/base/files/users/"
    ],
    "excludes": [
        "/data/storage/el2/base/files/users/hidden/"
    ],
    "fullBackupOnly": false,
    "restoreDeps": "",
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  1. 开发者可以在BackupExtension.ets文件中自定义类继承的BackupExtensionAbility,通过重写其onBackup/onBackupEx和onRestore/onRestoreEx方法,使其达到在备份预加工应用数据或者在恢复阶段加工待恢复文件。

如果没有特殊要求可以空实现,则备份恢复服务会按照统一的备份恢复数据规则进行备份恢复。

下面的示例展示了一个空实现的BackupExtension.ets文件。

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

const TAG = `FileBackupExtensionAbility`;
export default class BackupExtension extends  BackupExtensionAbility {
  async onBackup ()   {
    hilog.info(0x0000, TAG, `onBackup ok`);
  }

  async onRestore (bundleVersion : BundleVersion) {
    hilog.info(0x0000, TAG, `onRestore ok ${JSON.stringify(bundleVersion)}`);
    hilog.info(0x0000, TAG, `onRestore end`);
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

元数据资源配置文件说明

属性名称数据类型必填含义
allowToBackupRestore布尔值是是否允许备份恢复,默认为false。
includes字符串数组否应用沙箱中需要备份的文件和目录。
当模式串以非/开始时,表示一个相对于根路径的相对路径。
当includes已配置时,备份恢复框架会采用开发者配置的模式串,否则将会采用下述代码段内容作为默认值。
excludes字符串数组否includes中无需备份的例外项。格式同includes。
当excludes已配置时,备份恢复框架会采用开发者配置的模式串,否则将会采用空数组作为默认值。
fullBackupOnly布尔值否是否使用应用默认恢复目录,默认值为false。当值为true时,恢复数据时会通过临时路径进行缓存,临时路径可通过 backupDir 获取。当值为false或者不配置该字段时,恢复数据会以’/'为根目录解压数据。
restoreDeps字符串否谨慎使用,应用恢复时依赖其他应用数据,默认值为"",需要配置依赖应用名称。当前建议无依赖项或最多1个依赖项,增加依赖风险高,依赖应用未恢复或者恢复失败都会导致本应用恢复失败。
extraInfojson串否额外信息可通过该字段传递。

说明

1、有关fullBackupOnly字段的说明

  • 当fullBackupOnly为false时,恢复数据会以 / 为根目录解压数据,同路径下的同名文件会被覆盖。
  • 当fullBackupOnly为true时,恢复数据会以临时目录为根目录解压数据,开发者需要在OnRestore/OnRestoreEx内自行实现恢复数据的逻辑,进行最终的恢复。

开发者可根据自身的业务场景,选择对应的恢复数据方式。以临时路径 /data/storage/el2/base/.backup/restore/ 为例:

假设应用的数据备份路径为:data/storage/el2/base/files/A/ 。那么在恢复时,如果配置了fullBackupOnly为false,数据会被解压到:/data/storage/el2/base/files/A/ 目录下,如果配置了fullBackupOnly为true,数据会被解压到:/data/storage/el2/base/.backup/restore/data/storage/el2/base/files/A/ 目录下。

includes默认值:

{
    "includes": [
    "data/storage/el1/database/",
    "data/storage/el1/base/files/",
    "data/storage/el1/base/preferences/",
    "data/storage/el1/base/haps//files/",
    "data/storage/el1/base/haps//preferences/",
    "data/storage/el2/database/",
    "data/storage/el2/base/files/",
    "data/storage/el2/base/preferences/",
    "data/storage/el2/base/haps//files/",
    "data/storage/el2/base/haps//preferences/",
    "data/storage/el2/distributedfiles/"
    ]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

鸿蒙全栈开发全新学习指南

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以要有一份实用的鸿蒙(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

鸿蒙开发学习资料领取!!!
微信名片
注:本文转载自blog.csdn.net的OpenHarmony_小贾的文章"https://blog.csdn.net/maniuT/article/details/140660794"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top