2024年6月21日 HarmonyOS NEXT (后续称之为 NEXT) 正式发布,随着 NEXT 稳定版的逐渐临近,各个应用及SDK正在忙于适配 NEXT 系统,同样也面临着系统升级时如何对数据的迁移适配。本文通过使用环信 SDK 介绍如何从 HarmonyOS 系统升级到 NEXT 系统时,进行应用数据的迁移适配。
注:
1、本文章需要在华为官方迁移适配文档基础上进行阅读。
2、下文中 {userId} 当前固定为100,见华为官方说明。
一、应用数据迁移步骤
在进行数据迁移之前,我们需要先了解升级到NEXT系统,应用数据迁移需要进行哪些步骤。下图是整个迁移流程:
图中1-4步骤,均是由鸿蒙系统触发完成,开发者需要实现自定义的“BackupExtensionAbility”逻辑,实现自定义的数据恢复及转换逻辑。
1. HarmonyOS APK沙箱数据搬迁到中间目录
在升级的过程中,HarmonyOS系统会按照一定的规则,将应用的沙箱数据放置到四个数据目录中,然后这些数据会被整体压缩后搬迁到中间目录。
开发过程中,应用数据常用到的数据目录为:
/data/user/{userId}/{APK包名}/
/data/media/{userId}/Android/data/{APK包名}/
/data/user/{userId}/{APK包名}/ 对应的路径为 HarmonyOS APK 应用的 data/data/{包名} 路径目录,而 /data/media/{userId}/Android/data/{APK包名}/ 对应的是应用的 sdcard/Android/data/{包名}/ 路径目录。应用进行数据迁移的话,主要是关注这两块的数据迁移。
2. 华为应用市场安装 NEXT 版本的应用
NEXT系统的“数据迁移框架”会从华为应用市场根据开发者账号下载对应的 NEXT 版本的应用。具体关联,请参考文档:HarmonyOS应用关联Android应用。
3. 数据导入
在 NEXT 应用安装完成后,“数据迁移框架”将应用沙箱数据从中间目录搬迁到备份恢复目录。
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/ |
this.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/ |