openHarmony之开源三方库zlib适配讲解
三方开源库适配 OpenHarmony 指南(zlib 篇)
00 速览
步骤 | 命令/动作 | 预期结果 |
---|---|---|
① 拉取源码 | git clone https://github.com/madler/zlib -b v1.3.1 | 得到纯净上游代码 |
② 放入树内 | mv zlib third_party/zlib | 与系统构建同级 |
③ 一键模板 | 复制「OH 三方库脚手架」→ third_party/zlib | 含 BUILD.gn、bundle.json、OAT.xml |
④ 触发构建 | hb build -T //third_party/zlib:libz | out 目录出现 libz.a |
⑤ 功能冒烟 | 运行 example/oh_zlib_test | 打印 “Compression ratio 78%” |
注意:zlib已经适配到官方主代码中,该篇只做讲解,三方库适配可参考我的文章《OpenHarmony之三方库适配深度实践:从移植到合规的全链路指南》
01 认识 zlib
zlib 是 DEFLATE 算法 的工业级实现,提供:
- 内存级压缩/解压(
compress/uncompress
) - 流式 API(
deflate/inflate
) - gzip 封装(
gz*
系列函数) - 跨平台、无第三方依赖、MIT-like 授权
OpenHarmony 已将其作为系统基础库引入,供 ArkTS NDK、图形子系统、包装器(minizip)等使用。
02 目录结构
third_party/zlib
├── BUILD.gn # GN 入口
├── bundle.json # 组件元数据
├── OAT.xml # 开源审计
├── README.OpenSource # 变更履历
├── ohos.patch # OH 专用补丁(可选)
├── include/ # 导出头文件
│ ├── zlib.h
│ └── zconf.h
├── src/ # 上游 c 文件
└── test/ # 冒烟测试
保持「上游代码零改动」原则,所有适配通过
BUILD.gn
、补丁、config 注入完成。
03 核心适配文件
3.1 BUILD.gn
# Copyright (c) 2024 OpenHarmony Project
import("//build/config/config.gni")
import("//build/ohos.gni")
import("//build/ohos/ndk/ndk.gni")# 统一编译选项
ohos_zlib_cflags = ["-Oz", # 体积优先"-Wno-sign-conversion","-Wno-implicit-function-declaration","-DHAVE_STDA