系列导读:本文是 Lycium 适配系列的第五篇,通过一张完整的流程图展示适配者、Lycium 框架和 OHOS SDK 三者之间的交互关系,并总结各环节的角色职责。


欢迎加入【开源鸿蒙PC社区】,一起共建鸿蒙化C/C++三方库生态。

前言

项目说明
macOS环境配置https://bxming.blog.csdn.net/article/details/159284830
Ubuntu环境配置(或者windows + wsl)https://bxming.blog.csdn.net /article/details/159284760
lycium框架https://atomgit.com/OpenHarmonyPCDeveloper/lycium_plusplus.git
应用平台HarmonyOS PC

系列索引

篇章标题内容
第一篇概述与环境配置Lycium 概念、构建机要求、OHOS SDK 配置
第二篇项目结构与适配目录创建目录结构、community vs thirdparty、创建适配目录
第三篇HPKBUILD 编写详解元数据字段、过程函数、三种构建系统写法
第四篇构建执行与产物获取构建流程、日志分析、多库递归、HAP 集成
第五篇流程图与角色职责完整流程图、各角色职责、协作时序
第六篇关键注意事项与最佳实践依赖管理、架构超集、日志调试、外部适配仓
第七篇快速参考与模板入门步骤、模板、完整案例、检查清单

1. 完整流程图

Alice Bob John Msg Flow-2026-05-11-134632

流程图解读

这张图清晰地展示了三个角色在适配流程中的交互:

角色主要工作
开发者环境搭建 → 创建 HPKBUILD → 执行构建 → 获取产物输出"做什么"(HPKBUILD 中的构建逻辑)
Lycium 框架加载环境 → 解析依赖 → 调度构建 → 循环多架构负责"怎么做"(编排整个构建流程)
OHOS SDK提供编译器、toolchain、sysroot提供"用什么做"(交叉编译能力)

2. 各环节角色职责总结

适配者(库维护者)

适配者是整个流程的核心驱动者,负责:

序号职责说明
搭建编译环境安装基础工具 + 下载配置 OHOS SDK
创建适配目录、编写 HPKBUILD核心工作:定义元数据 + prepare/build/package 三核心函数
编写开源合规文件README.OpenSourceOAT.xml
生成 SHA512SUM 校验值下载源码包后用 sha512sum 生成
编写 OH 补丁对上游代码做适配修改
调试构建失败分析日志、迭代 HPKBUILD
编写 HAP 集成文档docs/hap_integrate.md
HNP 打包配置hnp.json 配置

Lycium 框架(build.sh + build_hpk.sh)

框架是自动化编排引擎,负责:

序号职责说明
加载交叉编译环境envset.sh 根据不同架构设置编译器路径、CFLAGS 等
依赖拓扑解析与递归调度读取 depends[],自动排序和递归构建
多架构循环执行构建archs[] 中每个架构依次执行完整流程
自动注入构建参数$buildargs(toolchain file、搜索路径、安装前缀)和 $pkgconfigpath
调用 HPKBUILD 各阶段函数按顺序调用 prepare → build → package → archive → check
源码管理下载、校验(SHA512SUM)、解压
构建日志记录每个架构独立日志文件
产物管理安装目录组织、归档打包、构建记录 CSV

OHOS SDK

SDK 是基础设施提供者,负责:

序号职责说明
交叉编译器arm-linux-ohos-clangaarch64-linux-ohos-clang
LLVM 工具链ld.lldllvm-arllvm-stripllvm-ranlibllvm-nmllvm-objcopy
CMake + ToolchainOHOS 定制的 cmake + ohos.toolchain.cmake
musl libc sysrootOpenHarmony 系统的 C 运行时库
HNP 打包工具hnpcli

HPKBUILD 的角色定位

HPKBUILD 是整个适配流程中的适配契约

HPKBUILD 以声明式 + 过程式的形式告知框架:
① 元数据:库名、版本、架构、依赖、源码地址
② 构建逻辑:prepare/build/package 等函数的具体实现

关键原则:框架只提供编排和工具链,不介入具体构建逻辑。具体的编译参数、安装方式等全部由 HPKBUILD 决定。

应用开发者

应用开发者是最终消费者,职责相对简单:

序号职责说明
获取产物usr/<pkgname>/<arch>/output/ 获取已构建好的库文件
集成到 HAP将 .so / .a / .h 文件复制到 HAP 工程目录
配置链接在 HAP 工程的 CMakeLists.txt 中配置 target_link_libraries
验证集成参考 docs/hap_integrate.md 验证集成正确性

3. 角色协作时序

Alice Bob John Msg Flow-2026-05-11-134755


4. 多依赖链示例时序

当目标库有多个依赖时,框架会自动按拓扑排序依次构建。以 libcurl(依赖 opensslzlibnghttp2)为例:

Alice Bob John Msg Flow-2026-05-11-135416

关键提示:适配者只需编写目标库的 HPKBUILD,依赖库由框架自动解决。如果某个依赖也已适配,直接复用;如果未适配,框架会报错提示需要优先构建依赖。


5. 适配全流程速查表

阶段输入输出负责方
0. 环境准备构建工具 + OHOS SDK适配者
1. 创建适配目录下载的源码包thirdparty/<pkgname>/ 目录结构适配者
2. 编写 HPKBUILD库的构建文档HPKBUILD(元数据 + 函数)适配者
3. 构建执行HPKBUILDusr/<pkgname>/ 下的产物Lycium 框架
4. 产物获取安装目录中的 .so/.a/.h归档包 / HNP 包适配者 / 框架
5. HAP 集成库产物可运行的 HAP 应用应用开发者

下篇预告

了解了整体流程和角色职责后,下一篇将总结适配过程中的关键注意事项和最佳实践,包括依赖管理、架构超集规则、SHA512SUM 校验、日志调试技巧、外部适配仓等内容。

Logo

赋能鸿蒙PC开发者,共建全场景原生生态,共享一次开发多端部署创新价值。

更多推荐