鸿蒙ArkUI-X跨平台技术:【SDK结构介绍】

 ArkUI-X SDK目录结构介绍

简介

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

SDK获取

开发工具集成

  • ACE Tools命令行集成 ACE Tools作为ArkUI跨平台应用构建的命令行工具,通过集成ArkUI-X SDK具有创建、编译构建OpenHarmony/HarmonyOS、Android和iOS应用的能力。
  • DevEco Studio集成 DecEco Studio作为ArkUI跨平台应用构建的IDE工具,通过集成ArkUI-X SDK支持一键构建出OpenHarmony/HarmonyOS应用、Android应用、iOS应用的能力。

ArkUI-X SDK构建规则

SDK压缩包命名规则

ArkUI-X编译构建流水线出包时,需按照SDK命名规则进行打包,命名规则如下:

path_操作系统类型_CPU架构类型_版本号_releaseType.zip

表1 SDK规则字段说明

字段描述
path取值为SDK根目录元数据arkui-x.json文件中的path标签内容。
操作系统类型可选值:windows,darwin,linux。
CPU架构类型可选值:"x64"-x86架构,"arm64"-arm架构。
版本号构建版本号与OpenHarmony SDK版本号规则保持一致。
releaseType可选值:Canary,Beta,Release三种可选取值。releaseType后面加数字,标识迭代次数,比如:Beta1。

示例:  arkui-x_windows_x64_1.0.0.0_Release.zip

SDK压缩包内部结构

这里,以macOS平台上的ArkUI-X SDK包为例,对SDK目录结构和内容规格进行说明。更详细的ArkUI-X SDK内容规格会在第五节进行介绍。

arkui-x_darwin_x64_1.0.0.0_Release.zip
└── arkui-x
    ├── engine                   // ArkUI-X的引擎库
    │   ├── lib                  // ArkUI-X的引擎库:包括Android平台及架构的动态库
    │   ├── framework            // ArkUI-X的引擎库:包括iOS平台及架构的Framework库
    │   ├── xcframework          // ArkUI-X的引擎库:包括iOS平台及架构的XCFramework库
    │   ├── ets                  // ArkUI-X增量接口,比如:@arkui-x.bridge
    │   ├── apiConfig.json       // engine库配置文件,用于IDE和ACE Tools解析,以支持应用构建按需打包。
    │   └── systemres            // ArkUI-X框架自带的资源
    ├── plugins                  // ArkUI-X官方提供的插件库
    │   ├── component            // ArkUI组件插件库
    │   └── api                  // @ohos接口插件库,apiConfig.json
    ├── toolchains               // ArkUI-X应用开发工具,比如:ACE Tools。
    ├── sdkConfig.json           // 增量d.ts路径和接口前缀配置
    ├── arkui-x.json             // SDK管理配置,流水线自动生成
    └── NOTICE.txt

ArkUI-X SDK引擎目录结构

ArkUI-X应用构建最小依赖集合,位于arkui-x_darwin_x64_1.0.0.0_Release.zip/arkui-x/engine目录:

engine
├── lib
│   ├── include
│   ├── arkui
│   │   ├── arkui_android_adapter.jar
│   │   ├── android-arm
│   │   ├── android-arm-profile
│   │   ├── android-arm-release
│   │   ├── android-arm64
│   │   ├── android-arm64-profile
│   │   ├── android-arm64-release
│   │   └── android-x86_64
│   ├── third_party                        // 内部目录同arkui
│   └── utils                              // 内部目录同arkui
├── framework
│   ├── arkui
│   │   ├── ios-arm64
│   │   ├── ios-arm64-profile
│   │   ├── ios-arm64-release
│   │   ├── ios-arm64-simulator
│   │   └── ios-x86_64-simulator
│   ├── third_party
│   └── utils
├── xcframework
│   ├── arkui
│   │   ├── ios
│   │   │   └── libarkui_ios.xcframework
│   │   │       ├── Info.plist
│   │   │       ├── ios-arm64
│   │   │       └── ios-arm64_x86_64-simulator
│   │   ├── ios-profile
│   │   │   └── libarkui_ios.xcframework
│   │   │       ├── Info.plist
│   │   │       ├── ios-arm64
│   │   │       └── ios-arm64_x86_64-simulator
│   │   └── ios-release
│   │       └── libarkui_ios.xcframework
│   │           ├── Info.plist
│   │           ├── ios-arm64
│   │           └── ios-arm64_x86_64-simulator
│   ├── third_party                          // 内部目录同arkui
│   └── utils                                // 内部目录同arkui
├── ets
│   └── @arkui-x.bridge.d.ts
├── apiConfig.json
└── systemres

ArkUI-X SDK插件目录结构

ArkUI-X应用按需打包插件库集合,位于arkui-x_darwin_x64_1.0.0.0_Release.zip/arkui-x/plugins目录:

plugins
├── component
│   ├── lib
│   │   ├── include
│   │   └── ${ui-name}                                        // 一个UI组件一个目录
│   │       ├── ${ui-name}.jar
│   │       ├── android-arm
│   │       ├── android-arm-profile
│   │       ├── android-arm-release
│   │       ├── android-arm64
│   │       ├── android-arm64-profile
│   │       ├── android-arm64-release
│   │       │   └── lib${ui-name}.so
│   │       └── android-x86_64
│   ├── framework
│   │   ├── ios-arm64
│   │   ├── ios-arm64-profile
│   │   │   └── lib${ui-name}.framework
│   │   ├── ios-arm64-release
│   │   ├── ios-arm64-simulator
│   │   └── ios-x86_64-simulator
│   ├── xcframework
│   │   ├── ios
│   │   │   └── lib${ui-name}.xcframework
│   │   │       ├── Info.plist
│   │   │       ├── ios-arm64
│   │   │       └── ios-arm64_x86_64-simulator
│   │   ├── ios-profile
│   │   │   └── lib${ui-name}.xcframework
│   │   │       ├── Info.plist
│   │   │       ├── ios-arm64
│   │   │       └── ios-arm64_x86_64-simulator
│   │   └── ios-release
│   │       └── lib${ui-name}.xcframework
│   │           ├── Info.plist
│   │           ├── ios-arm64
│   │           └── ios-arm64_x86_64-simulator
│   └── apiConfig.json
└── api
    ├── lib
    │   ├── include
    │   └── ${module-name}_${submodule-name}                  // 一个API模块一个目录
    │       ├── ${module-name}_${submodule-name}.jar
    │       ├── android-arm
    │       ├── android-arm-profile
    │       ├── android-arm-release
    │       ├── android-arm64
    │       ├── android-arm64-profile
    │       ├── android-arm64-release
    │       │   └── lib${module-name}_${submodule-name}.so
    │       └── android-x86_64
    ├── framework
    │   ├── ios-arm64
    │   ├── ios-arm64-profile
    │   │   └── lib${module-name}_${submodule-name}.framework
    │   ├── ios-arm64-release
    │   ├── ios-arm64-simulator
    │   └── ios-x86_64-simulator
    ├── xcframework
    │   ├── ios
    │   │   └── lib${module-name}_${submodule-name}.xcframework
    │   │       ├── Info.plist
    │   │       ├── ios-arm64
    │   │       └── ios-arm64_x86_64-simulator
    │   ├── ios-profile
    │   │   └── lib${module-name}_${submodule-name}.xcframework
    │   │       ├── Info.plist
    │   │       ├── ios-arm64
    │   │       └── ios-arm64_x86_64-simulator
    │   └── ios-release
    │       └── lib${module-name}_${submodule-name}.xcframework
    │           ├── Info.plist
    │           ├── ios-arm64
    │           └── ios-arm64_x86_64-simulator
    └── apiConfig.json

arkui-x.json配置说明

{
  "apiVersion": "10",
  "displayName": "ArkUI-X",
  "meta": {
    "metaVersion": "1.0.0"
  },
  "path": "arkui-x",
  "releaseType": "Release",
  "version": "1.0.0.0"
}

字段解释如下:

  • apiVersion:  ArkUI-X SDK依赖OpenHarmony SDK的版本。
  • displayName:  ArkUI-X SDK在DevEco Studio的显示名称。
  • path:  ArkUI-X SDK下载的后的路径名称。
  • version:  ArkUI-X SDK编译构建版本号,用于转测试。

ArkUI-X SDK内容详细规格

Windows平台

ArkUI-X SDK引擎目录结构

  • lib目录:ArkUI-X基础框架跨平台实现。
  • ets目录:ArkUI-X独有接口定义和ArkUI跨平台Stage模型相关基础接口配置说明。
  • systemres目录:ArkUI渲染一致性资源主题包。
arkui-x_windows_x64_1.0.0.0_Release.zip/arkui-x/engine
├── lib                                           // ArkUI跨平台引擎及平台适配层
│   ├── include                                   // NAPI和相关辅助C接口
│   ├── arkui
│   │   ├── arkui_android_adapter.jar
│   │   ├── android-arm
│   │   ├── android-arm-profile
│   │   ├── android-arm-release
│   │   ├── android-arm64
│   │   ├── android-arm64-profile
│   │   ├── android-arm64-release
│   │   │   └── libarkui_android.so               // ArkUI跨平台引擎,包含:ArkUI\NAPI\ARk三部分。
│   │   └── android-x86_64
│   ├── third_party
│   └── utils
├── ets                                           // ArkUI-X独有接口定义和ArkUI跨平台Stage模型相关基础接口配置说明。
│   └── @arkui-x.bridge.d.ts
├── apiConfig.json
└── systemres                                     // ArkUI组件渲染一致性系统资源包

ArkUI-X SDK插件目录结构

  • component目录:ArkUI组件插件化动态库。
  • api目录:ArkTS接口插件化动态库。
arkui-x_windows_x64_1.0.0.0_Release.zip/arkui-x/plugins
├── component                                                   // ArkUI组件插件化动态库。
│   ├── lib
│   │   ├── include
│   │   └── ${ui-name}
│   │       ├── ${ui-name}_android_adapter.jar                    // 部分组件实现依赖的Android接口。
│   │       ├── android-arm
│   │       ├── android-arm-profile
│   │       ├── android-arm-release
│   │       ├── android-arm64
│   │       ├── android-arm64-profile
│   │       ├── android-arm64-release
│   │       │   └── lib${ui-name}.so                            // ArkUI组件实现。
│   │       └── android-x86_64
│   └── apiconfig.json                                          // ArkUI组件跨平台实现配置说明。
└── api                                                         // ArkTS接口插件化动态库。
    ├── lib
    │   ├── include
    │   └── ${module-name}_${submodule-name}
    │       ├── ${module-name}_${submodule-name}.jar            // ArkTS接口实现依赖的Android接口。
    │       ├── android-arm
    │       ├── android-arm-profile
    │       ├── android-arm-release
    │       ├── android-arm64
    │       ├── android-arm64-profile
    │       ├── android-arm64-release
    │       │   └── lib${module-name}_${submodule-name}.so      // ArkTS接口实现。
    │       └── android-x86_64
    └── apiConfig.json                                          // ArkTS @ohos接口跨平台实现配置说明。

Linux平台

ArkUI-X SDK引擎目录结构

  • lib目录:ArkUI-X基础框架跨平台实现。
  • ets目录:ArkUI-X独有接口定义和ArkUI跨平台Stage模型相关基础接口配置说明。
  • systemres目录:ArkUI渲染一致性资源主题包。
arkui-x_linux_x64_1.0.0.0_Release.zip/arkui-x/engine
├── lib                                           // ArkUI跨平台引擎及平台适配层
│   ├── include                                   // NAPI和相关辅助C接口
│   ├── arkui
│   │   ├── arkui_android_adapter.jar            // ArkUI Android平台适配层
│   │   ├── android-arm
│   │   ├── android-arm-profile
│   │   ├── android-arm-release
│   │   ├── android-arm64
│   │   ├── android-arm64-profile
│   │   ├── android-arm64-release
│   │   │   └── libarkui_android.so               // ArkUI跨平台引擎,包含:ArkUI\NAPI\ARk三部分。
│   │   └── android-x86_64
│   ├── third_party
│   └── utils
├── ets                                           // ArkUI-X独有接口定义和ArkUI跨平台Stage模型相关基础接口配置说明。
│   └── @arkui-x.bridge.d.ts
├── apiConfig.json
└── systemres                                     // ArkUI组件渲染一致性系统资源包

ArkUI-X SDK插件目录结构

  • component目录:ArkUI组件插件化动态库。
  • api目录:ArkTS接口插件化动态库。
arkui-x_linux_x64_1.0.0.0_Release.zip/arkui-x/plugins
├── component                                                   // ArkUI组件插件化动态库。
│   ├── lib
│   │   ├── include
│   │   └── ${ui-name}
│   │       ├── ${ui-name}_android_adapter.jar                    // 部分组件实现依赖的Android接口。
│   │       ├── android-arm
│   │       ├── android-arm-profile
│   │       ├── android-arm-release
│   │       ├── android-arm64
│   │       ├── android-arm64-profile
│   │       ├── android-arm64-release
│   │       │   └── lib${ui-name}.so                            // ArkUI组件实现。
│   │       └── android-x86_64
│   └── apiconfig.json                                          // ArkUI组件跨平台实现配置说明。
└── api                                                         // ArkTS接口插件化动态库。
    ├── lib
    │   ├── include
    │   └── ${module-name}_${submodule-name}
    │       ├── ${module-name}_${submodule-name}.jar            // ArkTS接口实现依赖的Android接口。
    │       ├── android-arm
    │       ├── android-arm-profile
    │       ├── android-arm-release
    │       ├── android-arm64
    │       ├── android-arm64-profile
    │       ├── android-arm64-release
    │       │   └── lib${module-name}_${submodule-name}.so      // ArkTS接口实现。
    │       └── android-x86_64
    └── apiConfig.json                                          // ArkTS @ohos接口跨平台实现配置说明。

macOS平台

ArkUI-X SDK引擎目录结构

  • lib、framework、xcframework目录:ArkUI-X基础框架跨平台实现。
  • ets目录:ArkUI-X独有接口定义和ArkUI跨平台Stage模型相关基础接口配置说明。
  • systemres目录:ArkUI渲染一致性资源主题包。
arkui-x_darwin_x64_1.0.0.0_Release.zip/arkui-x/engine
├── lib                                                 // ArkUI跨平台引擎及平台适配层
│   ├── include                                         // NAPI和相关辅助C接口
│   ├── arkui
│   │   ├── arkui_android_adapter.jar                     // ArkUI Android平台适配层
│   │   ├── android-arm
│   │   ├── android-arm-profile
│   │   ├── android-arm-release
│   │   ├── android-arm64
│   │   ├── android-arm64-profile
│   │   ├── android-arm64-release
│   │   │   └── libarkui_android.so                     // ArkUI跨平台引擎,包含:ArkUI\NAPI\ARk\Ability等部分。
│   │   └── android-x86_64
│   ├── third_party
│   └── utils
├── framework
│   ├── arkui
│   │   ├── ios-arm64
│   │   ├── ios-arm64-profile
│   │   ├── ios-arm64-release
│   │   │   └── libarkui_ios.framework                    // ArkUI跨平台引擎及平台适配层
│   │   │       ├── Headers
│   │   │       ├── Info.plist
│   │   │       ├── libarkui_ios
│   │   │       ├── libarkui_ios.podspec
│   │   │       └── Modules
│   │   │           └── module.modulemap
│   │   ├── ios-arm64-simulator
│   │   └── ios-x86_64-simulator
│   ├── third_party
│   └── utils
├── xcframework
│   ├── arkui
│   │   ├── ios
│   │   │   └── libarkui_ios.xcframework                     // ArkUI跨平台引擎及平台适配层
│   │   │       ├── Info.plist
│   │   │       ├── ios-arm64
│   │   │       └── ios-arm64_x86_64-simulator
│   │   ├── ios-profile
│   │   │   └── libarkui_ios.xcframework                     // ArkUI跨平台引擎及平台适配层
│   │   │       ├── Info.plist
│   │   │       ├── ios-arm64
│   │   │       └── ios-arm64_x86_64-simulator
│   │   └── ios-release
│   │       └── libarkui_ios.xcframework                     // ArkUI跨平台引擎及平台适配层
│   │           ├── Info.plist
│   │           ├── ios-arm64
│   │           │   └── libarkui_ios.framework
│   │           │       ├── Headers
│   │           │       ├── Info.plist
│   │           │       ├── libarkui_ios
│   │           │       ├── libarkui_ios.podspec
│   │           │       └── Modules
│   │           │           └── module.modulemap
│   │           └── ios-arm64_x86_64-simulator
│   ├── third_party
│   └── utils
├── ets                                                 // ArkUI-X独有接口定义和ArkUI跨平台Stage模型相关基础接口配置说明。
│   └── @arkui-x.bridge.d.ts
├── apiConfig.json
└── systemres                                           // ArkUI组件渲染一致性系统资源包

搜狗高速浏览器截图20240326151450.png

ArkUI-X SDK插件目录结构

  • component目录:ArkUI组件插件化动态库。
  • api目录:ArkTS接口插件化动态库。
arkui-x_darwin_x64_1.0.0.0_Release.zip/arkui-x/plugins
├── component                                                  // ArkUI组件插件化动态库。
│   ├── lib
│   │   ├── include
│   │   └── ${ui-name}
│   │       ├── ${ui-name}_android_adapter.jar                 // 部分组件实现依赖的Android接口。
│   │       ├── android-arm
│   │       ├── android-arm-profile
│   │       ├── android-arm-release
│   │       ├── android-arm64
│   │       ├── android-arm64-profile
│   │       ├── android-arm64-release
│   │       │   └── lib${ui-name}.so                           // ArkUI组件实现。
│   │       └── android-x86_64
│   ├── framework
│   │   ├── ios-arm64
│   │   ├── ios-arm64-profile
│   │   ├── ios-arm64-release
│   │   │   └── lib${ui-name}.framework                        // ArkUI组件实现。
│   │   │       ├── Headers
│   │   │       ├── Info.plist
│   │   │       ├── lib${ui-name}
│   │   │       ├── lib${ui-name}.podspec
│   │   │       └── Modules
│   │   │           └── module.modulemap
│   │   ├── ios-arm64-simulator
│   │   └── ios-x86_64-simulator
│   ├── xcframework
│   │   ├── ios
│   │   │   └── lib${ui-name}.xcframework                          // ArkUI组件实现。
│   │   │       ├── Info.plist
│   │   │       ├── ios-arm64
│   │   │       └── ios-arm64_x86_64-simulator
│   │   ├── ios-profile
│   │   │   └── lib${ui-name}.xcframework                          // ArkUI组件实现。
│   │   │       ├── Info.plist
│   │   │       ├── ios-arm64
│   │   │       └── ios-arm64_x86_64-simulator
│   │   └── ios-release
│   │       └── lib${ui-name}.xcframework                          // ArkUI组件实现。
│   │           ├── Info.plist
│   │           ├── ios-arm64
│   │           │   └── lib${ui-name}.framework
│   │           │       ├── Headers
│   │           │       ├── Info.plist
│   │           │       ├── lib${ui-name}
│   │           │       ├── lib${ui-name}.podspec
│   │           │       └── Modules
│   │           │           └── module.modulemap
│   │           └── ios-arm64_x86_64-simulator
│   └── apiConfig.json                                         // ArkTS UI组件跨平台实现配置说明。
└── api                                                        // ArkTS接口插件化动态库。
    ├── lib
    │   ├── include
    │   └── ${module-name}_${submodule-name}
    │       ├── ${module-name}_${submodule-name}_android_adapter.jar       // ArkTS接口实现依赖的Android接口。
    │       ├── android-arm
    │       ├── android-arm-profile
    │       ├── android-arm-release
    │       ├── android-arm64
    │       ├── android-arm64-profile
    │       ├── android-arm64-release
    │       │   └── lib${module-name}_${submodule-name}.so     // ArkTS接口实现。
    │       └── android-x86_64
    ├── framework
    │   ├── ios-arm64
    │   ├── ios-arm64-profile
    │   ├── ios-arm64-release
    │   │   └── lib${module-name}_${submodule-name}.framework  // ArkTS接口实现。
    │   │       ├── Headers
    │   │       ├── Info.plist
    │   │       ├── lib${module-name}_${submodule-name}
    │   │       ├── lib${module-name}_${submodule-name}.podspec
    │   │       └── Modules
    │   │           └── module.modulemap
    │   ├── ios-arm64-simulator
    │   └── ios-x86_64-simulator
    ├── xcframework
    │   ├── ios
    │   │   └── lib${module-name}_${submodule-name}.xcframework    // ArkTS接口实现。
    │   │       ├── Info.plist
    │   │       ├── ios-arm64
    │   │       └── ios-arm64_x86_64-simulator
    │   ├── ios-profile
    │   │   └── lib${module-name}_${submodule-name}.xcframework    // ArkTS接口实现。
    │   │       ├── Info.plist
    │   │       ├── ios-arm64
    │   │       └── ios-arm64_x86_64-simulator
    │   └── ios-release
    │       └── lib${module-name}_${submodule-name}.xcframework    // ArkTS接口实现。
    │           ├── Info.plist
    │           ├── ios-arm64
    │           │   └── lib${module-name}_${submodule-name}.framework
    │           │       ├── Headers
    │           │       ├── Info.plist
    │           │       ├── lib${module-name}_${submodule-name}
    │           │       ├── lib${module-name}_${submodule-name}.podspec
    │           │       └── Modules
    │           │           └── module.modulemap
    │           └── ios-arm64_x86_64-simulator
    └── apiConfig.json                                         // A

鸿蒙开发岗位需要掌握那些核心要领?

目前还有很多小伙伴不知道要学习哪些鸿蒙技术?不知道重点掌握哪些?为了避免学习时频繁踩坑,最终浪费大量时间的。

自己学习时必须要有一份实用的鸿蒙(Harmony NEXT)资料非常有必要。 这里我推荐,根据鸿蒙开发官网梳理与华为内部人员的分享总结出的开发文档。内容包含了:【ArkTS、ArkUI、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战】等技术知识点。

废话就不多说了,接下来好好看下这份资料。

如果你是一名Android、Java、前端等等开发人员,想要转入鸿蒙方向发展。可以直接领取这份资料辅助你的学习鸿蒙OpenHarmony知识←前往。下面是鸿蒙开发的学习路线图。

针对鸿蒙成长路线打造的鸿蒙学习文档。鸿蒙(OpenHarmony )学习手册(共计1236页)与鸿蒙(OpenHarmony )开发入门教学视频,帮助大家在技术的道路上更进一步。

其中内容包含:

《鸿蒙开发基础》鸿蒙OpenHarmony知识←前往

  1. ArkTS语言
  2. 安装DevEco Studio
  3. 运用你的第一个ArkTS应用
  4. ArkUI声明式UI开发
  5. .……

《鸿蒙开发进阶》鸿蒙OpenHarmony知识←前往

  1. Stage模型入门
  2. 网络管理
  3. 数据管理
  4. 电话服务
  5. 分布式应用开发
  6. 通知与窗口管理
  7. 多媒体技术
  8. 安全技能
  9. 任务管理
  10. WebGL
  11. 国际化开发
  12. 应用测试
  13. DFX面向未来设计
  14. 鸿蒙系统移植和裁剪定制
  15. ……

《鸿蒙开发实战》鸿蒙OpenHarmony知识←前往

  1. ArkTS实践
  2. UIAbility应用
  3. 网络案例
  4. ……

最后

鸿蒙是完全具备无与伦比的机遇和潜力的;预计到年底将有 5,000 款的应用完成原生鸿蒙开发,这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行!

  • 17
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值