HarmonyOS应用开发实战:萌宠日记 - 备份恢复能力集成
前言数据备份与恢复是移动应用不可或缺的基础能力它保障用户数据在换机迁移、应用重装、系统恢复等场景下的安全性和连续性。在萌宠日记中我们通过ExtensionAbility的backup 类型集成了 HarmonyOS 的原生备份恢复能力让用户的宠物日记、健康记录、照片数据得到可靠保护。本文将从萌宠日记的备份恢复实现出发深入解析 ExtensionAbility 的配置、备份扩展的实现原理以及备份配置文件的设计细节。一、备份恢复体系概述1.1 备份能力架构HarmonyOS 的备份恢复体系包含三个核心角色角色组件职责系统备份服务系统级服务调度备份任务、管理备份数据备份扩展ExtensionAbilitybackup 类型提供应用的备份/恢复逻辑备份配置backup_config.json声明需要备份的文件和目录备份恢复的完整流程用户触发备份 → 系统备份服务 → 调度各应用备份扩展 ↓ 应用备份扩展 → 读取 backup_config.json → 收集指定文件 ↓ 文件打包加密 → 存储到系统备份目录1.2 萌宠日记的备份配置// module.json5 — 备份扩展声明 { extensionAbilities: [ { name: EntryBackupAbility, srcEntry: ./ets/entrybackupability/EntryBackupAbility.ets, type: backup, exported: false, metadata: [ { name: ohos.extension.backup, resource: $profile:backup_config } ] } ] }提示exported: false表示该扩展能力仅对系统服务可见外部应用无法直接调用这符合备份扩展的安全要求。二、备份扩展的实现2.1 EntryBackupAbility 源码// EntryBackupAbility.ets — 备份扩展实现 import { BackupExtensionAbility } from kit.CoreFileKit; export default class EntryBackupAbility extends BackupExtensionAbility { // 备份前的准备工作 onBackup(): void { console.log(EntryBackupAbility onBackup); } // 恢复后的处理工作 onRestore(): void { console.log(EntryBackupAbility onRestore); } }2.2 BackupExtensionAbility 生命周期BackupExtensionAbility继承自ExtensionAbility提供了两个关键的回调方法方法触发时机典型用途onBackup()系统开始备份该应用时数据一致性检查、关闭正在写入的文件onRestore()系统完成数据恢复后重建缓存、刷新 UI、重新建立网络连接2.3 备份扩展的工作流程有序列表 — 备份/恢复的完整生命周期系统触发备份用户手动备份或系统自动备份onBackup 调用应用准备备份数据确保文件一致性系统读取配置系统根据backup_config.json收集文件文件打包加密系统将文件打包并加密存储恢复触发用户在新设备或重装后恢复数据系统还原文件系统将备份文件还原到应用沙箱onRestore 调用应用处理恢复后的数据刷新 UI三、备份配置文件详解3.1 backup_config.json 结构{ allowToBackupPersistent: true, includeFiles: [ data/storage/el2/database/, data/storage/el2/base/preferences/, data/storage/el2/base/files/ ], excludeFiles: [ data/storage/el2/base/cache/ ] }3.2 配置字段说明字段类型说明萌宠日记配置allowToBackupPersistentboolean是否允许持久化备份trueincludeFilesstring[]需要备份的文件/目录路径列表数据库、首选项、文件excludeFilesstring[]排除的路径列表排除 includeFiles 中的子路径缓存目录3.3 路径配置规范备份路径使用沙箱路径遵循以下规则路径模式说明存储内容data/storage/el2/database/关系型数据库目录日记数据、宠物档案data/storage/el2/base/preferences/首选项数据目录用户设置、主题偏好data/storage/el2/base/files/应用文件目录用户创建的文件data/storage/el2/base/cache/缓存目录排除临时文件、图片缓存四、数据存储路径说明4.1 EL 等级说明HarmonyOS 沙箱路径中的el表示加密级别Encryption Level加密级别路径说明备份场景el1设备级加密设备解锁前可访问不常用el2用户级加密用户解锁后可访问萌宠日记使用el3增强加密需要用户身份验证金融级数据el4最高加密最高安全等级敏感数据4.2 萌宠日记的数据存储路径萌宠日记的数据存储在el2目录下包含以下数据数据类型存储路径备份策略关系型数据库el2/database/✅ 备份用户首选项el2/base/preferences/✅ 备份用户文件el2/base/files/✅ 备份图片缓存el2/base/cache/❌ 排除五、备份策略设计5.1 备份触发时机触发方式说明用户是否感知手动备份用户在设置中点击“备份“有感知自动备份系统在充电WiFi 环境下自动备份无感知换机迁移新设备恢复时触发有感知应用重装重装应用时恢复数据有感知5.2 备份数据的大小限制限制项限制值说明单应用备份大小无硬性限制受存储空间约束备份文件数量建议不超过 1000 个过多文件影响备份效率单文件大小建议不超过 100MB大型文件如视频需单独处理六、备份扩展的完整生命周期6.1 扩展生命周期import { BackupExtensionAbility } from kit.CoreFileKit; import { hilog } from kit.PerformanceAnalysisKit; const DOMAIN 0x0000; export default class EntryBackupAbility extends BackupExtensionAbility { // 创建时的初始化 onCreate(): void { hilog.info(DOMAIN, testTag, BackupAbility onCreate); } // 备份前准备 onBackup(): void { hilog.info(DOMAIN, testTag, BackupAbility onBackup); // 关闭所有数据库连接确保数据一致性 // 刷新 Preferences 缓存到磁盘 } // 恢复后处理 onRestore(): void { hilog.info(DOMAIN, testTag, BackupAbility onRestore); // 重建数据库连接 // 重新加载用户首选项 // 通知 UI 刷新数据 } // 销毁时的清理 onDestroy(): void { hilog.info(DOMAIN, testTag, BackupAbility onDestroy); } }6.2 生命周期与 UIAbility 的协同操作UIAbility 生命周期BackupExtensionAbility 生命周期备份开始onBackgroundonBackup备份进行中后台运行文件收集备份完成onForeground—恢复完成onForegroundonRestore七、备份数据的安全性7.1 加密机制HarmonyOS 的备份数据采用端到端加密安全层级保护措施说明传输层TLS 加密备份数据传输加密存储层AES-256 加密备份数据存储加密密钥管理硬件安全模块密钥存储在 TEE 环境中7.2 数据隔离每个应用的备份数据独立存储互不可见备份数据与运行时数据隔离存储加密密钥与应用签名绑定防止数据被其他应用解密八、备份恢复的测试方法8.1 模拟备份恢复# 使用 hdc 命令模拟备份恢复 hdc shell bm backup --bundle-name com.mengchongriji.app --backup-dir /data/backup # 触发恢复 hdc shell bm restore --bundle-name com.mengchongriji.app --backup-dir /data/backup8.2 验证备份数据# 查看备份目录 hdc shell ls -la /data/backup/com.mengchongriji.app/ # 检查备份文件完整性 hdc shell bm dump --backup --bundle-name com.mengchongriji.app九、常见问题与调试9.1 备份失败排查错误现象可能原因解决方案备份文件为空includeFiles 路径配置错误检查路径是否与实际沙箱路径一致备份恢复后数据丢失excludeFiles 排除了关键数据检查 excludeFiles 配置备份超时数据量过大考虑排除 cache 目录恢复后应用崩溃数据版本不兼容在 onRestore 中做数据迁移9.2 调试技巧// 添加详细的日志便于定位备份恢复问题 onBackup(): void { hilog.info(DOMAIN, testTag, Backup started at: %{public}s, Date.now().toString()) // 检查文件状态 // ... } onRestore(): void { hilog.info(DOMAIN, testTag, Restore completed at: %{public}s, Date.now().toString()) // 验证数据完整性 // ... }十、备份恢复最佳实践10.1 设计原则最小化备份数据只备份用户数据不备份缓存和临时文件数据一致性备份前确保数据写入完成版本兼容恢复时考虑数据格式的版本兼容性用户控制提供手动备份入口让用户掌握备份时机10.2 萌宠日记的备份策略数据类型备份策略理由日记数据全部备份用户核心数据不可丢失宠物档案全部备份用户核心数据健康记录全部备份用户核心数据提醒事项全部备份用户核心数据用户偏好全部备份恢复体验一致图片缓存不备份可重新加载节省空间临时文件不备份无保留价值总结本文从萌宠日记的备份恢复实现出发完整解析了 HarmonyOSExtensionAbilitybackup 类型的配置与开发备份恢复架构系统备份服务 备份扩展 备份配置的三层模型备份扩展实现BackupExtensionAbility 的 onBackup 和 onRestore 方法备份配置文件backup_config.json 的字段详解与路径规范数据存储路径EL 加密级别、沙箱路径说明安全性保障端到端加密、数据隔离测试与调试hdc 命令模拟备份恢复、问题排查下一篇我们将深入应用图标与启动窗口优化解析启动图标和启动窗口的配置技巧。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力相关资源应用文件备份恢复https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/app-file-backup-overview备份扩展开发指导https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/backup-extensionExtensionAbility 概述https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/extensionability-overview应用沙箱路径https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/application-sandbox数据加密级别https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/data-encryption应用数据备份恢复https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/app-data-migration-overview备份恢复 FAQhttps://developer.huawei.com/consumer/cn/doc/harmonyos-guides/app-file-backup-restore关系型数据库备份https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/app-data-persistence

相关新闻

远程系统日志服务

远程系统日志服务

一、rsyslog的作用负责按照策略采集系统中生成的日志并把日志按照规则存放到相应文件中二、存放日志类别日志文件日志种类/var/log/messages服务信息,服务启动报错/var/log/secure认证信息日志/var/log/maillog邮件日志/var/log/cron定时任务日志/var/log/boot.log系…

2026/7/22 2:50:50 阅读更多 →
手板模型供应商到底如何选不踩坑?

手板模型供应商到底如何选不踩坑?

手板模型公司怎么选?其实现在外面的手板厂大大小小数不胜数,有的甚至刚成立几个月,因此交付质量也参差不齐,最终影响是整个研发项目。这种乱象太多了,你们有感受吗?结论清单:选手板供应商&#…

2026/7/22 2:50:49 阅读更多 →
每天60秒读懂世界:2026年7月21日15条新闻

每天60秒读懂世界:2026年7月21日15条新闻

🔥 个人主页: 杨利杰YJlio ❄️ 个人专栏: 《Windows 疑难杂症与工单复盘案例库》 《Sysinternals实战教程》 《WINDOWS教程》 《Windows PowerShell 实战》 《IOS插件分析测试》 《超简单:用Python让Excel飞起来》…

2026/7/22 2:49:49 阅读更多 →

最新新闻

Video2x视频增强工具:基于GAN的超分辨率与补帧技术详解

Video2x视频增强工具:基于GAN的超分辨率与补帧技术详解

1. 项目概述:Video2x视频增强工具解析这个在GitHub上狂揽1.7万星标的开源项目,本质上是一个基于深度学习的视频处理工具链。它最核心的能力是通过神经网络算法,将低分辨率、模糊的老旧视频素材,智能提升至高清甚至4K画质&#xff…

2026/7/22 5:32:50 阅读更多 →
Linux环境下CiLocks部署与问题排查全指南

Linux环境下CiLocks部署与问题排查全指南

1. 项目概述:为什么需要一份详尽的CiLocks部署手册?最近在几个技术社区里,看到不少朋友在讨论一个叫CiLocks的工具,尤其是在Linux环境下部署时,总会遇到各种“拦路虎”。有的卡在依赖安装,有的在配置环节反…

2026/7/22 5:32:50 阅读更多 →
网络热词‘rip‘的语义演变与社交应用解析

网络热词‘rip‘的语义演变与社交应用解析

1. 项目概述:网络热词"rip"的语义演变与日常应用"rip"这个看似简单的三字母单词,最近在中文网络语境中呈现出令人惊讶的语义扩展。作为混迹网络社区十余年的老用户,我见证了它从最初的英文原意逐渐演变为中文互联网特有的…

2026/7/22 5:32:50 阅读更多 →
2026 文旅专业实训设备选购指南,酒店数字化运营管理仿真平台主流服务商介绍

2026 文旅专业实训设备选购指南,酒店数字化运营管理仿真平台主流服务商介绍

一、酒店数字化实训教学的行业变革趋势国内文旅住宿行业数字化升级步伐持续加快,连锁酒店、特色民宿、文旅综合体普遍采用智能前台、线上 OTA 渠道、客户数据中台、智能收益管理系统开展日常运营,传统线下实训模式难以复刻数字化岗位完整工作流程。在新文…

2026/7/22 5:32:50 阅读更多 →
Firefox书签高效管理技巧与同步备份指南

Firefox书签高效管理技巧与同步备份指南

1. Firefox书签管理基础入门作为一个每天要处理上百个网页的技术博主,我深知高效管理书签的重要性。Firefox的书签系统是我用过最顺手的功能之一,它不仅能保存网页链接,还能实现跨设备同步、智能分类和快速检索。先说说最基本的书签添加方式&…

2026/7/22 5:32:50 阅读更多 →
WinForm开发中的Windows消息机制详解与实战

WinForm开发中的Windows消息机制详解与实战

1. WinForm开发中的Window消息机制基础Windows消息机制是WinForm应用程序与操作系统交互的核心通道。每个窗口(包括控件)都有一个消息队列,系统将用户输入、系统事件等封装成消息投递到这个队列中。作为C#开发者,理解这些消息的工…

2026/7/22 5:31:50 阅读更多 →

日新闻

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

1. 项目概述与SYSCFG模块的核心价值在嵌入式系统,尤其是像TI C6000系列这样的高性能DSP开发中,我们常常会与芯片手册里那些密密麻麻的寄存器打交道。很多开发者可能更关注算法实现、内存优化或者外设驱动,但对于一个稳定、高效的系统而言&…

2026/7/22 0:00:26 阅读更多 →
微信Server酱:高到达率的应急通知方案实践

微信Server酱:高到达率的应急通知方案实践

1. 为什么我们需要"最次"的通知方案? 在数字化协作环境中,消息通知系统的重要性不言而喻明。但现实情况是,企业级通知方案往往需要复杂的API对接(如企业微信、钉钉、飞书),个人开发者的小项目又经…

2026/7/22 0:00:26 阅读更多 →
甲方要的“简洁“PPT,到底是简洁还是省事?

甲方要的“简洁“PPT,到底是简洁还是省事?

甲方说"简洁一点",乙方听到的是"少做几页"。甲方说"不要太复杂",乙方理解成"别放图表了"。结果交过去,甲方说"我说的简洁不是这个意思"。"简洁"这个词在PPT语境里,是…

2026/7/22 0:00:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/21 8:48:31 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 5:34:47 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 8:25:39 阅读更多 →

月新闻