2.6 KiB
HarmonyOS Native Build Strategy
Scope
Phase 1 只构建 HarmonyOS API 24 arm64 libmpv。不包含播放器 UI、XComponent 集成、ao_harmony、MPV OHCodec backend、性能优化、HDR 或真机运行声明。
Toolchain
| Item | Value |
|---|---|
| SDK | /Applications/DevEco-Studio.app/Contents/sdk/default/openharmony |
| Version | 6.1.1.125 / API 24 |
| Target | aarch64-linux-ohos |
| Sysroot | <SDK>/native/sysroot |
| Compiler | OHOS Clang 15.0.4 |
| Meson | 1.9.0,仓库隔离 venv |
| Ninja | SDK 1.12.0 |
| pkgconf | 3.0.6,仓库隔离 host tool |
| Cross File | toolchains/ohos-api24-arm64.ini |
| Prefix | build/ohos-arm64/prefix |
scripts/setup-ohos-env.sh 清空 CPATH、C_INCLUDE_PATH、CPLUS_INCLUDE_PATH、LIBRARY_PATH、CMAKE_PREFIX_PATH,并将 pkg-config 限制到 OHOS prefix。target 编译和链接必须同时带 --target 与 --sysroot。
Reproducible Build
scripts/build-all-ohos.sh
顺序固定为:host tools → pinned sources → C/C++ probes → SDK zlib metadata → OpenSSL → FFmpeg → FreeType/FriBidi/HarfBuzz/libass → libplacebo → MPV → 全量 ABI/污染/符号校验。
各步骤也可单独执行:
scripts/verify-toolchain.sh
scripts/build-openssl-ohos.sh
scripts/build-ffmpeg-ohos.sh
scripts/build-font-stack-ohos.sh
scripts/build-libplacebo-ohos.sh
scripts/build-mpv-ohos.sh
scripts/verify-ohos-prefix.sh
所有下载源码按 scripts/fetch-phase1-sources.sh 的 tag/commit 固定。构建目录可删除后重建,禁止从 Homebrew 或 macOS prefix 提供 target library。
MPV Configuration
MPV 使用 -Dauto_features=disabled,再显式启用 libmpv、GPL、plain-gl、OpenGL、vector、zlib。CLI、测试、脚本语言、桌面后端、平台硬件加速 backend 和 Vulkan 均关闭。实际 feature 列表以 DOCS/MPV_BUILD_REPORT.md 和 build/ohos-arm64/logs/mpv.log 为准。
MPV 源码仅增加明确的 host_machine.system() == 'ohos' 检测与 ohos feature。POSIX 路径继续复用现有 threads、timer、path、poll、IPC、subprocess 实现;这些能力当前只能标记 compile verified。
Output and Gates
主产物:build/ohos-arm64/prefix/lib/libmpv.so.2.5.0。
scripts/verify-ohos-prefix.sh 必须同时证明:
- 所有 prefix 静态库成员为 AArch64 ELF;
libmpv为 AArch64 ELF shared object;- 动态依赖仅来自 HarmonyOS SDK allowlist;
.pc/CMake/Ninja target metadata 无 Homebrew、/usr/local、.dylib或 Apple framework;- Client API 与 OpenGL Render API 必需符号存在。
真机行为、CA store、XComponent/EGL 生命周期及 OHCodec buffer 语义留到后续阶段验证。