仓颉Interface SDK构建
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 4 个月前 | ||
| 9 个月前 | ||
| 3 个月前 | ||
| 10 个月前 | ||
| 8 个月前 | ||
| 6 个月前 | ||
| 11 个月前 | ||
| 9 个月前 | ||
| 5 个月前 | ||
| 5 个月前 | ||
| 6 个月前 | ||
| 4 个月前 |
仓颉API声明文件公共仓(beta特性)
简介
仓颉API声明文件公共仓用于存储和管理仓颉各个子系统对外的API声明文件,同时提供对应的SDK构建工具,支撑Openharmony SDK中仓颉API的构建。
当前仓颉接口仅支持standard设备。
系统架构
图 1 仓颉API公共仓架构图

如架构图所示:
- API声明: 仓颉OHOS模块以及仓颉标准库API对外声明文件。
- Kit声明: 仓颉Kit模块对外声明文件。
- build-tools: SDK构建相关工具集,主要包含以下工具:
-
Cjo生成工具链: 主要由三部分组成:
-
仓颉接口的文本化描述文件: 包含仓颉API各模块的接口信息、类型定义、函数声明等元数据。构建SDK时,利用flatc工具以及flatbuffers schema文件描述的数据结构,将仓颉接口文本化描述文件序列化成仓颉API各个模块的cjo文件。
有关仓颉cjo以及仓颉cjo和JSON序列化和反序列化构建过程的详细介绍,请参考仓颉cjo和仓颉cjo序列化和反序列化指导。
-
flatbuffers schema文件。
-
python/gn相关构建脚本。
-
-
API Mock库生成工具:包含一个空实现的ohos.mock模块以及相关构建脚本,支撑构建SDK生成仓颉API各个模块的空实现动态库对象。
-
架构图中依赖部件引入说明:
- cangjie_ark_interop: 仓颉SDK中macro包依赖仓颉-ArkTS互操作接口仓构建互操作宏。
- arkui_cangjie_wrapper: 仓颉SDK中macro包依赖ArkUI开发框架仓颉接口仓构建状态管理宏。
- flatbuffers: 是一个高内存效率的跨平台序列化库,提供flatc工具,支撑仓颉SDK构建仓颉cjo文件。
代码目录结构:
interface/sdk_cangjie
├── api
│ └── xxxKit # Kit 具体名字,比如Cangjie, BasicServiceKit等
│ └── xxx.cj.d # 各kit具体模块接口文件,存放路径以kit实际文件列表为准
├── kits # 各kit对外统一声明文件
│ └── xxx.cj.d
├── build-tools # sdk 构建工具
│ ├── cjo # 构建 cjo 相关工具
│ ├── lib
│ │ └── mock # mock API库相关脚本
│ └── script # 构建SDK相关脚本
├── figures # README图片
├── docs
├── LICENSE
└── bundle.json
交付视图
图 2 仓颉SDK交付视图

ohos-sdk:
- Openharmony SDK由js、ets、native、toolchains、previewer以及cangjie六个部分组成,本仓主要涉及cangjie部分。
api:
-
lib包目前仅支持ohos相关的构建工具链,存放仓颉API动态库以及仓颉cjo文件。
- ohos-aarch64-libs: 用于构建ohos-aarch64应用依赖库。
- ohos-x86_64-libs: 用于构建ohos-x86_64应用的依赖库,主要提供给ohos x86_64模拟器使用。
-
api modules包存放仓颉API对外声明文件。
-
api macro包主要存放仓颉宏相关动态库和cjo文件。
仓颉宏的详细介绍,请参考仓颉宏介绍
- ark-interop: cangjie_ark_interop部件的仓颉互操作宏动态库和cjo文件。
- arkui state manager: arkui_cangjie_wrapper部件的仓颉状态管理宏动态库和cjo文件。
build-tools:
- 主要存放仓颉构建工具链,包括仓颉编译器、标准库、运行时库、工具等。
- cangjie-compiler:包括cjc,cjc-frontend等。
- cangjie-runtime:主要包括仓颉runtime和仓颉标准库动态库以及仓颉标准库API对外声明文件。
- cangjie-tools: 主要包括cjpm, cjdb, cjfmt等。
仓颉SDK包目录结构:
cangjie
├── api # API 符号库
│ ├── lib # 仓颉API动态库及其对于cjo
│ │ ├── linux_ohos_aarch64_cjnative
│ │ │ ├── kit
│ │ │ │ ├── xxx.so
│ │ │ │ └── xxx.cjo
│ │ │ └── ohos
│ │ │ ├── xxx.so
│ │ │ └── xxx.cjo
│ │ └── linux_ohos_x86_64_cjnative
│ │ ├── kit
│ │ │ ├── xxx.so
│ │ │ └── xxx.cjo
│ │ └── ohos
│ │ ├── xxx.so
│ │ └── xxx.cjo
│ ├── macro # 仓颉API宏库以及对应cjo
│ │ └── ohos
│ │ ├── xxx.dll/xxx.so/xxx.dylib
│ │ └── xxx.cjo
│ └── modules # 仓颉API对外声明文件
│ └── linux_ohos_aarch64_cjnative
│ ├── kit
│ │ └── kit.xxx.cj.d
│ └── ohos
│ └── ohos.xxx.cj.d
├── build-tools # 仓颉构建工具链
│ ├── bin # 仓颉编译器二进制目录
│ ├── lib # 仓颉标准库静态库存放目录
│ ├── modules # 仓颉标准库头文件以及cjo存放目录
│ ├── runtime # 仓颉运行时动态库存放目录(包括仓颉运行时库和仓颉标准库)
│ ├── third_party # 仓颉依赖的三方库以及三方工具
│ └── tools # 仓颉工具
└── oh-uni-package.json
编译构建
./build.sh --product-name ohos-sdk --ccache --build-target out/sdk/gen/build/ohos/sdk:cangjie
仓颉SDK构建详细说明请参考仓颉SDK构建说明。
约束
- 当前ohos-sdk中仓颉支持windows/linux/mac-x64/mac-arm64平台交叉编译ohos应用,暂不支持ohos平台上构建应用。
参与贡献
欢迎广大开发者贡献代码、文档等内容,具体的贡献流程和方式请参见参与贡献。