動態(tài)化介紹
簡介
ArkUI-X支持動態(tài)化,使用者可以根據(jù)自己需要動態(tài)發(fā)布跨平臺內(nèi)容,從而使跨平臺部分和宿主應(yīng)用進(jìn)行解耦。動態(tài)化能力支持如下兩個典型場景:
- 框架動態(tài)化:指ArkUI跨平臺開發(fā)框架本身可以做到動態(tài)下發(fā),即應(yīng)用發(fā)布時可以不帶框架基礎(chǔ)庫,降低應(yīng)用原始發(fā)布包體積,在需要時才從云端動態(tài)下發(fā)和執(zhí)行加載;
- 特性動態(tài)化:指用ArkTS語言開發(fā)的特性可以做到動態(tài)化,和宿主應(yīng)用解耦,獨立發(fā)布、升級版本;
說明 :應(yīng)用在使用動態(tài)化能力時需要遵循目標(biāo)終端操作系統(tǒng)應(yīng)用上架規(guī)則,如果違規(guī)可能有下架風(fēng)險,風(fēng)險由各自應(yīng)用承擔(dān)。 開發(fā)前請熟悉鴻蒙開發(fā)指導(dǎo)文檔 :[
gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
實踐參考
- [Android平臺動態(tài)化開發(fā)指南]
Android平臺動態(tài)化開發(fā)指南
簡介
本文介紹如何在Android平臺進(jìn)行ArkUI-X動態(tài)化開發(fā),包括動態(tài)化目錄規(guī)則及約束。
適用場景
動態(tài)化主要包括兩個典型場景:
- 場景1:框架動態(tài)化,為了降低應(yīng)用ROM體積占用,及滿足動態(tài)升級框架目的;
- 場景2:特性Bundle動態(tài)化,特性和宿主應(yīng)用發(fā)布解耦;
開發(fā)指南
目錄說明
動態(tài)加載時要求應(yīng)用沙箱內(nèi)目錄架構(gòu)如下所示:
/data/data/應(yīng)用/files/arkui-x
├── feature1 # 跨平臺特性1
│ ├── ets # ets目錄
│ │ ├──sourceMaps.map
│ │ └──modules.abc
│ ├── resources.index
│ ├── resources
│ ├── module.json
│ └── libs # 特性bundle帶的so庫
│ ├── arm64-v8a
│ ├── armeabi-v7a
│ └── x86_64
├── systemres # ArkUI公共資源
└── libs # 根目錄下libs庫
├── arm64-v8a
│ └──libarkui_android.so # ArkUI-X引擎
├── armeabi-v7a
└── x86_64
/data/data/應(yīng)用/files/arkui-x
可以視為ArkUI-X動態(tài)加載的沙箱根目錄,框架和特性Bundle均需要放在這個目錄下;- 根目錄下的libs文件夾放置引擎(libarkui_android.so),及其他公共庫;
- 根目錄下要求按照module級別組織, 不可以重名 ;
加載優(yōu)先級
引擎so庫:優(yōu)先加載應(yīng)用lib目錄下,如果未找到則去應(yīng)用沙箱根目錄加載;
插件so庫:優(yōu)先加載應(yīng)用lib目錄下,如果未找到則去應(yīng)用沙箱根目錄嘗試加載,最后去插件自身的libs目錄加載;
module加載:優(yōu)先從應(yīng)用assets目錄下尋找,如果找不到則去沙箱內(nèi)嘗試加載;
systemres加載:同上,優(yōu)先加載應(yīng)用assets目錄,找不到則去沙箱內(nèi)加載;
注意 :不建議應(yīng)用同一個module,即預(yù)制到應(yīng)用assets內(nèi)又在沙箱同時部署。框架初始化
如果應(yīng)用使用了框架引擎動態(tài)化,首次下載引擎庫后將其放置
/data/data/應(yīng)用/files/arkui-x/libs/arm64-v8a
目錄,之后再打開對應(yīng)跨平臺界面時初始化框架:
appDelegate = new StageApplicationDelegate();
appDelegate.initApplication(this)
后續(xù)再打開應(yīng)用,建議按照正常流程在Application里初始化框架,提前完全引擎庫加載,提高跨平臺模塊加載速度;
- [iOS平臺動態(tài)化開發(fā)指南]
iOS平臺動態(tài)化開發(fā)指南
簡介
本文介紹如何在iOS平臺進(jìn)行ArkUI-X動態(tài)化開發(fā),包括動態(tài)化目錄規(guī)則及約束。
適用場景
由于iOS平臺AppStore不允許應(yīng)用動態(tài)更新so庫,因此ArkUI-X在iOS上動態(tài)化只能更新界面及業(yè)務(wù)邏輯構(gòu)成的abc,不支持so庫動態(tài)加載。應(yīng)用需要將ArkUI-X基礎(chǔ)庫、插件及業(yè)務(wù)so庫提前打包到應(yīng)用內(nèi)上架。
開發(fā)指南
目錄結(jié)構(gòu)
iOS平臺ArkUI-X沙箱內(nèi)目錄結(jié)構(gòu)如下所示:
/Data/Application/應(yīng)用/Documents/files/arkui-x
├── feature1 # 跨平臺特性1
│ ├── ets # ets目錄
│ │ ├──sourceMaps.map
│ │ └──modules.abc
│ ├── resources.index
│ ├── resources
│ └── module.json
└── systemres # ArkUI公共資源
`HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿`
/Data/Application/應(yīng)用/Documents/files/arkui-x
可以視為ArkUI-X動態(tài)加載的沙箱根目錄,特性Bundle需要放在這個目錄下;- 根目錄下要求按照module級別組織, 不可以重名 ;
加載優(yōu)先級
- module加載:優(yōu)先從應(yīng)用根目錄下尋找,如果找不到則去沙箱內(nèi)嘗試加載;
- systemres加載:同上,優(yōu)先加載應(yīng)用根目錄下的資源,找不到則去沙箱內(nèi)加載;
注意 :不建議應(yīng)用同一個module,即預(yù)制到應(yīng)用內(nèi)又在沙箱同時部署。
審核編輯 黃宇
-
Android
+關(guān)注
關(guān)注
12文章
3935瀏覽量
127327 -
iOS
+關(guān)注
關(guān)注
8文章
3395瀏覽量
150555 -
鴻蒙
+關(guān)注
關(guān)注
57文章
2339瀏覽量
42801
發(fā)布評論請先 登錄
相關(guān)推薦
評論