找回密码
 立即注册
首页 业界区 业界 ArkUI-X应用工程结构说明

ArkUI-X应用工程结构说明

映各 2025-6-19 21:02:29
简介

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


  • 跨平台应用工程目录结构说明
以IDE创建的模板工程【ArkUI-X】Empty Ability举例,包含一套为ArkUI开发者提供的应用工程模板,提供构建OpenHarmony应用,HarmonyOS应用,Android应用,iOS应用的能力。
  1. ArkUI-X应用工程目录结构
  2.   ├── .arkui-x
  3.   │   ├── android                 // Android平台相关代码
  4.   │   ├── ios                     // iOS平台相关代码
  5.   │   └── arkui-x-config.json5    // 标记哪些模块跨平台
  6.   ├── AppScope
  7.   ├── entry
  8.   ├── hvigor
  9.   ├── build-profile.json5
  10.   ├── hvigorfile.ts
  11.   ├── local.properties
  12.   └── oh-package.json5
复制代码
此应用目录结构设计思想是从OpenHarmony应用工程原生支持跨平台角度出发,在OpenHarmony应用工程之上叠加Android和iOS应用工程,ArkTS代码和resources资源在OpenHarmony侧完成编译,Native代码仍在各自平台应用工程中完成编译。

  • 如何配置某些模块支持跨平台
基于上面的工程目录结构,说明下跨平台工程如何实现模块级跨平台,.arkui-x > arkui-x-config.json5:
  1. {
  2.   "crossplatform": true,
  3.   "modules": [
  4.     "entry"
  5.   ]
  6. }
复制代码
其中,"modules"中填入跨平台的应用/服务模块名,正确的模块名可参考entry > src > main > module.json5:
  1. {
  2.   "module": {
  3.     "name": "entry",
  4.     "type": "entry",
  5.                 ...
  6.   }
  7. }
复制代码
编译构建说明


  • 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应用工程结构
  1. ArkUI-X Android应用工程
  2. ├── app
  3. │   ├── libs
  4. │   │   ├── arkui_android_adapter.jar                   // ArkUI-X跨平台适配层,在SDK中发布
  5. │   │   └── arm64-v8a
  6. │   │       └── libarkui_android.so                     // ArkUI-X跨平台引擎库,在SDK中发布
  7. │   │       └── libhilog.so                             // ArkUI-X日志库,在SDK中发布
  8. │   ├── src
  9. │   │   ├── androidTest
  10. │   │   ├── main
  11. │   │   │   ├── assets
  12. │   │   │   │   └── arkui-x                             // ArkUI应用编译后的字节码文件和Resources,作为资源文件存放在assets/arkui-x中
  13. │   │   │   │       ├── entry                           // ArkUI单个模块的编译结果
  14. │   │   │   │       │   ├── ets                         // ArkUI单个模块代码的编译结果:包括字节码文件
  15. │   │   │   │       │   │   └── modules.abc
  16. │   │   │   │       │   ├── resources.index             // ArkUI单个模块资源的编译结果:resources资源的编译结果
  17. │   │   │   │       │   ├── resources                   // resources资源中的rawfile资源,不会进行编译。
  18. │   │   │   │       │   └── module.json
  19. │   │   │   │       └── systemres                       // ArkUI框架自带的系统资源
  20. │   │   │   ├── java/com/example/mayapplication
  21. │   │   │   │   ├── MyApplication.java                  // 基于StageApplication扩展MyApplication
  22. │   │   │   │   └── EntryEntryAbilityActivity.java      // 基于StageActivity扩展EntryEntryAbilityActivity
  23. │   │   │   ├── res
  24. │   │   │   └── AndroidManifest.xml
  25. │   │   └── test
  26. │   ├── build.gradle
  27. │   └── proguard-rules.pro
  28. ├── gradle/wrapper
  29. ├── build.gradle
  30. ├── gradle.properties
  31. ├── gradlew
  32. ├── gradlew.bat
  33. └── settings.gradle
复制代码
iOS应用工程结构
  1. ArkUI-X iOS应用工程
  2. ├── app.xcodeproj
  3. │   ├── project.xcworkspace
  4. │   └── project.pbxproj
  5. ├── app
  6. │   ├── Assets.xcassets
  7. │   ├── Base.Iproj
  8. │   ├── AppDelegate.h
  9. │   ├── AppDelegate.m                               // 应用入口, 驱动StageApplication的生命周期
  10. │   ├── EntryEntryAbilityViewController.h           
  11. │   ├── EntryEntryAbilityViewController.m           // 基于StageViewController扩展EntryEntryViewController
  12. │   ├── Info.plist
  13. │   └── main.m
  14. ├── arkui-x                                         // ArkUI应用编译后的字节码文件和Resources,作为资源文件存放在assets/arkui-x中
  15. │   ├── entry                                       // ArkUI单个模块的编译结果
  16. │   │   ├── ets                                     // ArkUI单个模块代码的编译结果:包括字节码文件以及sourceMap文件
  17. │   │   │   └── modules.abc
  18. │   │   ├── resources.index                         // ArkUI单个模块资源的编译结果:resources资源的编译结果
  19. │   │   ├── resources                               // resources资源中的rawfile资源,不会进行编译。
  20. │   │   └── module.json
  21. │   └── systemres                                   // ArkUI框架自带的系统资源
  22. └── frameworks                                      // ArkUI跨平台Framework动态库:包含ArkUI-X的框架以及插件
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册