ArkUI-X SDK配置和构建说明

ArkUI-X SDK是ArkUI-X开源项目的编译产物,可将ArkUI-X SDK集成到现有Android和iOS应用工程中,使开发者基于一套ArkTS主代码,就可以构建支持多平台的精美、高性能应用。SDK内容包含ArkUI跨平台运行时,组件和接口插件库,以及ACE Tools命令行工具。主要目录结构如下,内部详细结构请参考ArkUI-X SDK目录结构介绍

ArkUI-X SDK
├── 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组件插件库,apiConfig.json
│   └── api                  // @ohos接口插件库,apiConfig.json
├── toolchains               // ArkUI-X应用开发工具,比如:ACE Tools。
├── sdkConfig.json           // 增量d.ts路径和接口前缀配置
├── arkui-x.json             // SDK管理配置,流水线自动生成
└── NOTICE.txt

下面将分别讲述:如何配置ArkUI-X SDK内容白名单,如何编译生成ArkUI-X SDK包,以及如何验证调试生成的ArkUI-X SDK包。

ArkUI-SDK配置说明

这里,ArkUI-SDK白名单内容配置以@ohos接口跨平台实现为例,并通过@ohos.i18n (国际化-I18n)进行讲述。

@ohos.i18n接口跨平台实现

这里,对于@ohos.i18n接口定义如何具体实现不做详细描述,可请参考:Android平台扩展@ohos接口iOS平台扩展@ohos接口

  • @ohos.i18n接口定义跨平台实现后,提供i18n_static_android和i18n_static_ios两个静态链接Targets。根据模块名规则,@ohos.i18n的模块名为i18n,需配置在插件列表中common_plugin_libs,作为插件模板(plugin_lib)的输入。

  • plugin_lib模板会在arkui_for_android仓arkui_for_ios仓进行调用。分别生成动态链接Targets:

    • //foundation/arkui/ace_engine/adapter/android/build:i18n
    • //foundation/arkui/ace_engine/adapter/ios/build:libi18n
  • 由于i18n涉及Android平台接口调用,还会提供Java Library GN Targets://plugins/i18n/android/java:i18n_plugin_java

@ohos.i18n SDK构建白名单配置

@ohos.i18n接口定义跨平台实现后,需在插件仓完成白名单配置,编译时打包到ArkUI-X SDK中。

Android平台白名单配置

    {
        "install_dir": "arkui-x/plugins/api/lib/i18n/arch_type",                     // 用于指定输出到ArkUI-X SDK哪个目录下。
        "module_label": "//foundation/arkui/ace_engine/adapter/android/build:i18n",  // 需要打包到ArkUI-X SDK的内容(动态库)
        "target_os": [
            "linux",
            "windows",
            "darwin"
        ]
    },
    {
        "install_dir": "arkui-x/plugins/api/lib/i18n",                               // 用于指定输出到ArkUI-X SDK哪个目录下,如果不依赖平台接口,则不需要。
        "module_label": "//plugins/i18n/android/java:i18n_plugin_java",              // 需要打包到ArkUI-X SDK的内容(Jar包),如果不依赖平台接口,则不需要。
        "target_os": [
            "linux",
            "windows",
            "darwin"
        ]
    },

iOS平台白名单配置

    {
        "install_dir": "arkui-x/plugins/api/framework/arch_type/libi18n.framework",   // 用于指定输出到ArkUI-X SDK哪个目录下。
        "module_label": "//foundation/arkui/ace_engine/adapter/ios/build:libi18n",    // 需要打包到ArkUI-X SDK的内容(Framework动态库)
        "target_os": [
            "darwin"
            ]
    },

@ohos.i18n接口调用解析

ArkUI-X SDK中engine和plugins目录都会包含apiConfig.json配置文件,用于DevEco Studio和ACE Tools解析,可使开发者只关注ArkTS代码开发,无需关注引用的ArkUI控件和@ohos接口插件。这里,对于如何解析apiConfig.json不做描述,只讲述如何在SDK仓配置apiConfig.json文件。

    {
        "module": "ohos.i18n",                                           // 表示OpenHarmony中的i18n接口模块:@ohos.i18n
        "library": {
            "android": [                                                 // 表示i18n在Android平台进行应用开发时,哪些库需打包到Android应用安装包中。
                "lib/i18n/ace_i18n_plugin_android.jar",
                "lib/i18n/arch_type/libi18n.so"
            ],
            "ios":[ "xcframework/build_modes/libi18n.xcframework" ]      // 表示i18n在iOS平台进行应用开发时,哪些库需打包到iOS应用安装包中。
        },
        "deps": {
            "android": [],                                               // 表示i18n在Android平台进行应用开发时,哪些依赖库需打包到Android安装包中,空代表没有依赖。
            "ios":[]                                                     // 表示i18n在iOS平台进行应用开发时,哪些依赖库需打包到iOS安装包中,空代表没有依赖。
        }
    },

ArkUI-SDK构建说明

ArkU-SDK构建在ArkUI-X框架基础构建上新增了ArkUI-X SDK包构建指令,详细如下:

Linux平台编译

  • 构建ArkUI-X Debug,Release和Profile全量版本,仅用于Android平台。
./build.sh --product-name arkui-x --target-os android --gn-args gen_full_sdk=true
  • 构建ArkUI-X Release版本,仅用于Android平台。
./build.sh --product-name arkui-x --target-os android

macOS平台编译

Android和iOS联合打包

  • 构建ArkUI-X Debug,Release和Profile全量版本,可用于Android和iOS平台。
./build.sh --product-name arkui-x --target-os ios --gn-args gen_full_sdk=true build_android=true
  • 构建ArkUI-X Release版本,可用于Android和iOS平台。
./build.sh --product-name arkui-x --target-os ios build_android=true

iOS

  • 构建ArkUI-X Debug,Profile和Release全量版本,仅用于iOS平台。
./build.sh --product-name arkui-x --target-os ios --gn-args gen_full_sdk=true
  • 构建ArkUI-X Release版本,仅用于iOS平台。
./build.sh --product-name arkui-x --target-os ios

Android

  • 构建ArkUI-X Debug,Profile和Release全量版本,仅用于Android平台。
./build.sh --product-name arkui-x --target-os android --gn-args gen_full_sdk=true
  • 构建ArkUI-X Release版本,仅用于Android平台。
./build.sh --product-name arkui-x --target-os android

ArkUI-SDK调试说明

  • ArkUI-X SDK编译输出目录为:out/arkui-x/packages/arkui-x

  • 替换当前Windows\macOS\Linux平台上已安装的ArkUI-X SDK。