數據遷移是什么
什么是數據遷移,對用戶來講就是本地數據的遷移,終端設備從HarmonyOS 3.1 Release API 9及之前版本(單框架)遷移到HarmonyOS NEXT(雙框架)后保證本地數據不丟失。例如,我在某APP上面是登錄狀態,從單框架升級到雙框架打開APP后依舊是登錄狀態,這就是數據遷移,并不是云端數據的處理,是本地數據的處理。當然,這只是其中一個用戶信息,除用戶信息外還有一系列開發者用到的設備數據等等,需要遷移。
HarmonyOS NEXT提供了“數據遷移框架”和“備份恢復框架”,為開發者提供應用數據的遷移和轉換能力。開發者完成適配,APK應用切換為HarmonyOS應用后,可繼承原APK應用中適配HarmonyOS應用的數據。流程大概如下:
數據遷移機制
應用數據遷移任務需要執行的步驟包括:應用安裝,數據遷移和數據恢復。
- 應用安裝步驟:
- “數據遷移框架”向華為應用市場發送HarmonyOS應用下載和安裝請求。
- 華為應用市場下載并安裝HarmonyOS應用。
- 數據遷移步驟:
在HarmonyOS應用安裝完成之后,“數據遷移框架”將應用沙箱數據從中間目錄搬遷到備份恢復目錄。
- 數據恢復步驟:
- 在應用數據搬遷到備份恢復目錄后,“數據遷移框架”向“備份恢復框架”發送應用數據恢復請求。
- “備份恢復框架”拉起應用的“BackupExtensionAbility”獨立進程,啟動應用數據恢復。
- 應用通過“BackupExtensionAbility”從備份恢復目錄加載APK應用的數據,處理后保存到HarmonyOS應用沙箱中,完成應用數據恢復。
- “備份恢復框架”在應用數據恢復完成后,清空備份恢復目錄。
應用適配流程
遷移目錄對應關系
開發者需要在HarmonyOS應用的代碼中,實現“BackupExtensionAbility”,使應用接入到“備份恢復框架”中,完成應用數據的轉換和遷移。后續HarmonyOS應用通過訪問HarmonyOS應用沙箱獲取應用的數據。
備份恢復目錄如下表中所示:
APK應用沙箱目錄與備份恢復目錄映射關系
代碼實現
創建BackupExtensionAbility,APP在BackupExtensionAbility中實現應用的數據轉換和遷移邏輯。
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<void> {console.log(TAG, `onRestore ok ${JSON.stringify(bundleVersion)}`);//bundleVersion.name的前綴為“0.0.0.0”時,表示終端設備從HarmonyOS升級到HarmonyOS NEXT數據遷移場景if (bundleVersion.name.startsWith("0.0.0.0")){// 在此處實現終端設備從HarmonyOS 4.x升級到HarmonyOS NEXT后,應用數據的轉換和遷移// 涉及異步操作請進行同步等待console.log(TAG, `HarmonyOS to HarmonyOS NEXT scenario`);} else {// 在此處實現從HarmonyOS NEXT設備遷移到HarmonyOS NEXT設備后,應用數據的處理。無特殊要求,可以空實現// 涉及異步操作請進行同步等待console.log(TAG, `Other scenario`);}}
}
module.json5中配置
"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、將單架構要遷移數據的APP數據通過Android Studio 按下面對應目錄導出zip包,然后放到手機本地,或者登錄華為賬號放到我的云盤里面方便登錄下載。
2、下載手動遷移工具 **MigrateTool ,**選擇剛才導出的zip文件,再輸入要遷入到的應用簽名,點擊啟動遷移,遷移提示成功之后(注意如果遷移失敗,可能是zip數據問題,根據上面目錄排查)。打開APP驗證即可功能。
)
QA端到端驗證
如果是已經上架的應用,可以發布一個內測版本,然后審核通過后指定設備做線上驗證。
- 當前開發者持有的終端設備為HarmonyOS NEXT。開發者在驗證升級前,需要將設備從HarmonyOS NEXT回退到HarmonyOS。在應用適配完成并上架到華為應用市場之后,開發者需要聯系華為方技術支撐人員提供版本,支持開發者將終端設備從HarmonyOS NEXT回退到HarmonyOS。系統回退的入口為:設置 > 通用 > 開發者模式 > 系統回退。
- 將終端設備回退到HarmonyOS后,需要預置APK應用的數據。在數據預置完成后,開發者需要聯系華為方技術支撐人員提供版本,支持開發者將終端設備從HarmonyOS升級到HarmonyOS NEXT。系統更新的入口為:設置 > 系統和更新 > 軟件更新。
- 終端設備成功從HarmonyOS升級到HarmonyOS NEXT,走過開機向導界面后,開始執行應用數據遷移。開發者請在應用數據遷移結束后,驗證應該數據遷移的結果。