写点什么

ArkUI-X 应用工程结构说明

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

    阅读完需:约 8 分钟

简介

本文档配套 ArkUI-X,将 OpenHarmony ArkUI 开发框架扩展到不同的 OS 平台,比如 Android 和 iOS 平台,让开发者基于 ArkUI,可复用大部分的应用代码(UI 以及主要应用逻辑)并可以部署到相应的 OS 平台,降低跨平台应用开发成本。

应用工程目录结构介绍

  • 跨平台应用工程目录结构说明


以 IDE 创建的模板工程【ArkUI-X】Empty Ability 举例,包含一套为 ArkUI 开发者提供的应用工程模板,提供构建 OpenHarmony 应用,HarmonyOS 应用,Android 应用,iOS 应用的能力。


ArkUI-X应用工程目录结构  ├── .arkui-x  │   ├── android                 // Android平台相关代码  │   ├── ios                     // iOS平台相关代码  │   └── arkui-x-config.json5    // 标记哪些模块跨平台  ├── AppScope  ├── entry  ├── hvigor  ├── build-profile.json5  ├── hvigorfile.ts  ├── local.properties  └── oh-package.json5
复制代码


此应用目录结构设计思想是从 OpenHarmony 应用工程原生支持跨平台角度出发,在 OpenHarmony 应用工程之上叠加 Android 和 iOS 应用工程,ArkTS 代码和 resources 资源在 OpenHarmony 侧完成编译,Native 代码仍在各自平台应用工程中完成编译。


  • 如何配置某些模块支持跨平台


基于上面的工程目录结构,说明下跨平台工程如何实现模块级跨平台,**.arkui-x > arkui-x-config.json5:**


{  "crossplatform": true,  "modules": [    "entry"  ]}
复制代码


其中,"modules"中填入跨平台的应用/服务模块名,正确的模块名可参考 entry > src > main > module.json5:


{  "module": {    "name": "entry",    "type": "entry",        ...  }}
复制代码

编译构建说明

  • ArkTS 源码


ArkTS 源码通过 OpenHarmony SDK 工具链生成 abc(Ark Byte Code),并分别拷贝到 Android 和 iOS 应用工程,作为平台应用资源进行管理。


  • ArkUI 应用资源


ArkUI Resources 资源也通过 OpenHarmony SDK 工具链进行编译,编译后的 ArkUI 资源分别拷贝到 Android 和 iOS 应用工程,作为平台应用资源进行管理。


  • ArkUI 框架资源


ArkUI 框架资源随 ArkUI-X SDK 进行发布,应用构建时会自动打包到 ArkUI-X 应用中,可保证 ArkUI-X 应用在各平台上 UX 渲染一致性。


综上所述,Android 平台上通过 assets 管理 ArkTS 编译产物、ArkUI 应用资源和 ArkUI 框架资源,iOS 平台上通过 Bundle Resources 管理 ArkTS 编译产物、ArkUI 应用资源和 ArkUI 框架资源。

Android 应用工程结构

ArkUI-X Android应用工程├── app│   ├── libs│   │   ├── arkui_android_adapter.jar                   // ArkUI-X跨平台适配层,在SDK中发布│   │   └── arm64-v8a│   │       └── libarkui_android.so                     // ArkUI-X跨平台引擎库,在SDK中发布│   │       └── libhilog.so                             // ArkUI-X日志库,在SDK中发布│   ├── src│   │   ├── androidTest│   │   ├── main│   │   │   ├── assets│   │   │   │   └── arkui-x                             // ArkUI应用编译后的字节码文件和Resources,作为资源文件存放在assets/arkui-x中│   │   │   │       ├── entry                           // ArkUI单个模块的编译结果│   │   │   │       │   ├── ets                         // ArkUI单个模块代码的编译结果:包括字节码文件│   │   │   │       │   │   └── modules.abc│   │   │   │       │   ├── resources.index             // ArkUI单个模块资源的编译结果:resources资源的编译结果│   │   │   │       │   ├── resources                   // resources资源中的rawfile资源,不会进行编译。│   │   │   │       │   └── module.json│   │   │   │       └── systemres                       // ArkUI框架自带的系统资源│   │   │   ├── java/com/example/mayapplication│   │   │   │   ├── MyApplication.java                  // 基于StageApplication扩展MyApplication│   │   │   │   └── EntryEntryAbilityActivity.java      // 基于StageActivity扩展EntryEntryAbilityActivity│   │   │   ├── res│   │   │   └── AndroidManifest.xml│   │   └── test│   ├── build.gradle│   └── proguard-rules.pro├── gradle/wrapper├── build.gradle├── gradle.properties├── gradlew├── gradlew.bat└── settings.gradle
复制代码

iOS 应用工程结构

ArkUI-X iOS应用工程├── app.xcodeproj│   ├── project.xcworkspace│   └── project.pbxproj├── app│   ├── Assets.xcassets│   ├── Base.Iproj│   ├── AppDelegate.h│   ├── AppDelegate.m                               // 应用入口, 驱动StageApplication的生命周期│   ├── EntryEntryAbilityViewController.h           │   ├── EntryEntryAbilityViewController.m           // 基于StageViewController扩展EntryEntryViewController│   ├── Info.plist│   └── main.m├── arkui-x                                         // ArkUI应用编译后的字节码文件和Resources,作为资源文件存放在assets/arkui-x中│   ├── entry                                       // ArkUI单个模块的编译结果│   │   ├── ets                                     // ArkUI单个模块代码的编译结果:包括字节码文件以及sourceMap文件│   │   │   └── modules.abc│   │   ├── resources.index                         // ArkUI单个模块资源的编译结果:resources资源的编译结果│   │   ├── resources                               // resources资源中的rawfile资源,不会进行编译。│   │   └── module.json│   └── systemres                                   // ArkUI框架自带的系统资源└── frameworks                                      // ArkUI跨平台Framework动态库:包含ArkUI-X的框架以及插件
复制代码


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

龙儿筝

关注

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

还未添加个人简介

评论

发布
暂无评论
ArkUI-X应用工程结构说明_龙儿筝_InfoQ写作社区