IDLize CLI 参考

本文档面向需要直接调用 runner 的 IDLize 工具使用者和生成器开发者。标准生成流程 优先使用仓库根目录的 bash generate.sh;需要自定义 SDK 阶段、输入 IDL 或输出目标时, 再直接调用 runner

1. 调用形式

从仓库根目录执行:

node runner <command> [options]

runner 使用 commander 定义命令,命令实现位于 runner/src/main.ts

2. m3

node runner m3 <sdk-path> <idl-files...> [options]

m3 是主生成管线,负责 SDK 准备、声明到 IDL、scrape、IDL 到 peer 生成、格式化和 输出安装。

位置参数

参数 必需 说明
<sdk-path> SDK 目录路径。--sdk-stage=prepared 时传已准备 SDK;idl 阶段可传占位 SDK 路径。
<idl-files...> 一个或多个额外 IDL 文件或目录。

选项

选项 默认值 说明
--output <path> 必需 安装生成文件的输出目录。
--sdk-stage <stage> 必需 originalpreparedidl
--arkgen-options-file <file> 必需 arkgen 生成配置路径。
--arkgen-interop-types <file> 必需 interop-types.h 路径。
--scraper-options-file <file> 必需 scraper 配置路径。
--etsgen-options-file <file> original / prepared 阶段必需 etsgen 转换配置路径;idl 阶段不使用。
--etsgen <executable> npx etsgen etsgen 可执行命令;idl 阶段忽略。
--arkgen <executable> npx arkgen arkgen 可执行命令。
--target <target> sig 生成目标:siglibaceall
--language <language> arkts 输出语言:tsarkts
--no-arkgen-dummy-impl 关闭时生成测试实现 不生成 dummy_impl.ccreal_impl.cc 测试文件。

标准示例

node runner m3 sdk-patched-arkts ./interfaces/interfaces/arkui-extra/ \
    --sdk-stage prepared \
    --arkgen-options-file ./arkgen/generation-config/config.json \
    --etsgen-options-file ./etsgen/generator-config.json \
    --arkgen-interop-types ./runner/interop-types/src/cpp/interop-types.h \
    --scraper-options-file ./runner/configs/scraper-config.json \
    --arkgen "node arkgen" \
    --etsgen "node etsgen" \
    --target all \
    --no-arkgen-dummy-impl \
    --output "./out"

仅从 IDL 生成

node runner m3 ./sdk ./my-component.idl \
  --output ./out \
  --sdk-stage idl \
  --arkgen-options-file ./arkgen/generation-config/config.json \
  --arkgen-interop-types ./runner/interop-types/src/cpp/interop-types.h \
  --scraper-options-file ./runner/configs/scraper-config.json \
  --target all

3. complete

node runner complete <sdk-path> [options]

使用 ohosgen 管线从完整 SDK 生成 peer,是 m3 之外的生成路径。

选项 默认值 说明
--ohosgen-config <file> 必需 ohosgen 配置路径。
--sdk-stage <stage> 必需 originalpreparedidl
--etsgen <executable> npx etsgen etsgen 可执行命令;idl 阶段忽略。
--ohosgen <executable> npx ohosgen ohosgen 可执行命令。
--target <target> sig 生成目标:siglibaceall
--language <language> arkts 输出语言:tsarkts

示例:

node runner complete ./sdk \
  --ohosgen-config ./ohosgen-config.json \
  --sdk-stage prepared \
  --target all

4. sdk

node runner sdk <sdk-path> <prepared-sdk-12> <prepared-sdk-11>

准备 SDK,但不运行代码生成。

参数 说明
<sdk-path> 原始 SDK 目录路径。
<prepared-sdk-12> API 12 prepared SDK 输出路径。
<prepared-sdk-11> API 11 prepared SDK 输出路径。

示例:

node runner sdk ./interface_sdk-js ./out/patched-sdk-arkts ./out/patched-sdk-ts

5. m3-sdk

node runner m3-sdk <prepared-sdk-12> <absolute-prepared-sdk-12> [options]

生成适合 peer 链接使用、且路径不依赖当前工作目录的 SDK。

选项 说明
--original-sdk 将第一个参数视为原始 SDK,并先执行准备流程。

示例:

node runner m3-sdk ./out/patched-sdk-arkts ./out/absolute-sdk

6. SDK 形态转换命令

sdk-new-shape

node runner sdk-new-shape <path>

通过转换 builder 函数创建新的 SDK 形态。

transform-builder-functions

node runner transform-builder-functions <api-path>

在预处理后的 SDK API 目录中转换组件 builder 函数。

7. 输出位置

场景 输出
m3 --target sig runner/out/peers/sig/ 安装到 --output
m3 --target libace runner/out/peers/libace/ 安装到 --output
m3 --target all 将整个 runner/out/peers/ 安装到 --output,通常包含 sig/libace/
中间 IDL runner/out/idl/
中间 peer 输出 runner/out/peers/

8. 常用模式

SDK 到完整生成输出

node runner sdk ./interface_sdk-js ./out/patched-sdk-arkts ./out/patched-sdk-ts

node runner m3 ./out/patched-sdk-arkts ./custom.idl \
  --output ./out \
  --sdk-stage prepared \
  --arkgen-options-file ./arkgen/generation-config/config.json \
  --etsgen-options-file ./etsgen/generator-config.json \
  --arkgen-interop-types ./runner/interop-types/src/cpp/interop-types.h \
  --scraper-options-file ./runner/configs/scraper-config.json \
  --target all \
  --language arkts

快速定位参数定义

命令参数定义在 runner/src/main.ts。如果本文档与源码不一致,以源码为准。