写点什么

ArkUI-X 在 Android 平台动态化开发指南

作者:龙儿筝
  • 2025-06-15
    湖北
  • 本文字数:960 字

    阅读完需:约 3 分钟

本文介绍如何在 Android 平台进行 ArkUI-X 动态化开发,包括动态化目录规则及约束。

适用场景

动态化主要包括两个典型场景:


场景 1:框架动态化,为了降低应用 ROM 体积占用,及满足动态升级框架目的;场景 2:特性 Bundle 动态化,特性和宿主应用发布解耦;

开发指南

目录说明

动态加载时要求应用沙箱内目录架构如下所示:


/data/data/应用/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
复制代码


1./data/data/应用/files/arkui-x可以视为 ArkUI-X 动态加载的沙箱根目录,框架和特性 Bundle 均需要放在这个目录下;


2.根目录下的 libs 文件夹放置引擎(libarkui_android.so),及其他公共库;


3.根目录下要求按照 module 级别组织,不可以重名;

加载优先级

引擎 so 库:优先加载应用 lib 目录下,如果未找到则去应用沙箱根目录加载; 插件 so 库:优先加载应用 lib 目录下,如果未找到则去应用沙箱根目录尝试加载,最后去插件自身的 libs 目录加载;


module 加载:优先从应用 assets 目录下寻找,如果找不到则去沙箱内尝试加载;


systemres 加载:同上,优先加载应用 assets 目录,找不到则去沙箱内加载;


注意:不建议应用同一个 module,即预制到应用 assets 内又在沙箱同时部署。

框架初始化

如果应用使用了框架引擎动态化,首次下载引擎库后将其放置/data/data/应用/files/arkui-x/libs/arm64-v8a


目录,之后再打开对应跨平台界面时初始化框架:


注意:初始化必须在主线程调用。


appDelegate = new StageApplicationDelegate();appDelegate.initApplication(this)
复制代码


后续再打开应用,建议按照正常流程在 Application 里初始化框架,提前完全引擎库加载,提高跨平台模块加载速度;


发布于: 刚刚阅读数: 4
用户头像

龙儿筝

关注

还未添加个人签名 2024-10-27 加入

还未添加个人简介

评论

发布
暂无评论
ArkUI-X在Android平台动态化开发指南_龙儿筝_InfoQ写作社区