鴻蒙HarmonyOS NEXT設備升級應用數據遷移流程

數據遷移是什么

什么是數據遷移,對用戶來講就是本地數據的遷移,終端設備從HarmonyOS 3.1 Release API 9及之前版本(單框架)遷移到HarmonyOS NEXT(雙框架)后保證本地數據不丟失。例如,我在某APP上面是登錄狀態,從單框架升級到雙框架打開APP后依舊是登錄狀態,這就是數據遷移,并不是云端數據的處理,是本地數據的處理。當然,這只是其中一個用戶信息,除用戶信息外還有一系列開發者用到的設備數據等等,需要遷移。

HarmonyOS NEXT提供了“數據遷移框架”和“備份恢復框架”,為開發者提供應用數據的遷移和轉換能力。開發者完成適配,APK應用切換為HarmonyOS應用后,可繼承原APK應用中適配HarmonyOS應用的數據。流程大概如下:

數據遷移機制

應用數據遷移任務需要執行的步驟包括:應用安裝,數據遷移和數據恢復。

  1. 應用安裝步驟:
    1. “數據遷移框架”向華為應用市場發送HarmonyOS應用下載和安裝請求。
    2. 華為應用市場下載并安裝HarmonyOS應用。
  2. 數據遷移步驟:

在HarmonyOS應用安裝完成之后,“數據遷移框架”將應用沙箱數據從中間目錄搬遷到備份恢復目錄。

  1. 數據恢復步驟:
    1. 在應用數據搬遷到備份恢復目錄后,“數據遷移框架”向“備份恢復框架”發送應用數據恢復請求。
    2. “備份恢復框架”拉起應用的“BackupExtensionAbility”獨立進程,啟動應用數據恢復。
    3. 應用通過“BackupExtensionAbility”從備份恢復目錄加載APK應用的數據,處理后保存到HarmonyOS應用沙箱中,完成應用數據恢復。
    4. “備份恢復框架”在應用數據恢復完成后,清空備份恢復目錄。

應用適配流程

遷移目錄對應關系

開發者需要在HarmonyOS應用的代碼中,實現“BackupExtensionAbility”,使應用接入到“備份恢復框架”中,完成應用數據的轉換和遷移。后續HarmonyOS應用通過訪問HarmonyOS應用沙箱獲取應用的數據。

![](https://i-blog.csdnimg.cn/img_convert/f18cdc25050d268879b3465d0cb3d433.png =600x300)

備份恢復目錄如下表中所示:

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端到端驗證

如果是已經上架的應用,可以發布一個內測版本,然后審核通過后指定設備做線上驗證。

  1. 當前開發者持有的終端設備為HarmonyOS NEXT。開發者在驗證升級前,需要將設備從HarmonyOS NEXT回退到HarmonyOS。在應用適配完成并上架到華為應用市場之后,開發者需要聯系華為方技術支撐人員提供版本,支持開發者將終端設備從HarmonyOS NEXT回退到HarmonyOS。系統回退的入口為:設置 > 通用 > 開發者模式 > 系統回退。
  2. 將終端設備回退到HarmonyOS后,需要預置APK應用的數據。在數據預置完成后,開發者需要聯系華為方技術支撐人員提供版本,支持開發者將終端設備從HarmonyOS升級到HarmonyOS NEXT。系統更新的入口為:設置 > 系統和更新 > 軟件更新
  3. 終端設備成功從HarmonyOS升級到HarmonyOS NEXT,走過開機向導界面后,開始執行應用數據遷移。開發者請在應用數據遷移結束后,驗證應該數據遷移的結果。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/899581.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/899581.shtml
英文地址,請注明出處:http://en.pswp.cn/news/899581.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【現代深度學習技術】現代卷積神經網絡04:含并行連接的網絡(GoogLeNet)

【作者主頁】Francek Chen 【專欄介紹】 ? ? ?PyTorch深度學習 ? ? ? 深度學習 (DL, Deep Learning) 特指基于深層神經網絡模型和方法的機器學習。它是在統計機器學習、人工神經網絡等算法模型基礎上&#xff0c;結合當代大數據和大算力的發展而發展出來的。深度學習最重…

【ESP32】ESP32與MQTT通信:實現傳感器數據監測與設備控制

ESP32與MQTT通信 1 項目概覽2 硬件組成3 MQTT協議解析MQTT協議簡介MQTT核心概念本項目中的MQTT應用 4 MQTT Broker選擇EMQX Broker其他常用MQTT Broker 5 代碼解析初始化與配置MQTT消息處理發布傳感器數據 6 MQTT話題TOPIC設計7 EMQX的優勢在IoT項目中的體現8 MQTT通信流程9 應…

[特殊字符]《Curve DAO 系統學習目錄》

本教程旨在系統學習 Curve DAO 項目的整體架構、核心機制、合約設計、治理邏輯與代幣經濟等內容&#xff0c;幫助開發者全面理解其設計理念及運作方式。 目錄總覽&#xff1a; 1. Curve 項目概覽 ? 1.1 Curve 是什么&#xff1f;主要解決什么問題&#xff1f; ? 1.2 與其他…

每天一篇目標檢測文獻(六)——Part One

今天看的是《Object Detection with Deep Learning: A Review》 目錄 一、摘要 1.1 原文 1.2 翻譯 二、介紹 2.1 信息區域選擇 2.2 特征提取 2.3 分類 三、深度學習的簡要回顧 3.1 歷史、誕生、衰落和繁榮 3.2 CNN架構和優勢 一、摘要 1.1 原文 Due to object dete…

Arthas線上問題診斷器

Arthas是Alibaba開源的java診斷工具 解決問題 這個類從哪個jar 包加載的&#xff1f;為什么會報各種相關的Exception&#xff1f; 遇到問題無法在線上debug&#xff0c;不能直通過加載日志再重新發布 有什么辦法可以監控到JVM的實時運行狀態&#xff1f; …

[Lc5_dfs+floodfill] 簡介 | 圖像渲染 | 島嶼數量

目錄 0.floodfill算法簡介 1.圖像渲染 題解 2.島嶼數量 題解 之前我們在 bfs 中有介紹過[Lc15_bfsfloodfill] 圖像渲染 | 島嶼數量 | 島嶼的最大面積 | 被圍繞的區域&#xff0c;現在我們來看看 dfs 又是如何解決的呢 0.floodfill算法簡介 floodfill算法又叫洪水灌溉或者…

JVM類加載器詳解

文章目錄 1.類與類加載器2.類加載器加載規則3.JVM 中內置的三個重要類加載器為什么 獲取到 ClassLoader 為null就是 BootstrapClassLoader 加載的呢&#xff1f; 4.自定義類加載器什么時候需要自定義類加載器代碼示例 5.雙親委派模式類與類加載器雙親委派模型雙親委派模型的執行…

Chapters 15 16:What Is Architecture?Independence_《clean architecture》notes

What Is Architecture?&Independence **Chapter 15: What Is Architecture?****Key Concepts**:**Code Example: Layered Architecture**: **Chapter 16: Independence****Key Concepts**:**Code Example: Dependency Inversion & Interfaces**: **Combined Example:…

【SPP】RFCOMM 層在SPP中互操作性要求深度解析

藍牙串口協議&#xff08;SPP&#xff09;通過 RFCOMM 協議實現 RS232 串口仿真&#xff0c;其互操作性是設備互聯的關鍵。本文基于藍牙核心規范&#xff0c;深度解析 RFCOMM 層的能力矩陣、信號處理、流控機制及實戰開發&#xff0c;結合狀態機、流程圖和代碼示例&#xff0c;…

阻塞式IO與非阻塞IO的區別

阻塞式IO與非阻塞IO的區別 1. 阻塞式IO (Blocking I/O) 定義 當程序發起一個I/O操作&#xff08;如讀取文件、網絡數據&#xff09;時&#xff0c;進程會被掛起&#xff08;阻塞&#xff09;&#xff0c;直到操作完成或超時才會繼續執行后續代碼。在此期間&#xff0c;程序無法…

Gossip協議:分布式系統中的“八卦”傳播藝術

目錄 一、 什么是Gossip協議&#xff1f;二、 Gossip協議的應用 &#x1f4a1;三、 Gossip協議消息傳播模式詳解 &#x1f4da;四、 Gossip協議的優缺點五、 總結&#xff1a; &#x1f31f;我的其他文章也講解的比較有趣&#x1f601;&#xff0c;如果喜歡博主的講解方式&…

【C++初階】----模板初階

1.泛型函數 泛型編程&#xff1a;編寫與類型無關的通用代碼&#xff0c;是代碼復用的一種手段。模板是泛型編程的基礎。 2.函數模板 2.1函數模板的概念 函數模板代表了一個函數家族&#xff0c;該函數模板與類型無關&#xff0c;在使用時被參數化&#xff0c;根據實參類型…

git-- github的使用--賬戶和本地連接

以下指令在git 執行bash 流程&#xff1a;先看有沒有密鑰&#xff1b; 沒有的話&#xff0c;在電腦生成密鑰對&#xff0c;公鑰復制到github&#xff1b; 要想使用https&#xff0c;配置令牌&#xff0c;注意令牌有期限問題&#xff0c;連接不了有可能是期限問題 一個電腦對…

OTN(Optical Transport Network)詳解

OTN&#xff08;光傳送網&#xff09;是一種基于**波分復用&#xff08;WDM&#xff09;**的大容量光傳輸技術&#xff0c;結合了SDH的運維管理優勢和WDM的高帶寬特性&#xff0c;廣泛應用于骨干網、城域核心層及數據中心互聯&#xff08;DCI&#xff09;。 1. OTN 的基本概念 …

Python 中列表(List)、元組(Tuple)、集合(Set)和字典(Dict)四大數據結構的完整對比

以下是 Python 中列表&#xff08;List&#xff09;、元組&#xff08;Tuple&#xff09;、集合&#xff08;Set&#xff09;和字典&#xff08;Dict&#xff09;四大數據結構的完整對比分析&#xff0c;結合了核心特性、操作方式和應用場景的深度總結&#xff1a; 一、核心特性…

Angular由一個bug說起之十五:自定義基于Overlay的Tooltip

背景 工具提示&#xff08;tooltip&#xff09;是一個常見的 UI 組件&#xff0c;用于在用戶與頁面元素交互時提供額外的信息。由于angular/material/tooltip的matTooltip只能顯示純文本&#xff0c;所以我們可以通過自定義Directive來實現一個靈活且功能豐富的tooltip Overlay…

軟件工程面試題(十五)

1、servlet 創建過程以及ruquest,response,session的生命周期? Servlet的創建過程: 第一步 public class AAA extends HttpServlet{ 實現對應的doxxx方法 } 第二步: 在web.xml中配置 <servlet> <servlet-name></servlet-name> <servlet-c…

搭建QNX Software Center的Docker環境

背景 本人使用 Ubuntu Server 22.04 服務器&#xff0c;所以沒有圖形界面&#xff0c;而 QNX Software Center 需要圖形界面。為了保證服務器環境的整理&#xff0c;計劃使用Docker部署QNX Software Center 一瓶安裝圖形界面。本方既是實現方案的記錄。 資源 Dockerfile&…

C#/.NET/.NET Core技術前沿周刊 | 第 31 期(2025年3.17-3.23)

前言 C#/.NET/.NET Core技術前沿周刊&#xff0c;你的每周技術指南針&#xff01;記錄、追蹤C#/.NET/.NET Core領域、生態的每周最新、最實用、最有價值的技術文章、社區動態、優質項目和學習資源等。讓你時刻站在技術前沿&#xff0c;助力技術成長與視野拓寬。 歡迎投稿、推薦…

粘包問題解決方案

粘包問題詳解&#xff1a;TCP協議中的常見問題及Go語言解決方案 一、什么是粘包問題&#xff1f; 粘包問題是指在TCP通信中&#xff0c;發送方發送的多個獨立消息在接收方被合并成一個消息接收的現象。換句話說&#xff0c;發送方發送的多條消息在接收方被“粘”在一起&#…