内部培训用讲义,结构与《鸿蒙 PC 命令行移植直播大纲(90 分钟)》一致;侧重知识点展开、命令与流程。
0. 参考资料索引[猫哥的博客--鸿蒙PC专栏]
0.1 文档与正文对应关系
| 序号 | 文件名 | 对应正文位置 |
|---|---|---|
| 1 | 鸿蒙PC命令行移植直播大纲.md |
全书章节划分与时长 |
| 2 | 鸿蒙PC命令行移植直播讲稿(90分钟).md |
节奏与演示提示(可选) |
| 3 | 鸿蒙PC生态三方软件移植:开发环境搭建及三方库移植指南.md |
§1.3、§4.3:WSL/源、build 脚手架、hnp.json、hnpcli、dependency.json、HNP→HAP、pthread 与签名示例 |
| 4 | 移植FFmpeg最新 8.1版本到鸿蒙PC(OpenHarmony)平台完整指南.md |
§2.1:交叉参数、sysroot、HNP、性能与优化 |
| 5 | 低成本搭建鸿蒙PC运行环境:基于 Docker 的 x86_64 服务器.md |
§1.2、§4.2:binfmt、镜像、docker cp、Neovim/axel 验证 |
| 6 | 使用 vcpkg 为鸿蒙(HarmonyOS OHOS)下载与安装三方库实践指南.md |
§2.3:fork、triplet、FAQ、OpenSSL 补丁思路、curl 与签名 |
| 7 | HarmonyOS鸿蒙三方库移植:选 vcpkg 还是 lycium_plusplus?....md |
§2.2、§2.3、§五:对照与选型 |
| 8 | 鸿蒙PC平台三方库移植,使 Lycium移植pngquant的实践总结.md |
§2.2、§三:HPKBUILD、PKG_CONFIG_LIBDIR、pngquant configure |
| 9 | 使用 vcpkg 将 pngquant 命令行移植到鸿蒙 PC.md |
§2.3、§三:port、pngquant[core] |
| 10 | HarmonyOS OpenHarmony 鸿蒙PC平台三方库移植,AI自动化编译框架build_in_harmonyos介绍及使用.md |
§2.5:OpenDesk、ohc-run、知识库、门禁、Gotchas、cmd-pkgs |
0.2 各文档在本课件中的侧重(速览)
- 鸿蒙 PC 生态指南 :Ubuntu 24
ubuntu.sources、Master 全量 SDK 示例、/data/service/hnp、build脚手架、tree 的build_ohos.sh/hnp.json、build.sh分支逻辑、build_dependency.py与dependency.json、HNP→HAP→签 hap、pthread 与binary-sign-tool。 - FFmpeg 指南 :
hnp.json的install字段、PKG_CONFIG 与 lib 路径变量、性能对比表(拓展讲解用)。 - Docker 低成本鸿蒙PC环境:Docker Desktop 多架构、binfmt 重启后须重注册、镜像加速域名(按单位网络策略选用)。
一、开场与环境构建(15 分钟)
1.1 背景与目标
生态背景 (见《鸿蒙PC生态三方软件移植指南》)
- 鸿蒙向 PC 全场景 延伸后,把 Linux/macOS/Windows 侧海量开源软件迁到鸿蒙 PC 成为生态突破口。
- 命令行/原生工具链是 CI、资源管线、开发者工具、系统组件 的共同底座。
案例选择:命令行 + pngquant
- 命令行 是最小可运行单元,演示与验证成本低(
--version、批处理图片)。 - pngquant :GPL-3.0-or-later;2.x 为 C ,依赖 libpng、zlib、lcms2,可串联「依赖解析 → 交叉编译 → 签名 → 部署验证」。
学习目标
- 说明 Windows / WSL / 云主机 / 鸿蒙 PC / Docker 容器 在流程中的分工。
- 对比 直连交叉 / Lycium / vcpkg-ohos 的适用边界。
- 掌握 pngquant:编出产物、处理依赖与签名、在容器或真机上验证、知晓社区侧提交要点。
- 了解 build_in_harmonyos 等「可复现构建 + 归档与分发」类工具的定位(与手工脚本的区别)。
1.2 多维度环境(详细可操作)
A. Windows 宿主
- 安装 DevEco Studio 与 HarmonyOS / OpenHarmony SDK(与命令行交叉共用同一套 NDK、签名工具、文档入口)。
- 图形化便于管理 SDK 版本;编译脚本建议在 WSL 或 Linux 云主机执行(路径、脚本兼容性更好)。
B. WSL(Ubuntu 22.04 / 24.04)
为何选用 WSL
- 与 Linux 服务器、CI 环境一致;cmake/make/git/pkg-config 文档最全。
- 离 Windows 编辑器近,适合「本机编辑 + WSL 编译」。
Ubuntu 22.04:阿里源示例
bash
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo vim /etc/apt/sources.list
# 将 jammy 源改为 mirrors.aliyun.com 等(见原文 deb 块)
sudo apt-get update && sudo apt-get upgrade
Ubuntu 24.04:注意源文件位置变更
- 官方源配置在
/etc/apt/sources.list.d/ubuntu.sources(不再依赖大块sources.list)。 - 可换 清华 / 中科大 / 阿里 / 网易 (
Types: deb+URIs+Suites: noble noble-updates noble-security+Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg)。 - 修改后:
sudo apt-get update && sudo apt-get upgrade -y
基础包
bash
sudo apt install -y python3 python3-pip git cmake ninja-build make pkg-config
# FFmpeg 文还提到:automake libtool
可选:将 python 默认指向 python3
bash
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1
C. 云服务器 x86_64
- 成本低、网络稳、适合 vcpkg 全量编译、FFmpeg 长任务。
- 与 WSL 使用同一套文档命令即可。
D. 鸿蒙 PC 本机(概念要点)
| 主题 | 要点 |
|---|---|
| 工具链 | SDK 内 LLVM/Clang ,链接常用 lld |
| libc | 与桌面 glibc 差异语境下常强调 Musl(具体以 SDK/系统为准) |
| 安全 | 可执行文件与部分 .so 需 签名校验;未签名常见「无权限 / operation not permitted」类现象 |
| 验证 | hdc 推送、LD_LIBRARY_PATH、与容器行为对照 |
E. Docker 鸿蒙容器(低成本 x86_64)
目标 :在 无 ARM 真机 时,得到 arm64 用户态 + OpenHarmony PC 轻量环境,用于跑命令行、测加载。
Windows Docker Desktop
- Settings → Docker Engine 可增加国内 mirror,例如:
json
"registry-mirrors": ["https://docker.1ms.run"]
- 拉取与运行(示例):
bash
docker run --name=ohos -itd --platform linux/arm64 hqzing/docker-mini-openharmony:latest
docker exec -it ohos sh
- 若本机不能直接跑 arm64 容器,可先执行:
bash
docker run --rm --privileged tonistiigi/binfmt --install arm64
Linux x86_64 服务器
- 安装 Docker CE(可用国内一键脚本,选华为云源 + 毫秒镜像等)。
- 注册 QEMU arm64:
bash
docker run --rm --privileged docker.1ms.run/tonistiigi/binfmt --install arm64
ls /proc/sys/fs/binfmt_misc/qemu-aarch64 # 确认 enabled
- 拉取镜像(可加加速前缀):
bash
docker run --name=ohos -itd --platform linux/arm64 docker.1ms.run/hqzing/docker-mini-openharmony:latest
docker exec -it ohos sh
宿主机 ↔ 容器拷贝
bash
docker cp ./pngquant ohos:/root/
docker cp ohos:/root/log.txt ./
容器内验证示例
- 可下载预编译 ohos-neovim 或自编译 axel ,对比 curl 与 axel 的下载耗时(演示用)。
1.3 脚手架与 HNP 标准化(《鸿蒙PC生态三方软件移植...指南》)
与「只产出裸二进制」并列的一条路径:按 OpenHarmony 习惯打 Native 包(HNP)并进入后续分发链路。
SDK 准备(示例链接与解压步骤)
bash
cd ~
# 以下为文中示例 URL;实际使用请以 OpenHarmony 官网/版本站当前包名为准
wget https://cidownload.openharmony.cn/version/Master_Version/ohos-sdk-full_ohos/20250819_020817/version-Master_Version-ohos-sdk-full_ohos-20250819_020817-ohos-sdk-full_ohos.tar.gz
tar -zvxf version-Master_Version-ohos-sdk-full_ohos-20250819_020817-ohos-sdk-full_ohos.tar.gz
cd ~/ohos-sdk/linux
unzip native-linux-x64-6.0.0.46-Beta1.zip
unzip toolchains-linux-x64-6.0.0.46-Beta1.zip
~/ohos-sdk/linux全路径 即后续--sdk/OHOS_SDK所指根目录(版本号以实际包为准)。
HNP 安装目录
bash
sudo mkdir -p /data/service/hnp
sudo chmod 777 -R /data/service/hnp
下载构建脚手架 build
bash
cd ~
git clone git@gitcode.com:OpenHarmonyPCDeveloper/build.git
cd ~/build/code/
git clone git@gitcode.com:OpenHarmonyPCDeveloper/cmdtree.git -b master # 以 tree 为例
部件路径规则
- 规则:
${HNP_PUBLIC_PATH}/<部件名>.org/<部件名>_<版本号> - 例:
.../tree.org/tree_2.2.1
build_ohos.sh 要点(tree 示例)
- 设置
TREE_INSTALL_HNP_PATH,临时改PREFIX指向 HNP 安装根。 make/make install后cp hnp.json到安装目录。- 调用
hnpcli pack再tar出分发包(与 FFmpeg 文hnpcli pack同源能力)。
hnp.json 最小示例(tree)
json
{
"type": "hnp-config",
"name": "tree",
"version": "2.2.1",
"install": {}
}
- FFmpeg 文的
hnp.json则包含install.bins/install.libs,可按部件实际填写。
顶层 ./build.sh --sdk <path>(要点)
- 解析
--sdk,设置OHOS_SDK。 - 根据
uname结果 分支:OpenHarmony:本机工具链OHOS_TOOL_CHAIN_PATHHarmonyOS:本机HMOS_TOOL_CHAIN_PATH,HNP_PERFIX等- 其他(Linux 等) :交叉
${OHOS_SDK}/native/llvm/bin/
- 统一导出:
CC/CXX/LD/AR/...、SYSROOT、PKG_CONFIG_*、HNP_TOOL、ohos.toolchain.cmake、TARGET_PLATFORM=aarch64-linux-ohos、CFLAGS(含-D__MUSL__=1 -D__OHOS__、--target、--sysroot、-fuse-ld)等。 BUILD_BY_DEPENDENCY为 true 时走python build_dependency.py:读dependency.json→git clone→ 各仓./build_ohos.sh。
dependency.json(多仓协作)
json
{
"name": "tree",
"branch": "2.2.1_ohos",
"url": "git@gitcode.com:OpenHarmonyPCDeveloper/cmdtree.git"
}
- 多部件时维护多条 dependency;改目标库时主要改此 JSON。
Native 分发链(须讲清的步骤)
- 源码/二进制按规范装入目录 +
hnp.json hnpcli pack→ 得到.hnp- 将 hnp 打入 hap
- 签名 hap
(详细链路与图示见生态指南;深入可读 OpenHarmony appspawn 仓service/hnp/README_zh.md)
二、核心驱动:三种路径与辅助工具(35 分钟)
2.1 传统方式:直接交叉工具链
适用场景
- 依赖极少,或需要逐项控制编译/链接参数时采用;FFmpeg 一类案例适合用来讲清 sysroot、
--target、lld 与裁剪模块。
FFmpeg 8.1 关键挑战(可列表对比)
| 挑战 | 对策摘要 |
|---|---|
| Clang 与 GCC 差异 | 全套换 llvm- * 工具与 lld |
| Musl 与 glibc | -D__MUSL__=1、-D__OHOS__ 等按工程实践注入 |
| 缺失图形栈 | --disable-vulkan、--disable-libdrm 等先关再迭代 |
| 交叉路径 | --sysroot、--target=aarch64-linux-ohos、PKG_CONFIG_* 指向 sysroot 下 abi 目录 |
环境变量模板(FFmpeg 指南与脚手架脚本中的常见写法)
bash
export OHOS_SDK="/path/to/ohos-sdk/linux"
export COMPILER_TOOLCHAIN=${OHOS_SDK}/native/llvm/bin
export SYSROOT=${OHOS_SDK}/native/sysroot
export TARGET_ARCH="aarch64-linux-ohos" # 或 FFmpeg 文中的 TARGET 写法
export CC="${COMPILER_TOOLCHAIN}/clang"
export CXX="${COMPILER_TOOLCHAIN}/clang++"
export AR="${COMPILER_TOOLCHAIN}/llvm-ar"
export LD="${COMPILER_TOOLCHAIN}/ld.lld"
configure 记忆块(FFmpeg)
text
--target-os=linux
--arch=aarch64
--enable-cross-compile
--cc="$COMPILER_TOOLCHAIN/clang"
--cxx="$COMPILER_TOOLCHAIN/clang++"
--sysroot="$SYSROOT"
--extra-cflags="--target=aarch64-linux-ohos -fPIC -D__MUSL__=1 -D__OHOS__ -fstack-protector-strong"
--extra-ldflags="--target=aarch64-linux-ohos --sysroot=$SYSROOT -fuse-ld=lld -L$LIB_PATH"
--enable-shared --disable-static
--disable-vulkan --disable-libdrm
HNP 打包(FFmpeg 指南与脚手架流程)
bash
cp hnp.json $INSTALL_PREFIX/
${OHOS_SDK}/toolchains/hnpcli pack -i $INSTALL_PREFIX -o ./output/
小结
- 依赖增多后,手工维护交叉脚本易导致 CI 不可复现 ;应引入 vcpkg、Lycium 或团队脚手架 之一做规范化承载。
2.2 进阶方式:Lycium / lycium_plusplus(大纲「Lycim」= Lycium)
框架定位(见 vcpkg 与 lycium_plusplus 对比一文)
- 依赖树 自动解析、
prepare→build→package→archive、多架构循环、HNP 、设备侧 HPKCHECK 、external_deps/module.json 外仓拉取。 - 仓库结构(数量级以仓为准):
lycium/、thirdparty/、community/、external_deps/module.json。
入口对照
| 脚本 | 场景 |
|---|---|
./build.sh |
Linux/macOS/Cygwin 上 交叉 为主 |
./build_local.sh |
鸿蒙 PC 本机 :uname 以 Harmo 开头时走本机 clang |
pngquant(Lycium 适配要点)
| 项 | 内容 |
|---|---|
| 版本 | 2.18.0(示例) |
| 协议 | GPL-3.0-or-later |
| 依赖 | libpng、zlib、lcms2;git clone --recursive(libimagequant) |
buildtools |
configure(勿误设为 cmake) |
| 关键 export | export PKG_CONFIG_LIBDIR="${pkgconfigpath}" |
| configure | --with-libpng=、--with-lcms2、--disable-sse、--extra-cflags、--extra-ldflags |
| 编译命令 | ./build.sh zlib libpng lcms2 pngquant |
| 产物 | lycium/usr/pngquant/<ARCH>/bin/pngquant(以 PREFIX 为准) |
常见问题(Lycium 适配)
| 现象 | 原因 | 处理 |
|---|---|---|
| libpng not found | PKG_CONFIG_LIBDIR 未 export |
按文修正 |
| 路径不一致 | pngroot 与实际 usr/<pkgname>/<ARCH> 不符 |
改 HPKBUILD |
| makedepends 填库名 | Lycium 用 which 查命令 |
库只放 depends |
2.3 现代方式:vcpkg-ohos
背景(Qt 官方博文与 vcpkg 鸿蒙实践)
- Qt 将 HarmonyOS 纳入 vcpkg,目标:一条命令替代「每库手写 shell」。
- 上游 vcpkg-tool 未识别 ohos 前 须用 Qt fork
ohos分支 自编译vcpkg可执行文件。
资源链接
| 说明 | URL |
|---|---|
| Qt 博文 | https://www.qt.io/blog/building-libraries-for-harmonyos-with-vcpkg |
| Qt vcpkg / vcpkg-tool | https://git.qt.io/jobor/vcpkg 、 https://git.qt.io/jobor/vcpkg-tool |
| 社区聚合仓(示例) | https://gitcode.com/OpenHarmonyPCDeveloper/ohos_vcpkg |
搭建步骤(浓缩)
git clone -b ohosvcpkg-tool → cmake+ninja 编译出vcpkggit clone -b ohosvcpkg registry →cp vcpkg-tool/build/vcpkg ~/vcpkg/export VCPKG_ROOT=~/vcpkgexport OHOS_SDK_ROOT=...且存在native/build/cmake/ohos.toolchain.cmake
triplet 表
| Triplet | ABI |
|---|---|
| arm64-ohos | arm64-v8a |
| arm-ohos | armeabi-v7a |
| x64-ohos | x86_64 |
- 注意:动态库 、无版本后缀 soname 策略 → 打包与升级需团队约定。
安装示例
bash
vcpkg install --triplet arm64-ohos libpng zlib
vcpkg install pngquant:arm64-ohos
vcpkg install 'pngquant[core]:arm64-ohos' # 去掉 lcms2 特性
CMake 接入
bash
cmake -S . -B build \
-DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake \
-DVCPKG_TARGET_TRIPLET=arm64-ohos
常见问题(vcpkg OHOS)
- GitHub 超时 :预置 tarball 到
downloads/;ghfast.top等镜像(合规自选);VCPKG_DOWNLOADS_URL_TEMPLATE等。 zip: not found:装zip;否则仅二进制缓存失败,库已安装仍可用。Could not find OHOS SDK:检查OHOS_SDK_ROOT。- OpenSSL x86 asm 混进 OHOS :portfile 里
VCPKG_TARGET_IS_OHOS+no-asm+no-sse2+vcpkg_cmake_get_vars同步--target。 - 真机运行 curl :binary-sign-tool 签名各
.so与可执行文件。
pngquant port 技术点(vcpkg 鸿蒙仓)
| 主题 | 结论 |
|---|---|
| REF vs tag | REF 用 commit SHA ;annotated tag 用 FETCH_REF |
| submodule | vcpkg 树无 .git → 第二次 vcpkg_from_git 拉 libimagequant 再 RENAME 到 lib/ |
| CMake 坑 | 禁止 $ENV{ProgramFiles(x86)} 破坏 Linux 解析 |
| SSE | VCPKG_CROSSCOMPILING 时传 --disable-sse |
| Rust 3.x port | 多为 native ,OHOS 交叉首选 C 2.18.0 port |
2.4 编辑器与排错实践(Cursor、Trae 等)
建议做法
- 收集材料时附上:完整编译/链接报错 、当前使用的 脚本或 port 片段 、
OHOS_SDK_ROOT/VCPKG_ROOT、目标 triplet 与 架构名。 - 适合交给工具辅助的环节:交叉参数对齐、portfile / HPKBUILD 差异草稿、对照官方 FAQ 的核对清单、签名命令中路径占位符填充。
- 合并前须人工核对 :
DESTDIR与安装前缀、是否误链到宿主机的/usr/lib、PKG_CONFIG_*是否指向 sysroot 或 Lycium 前缀;自动化输出不能替代本地一次干净构建验证。
2.5 build_in_harmonyos 自动化编译框架
双仓
| 仓库 | 作用 |
|---|---|
| build_in_harmonyos | OpenDesk Skill、ohc-run.py、软件档案 archives、错误知识库 knowledge/graph |
| cmd-pkgs | 预编译 tar.gz + install.sh 管道安装 |
先决条件
- OpenHarmony aarch64 设备、模拟器或鸿蒙 PC;Python 3.12+;git;clang。
一键向导
bash
wget https://gitcode.com/OpenHarmonyPCDeveloper/build_in_harmonyos/releases/download/init/setup_wizard.sh && \
chmod 777 ./setup_wizard.sh && \
./setup_wizard.sh
- 向导负责:在 hishell 等环境下补齐权限与路径前提;配置 Git/SSH;安装 OpenDesk CLI;写入
PATH、TMPDIR、CMAKE_PREFIX_PATH、LD_LIBRARY_PATH;注册本仓库 Skill。细节见项目内SKILL.md与 setup 说明。
OpenDesk 指令示例(摘自项目文档)
加载编译 SKILL 编译 tree ... 子任务分工 ... 完成后做质量检查 ...
编译主流程(十三步概览)
初始化 → 补丁 → 预扫描 → configure → make → make install DESTDIR → 安全弹窗测试 → make check(可超时跳过)→ staging → package(含签名等) → 安装到 ~/usr/local 模拟 → 用户验证 → finish + G0--G4 门禁。
鸿蒙 Gotchas(速查表)
| 问题 | 对策 |
|---|---|
/tmp 只读 |
TMPDIR 指到 $HOME |
| 软链覆盖 | rm -f && ln -s |
| ELF 未签名 | ohc-run.py sign-elf / binary-sign-tool |
| 无 gcc | CC=clang |
| ncurses .so 崩溃 | 考虑 --without-shared 静态化等 |
质量门禁 G0~G4(摘要)
- G0 :干净构建;G1 :产物完整;G2 :功能;G3 :可移植、签名、rpath;G4:档案闭合。
三、深度实操:pngquant 全过程(20 分钟)
3.1 源码与构建系统认知
- configure :上游 Bash 自写,不是 Autoconf 巨型脚本。
- Makefile :
make会进lib/构建 libimagequant。 - 跨平台 :头文件路径、
pkg-config、禁用 SSE、Musl/GNU 扩展按报错迭代。
3.2 编译产物(双路径对照)
见 §2.2、§2.3;现场演示可只跑一条路径,另一条用表格对照讲解。
3.3 签名
《鸿蒙PC生态...指南》示例(路径按本机 SDK 调整)
bash
../../ohos-sdk/linux/toolchains/lib/binary-sign-tool sign -inFile "a.out" -outFile "a.out.signed" -selfSign "1"
vcpkg curl 示例(多文件)
bash
binary-sign-tool sign -inFile libz.so -outFile libz.so -selfSign "1"
binary-sign-tool sign -inFile libcrypto.so.3 -outFile libcrypto.so.3 -selfSign "1"
binary-sign-tool sign -inFile libssl.so.3 -outFile libssl.so.3 -selfSign "1"
binary-sign-tool sign -inFile libcurl.so -outFile libcurl.so -selfSign "1"
binary-sign-tool sign -inFile curl -outFile curl -selfSign "1"
chmod +x curl
要点
- 可执行文件 及其依赖的
.so在真机策略下通常需一并签名并部署到可访问路径。 - 签名后仍须核对
LD_LIBRARY_PATH、工作目录 与 rpath 是否一致。
四、结果验证与提交(15 分钟)
4.1 真机(hdc)
- 推送
pngquant与依赖 .so 到约定目录。 - 执行:
./pngquant --version;对样张执行压缩并对比 体积/观感。 - pthread hello (见《鸿蒙PC生态...指南》):未签名会出现权限类错误;签名后再经 hdc shell 验证。
4.2 Docker 容器验证
- 复用 §1.2 E :binfmt + 镜像 +
docker cp。 - 检查:缺库、
ldd/readelf、与真机差异记录。
4.3 提交与规范
| 路线 | 提交物 |
|---|---|
| Lycium / tpc | HPKBUILD、补丁、README.OpenSource、校验、日志 |
| vcpkg fork | portfile 、triplet、上游友好补丁说明 |
| 生态脚手架 | dependency.json 登记 url/branch;部件仓内 build_ohos.sh + hnp.json |
| build_in_harmonyos | 归档 manifest、notes、patches、reports;PR 分区与主编审核流程 |
- 大二进制不进源码仓:交配方与脚本;制品走 release/制品库。
- 参考:签名与 hdc 操作见《鸿蒙PC生态...指南》内链;社区交流:https://harmonypc.csdn.net/
五、总结与 Q&A(5 分钟)
5.1 方案总览对照表
| 方式 | 核心抽象 | 长处 | 短处 |
|---|---|---|---|
| 直连交叉 | 手搓 flags | 掌控力强 | 依赖多时脚本与 CI 难维护 |
| Lycium++ | HPKBUILD + HNP + 设备测 | 贴近 OpenHarmony 分发与测试链 | 学习成本、仓库治理 |
| vcpkg-ohos | triplet + port | 与 CMake/Qt 衔接顺 | fork 过渡期;签名与 HNP 常需自建后半段 |
| build 脚手架 | dependency.json + build_ohos | 团队内统一出 HNP/tar | 与上游 port 生态并行,边界需约定 |
| build_in_harmonyos | OpenDesk Skill、知识库、ohc-run.py |
归档、恢复编译、预编译包联动 | 依赖本机/模型服务与网络环境 |
5.2 收尾要点
- 能编译通过 ≠ 能交付运行:签名、库加载路径、HNP/HAP 规范往往占同样多精力。
- 工程上应以 可复现构建(固定 SDK 版本、固定 triplet、记录脚本与补丁)为验收标准,减少「单机偶然编过」带来的返工。
5.3 社区与参考
- 鸿蒙 PC 开发者社区:https://harmonypc.csdn.net/
- OpenHarmony 官网:https://www.openharmony.cn/
- appspawn HNP 说明:
https://gitcode.com/openharmony/startup_appspawn(service/hnp/README_zh.md) - OpenHarmonyPCDeveloper 组织:https://gitcode.com/OpenHarmonyPCDeveloper
附录 A:SDK 包体来源对照
| 参考文档 | SDK 包类型 / 说明 |
|---|---|
| FFmpeg 指南 | Daily 示例 URL(cidownload.openharmony.cn) |
| vcpkg 指南 | 同域示例;校验 native/build/cmake/ohos.toolchain.cmake 是否存在 |
| 鸿蒙 PC 生态指南 | Master 全量 ohos-sdk-full 示例(文件名与日期以当时下载页为准) |
版本提示:演示或录制前在 OpenHarmony 官网或版本站核对当前推荐包名,避免沿用文中过期直链。
附录 B:常用命令备忘
bash
# Lycium pngquant
cd lycium && ./build.sh zlib libpng lcms2 pngquant
# vcpkg pngquant
export OHOS_SDK_ROOT=... && export VCPKG_ROOT=...
$VCPKG_ROOT/vcpkg install pngquant:arm64-ohos
# Docker OHOS
docker run --rm --privileged docker.1ms.run/tonistiigi/binfmt --install arm64
docker run --name=ohos -itd --platform linux/arm64 docker.1ms.run/hqzing/docker-mini-openharmony:latest
docker exec -it ohos sh
# OpenHarmonyPCDeveloper/build 脚手架
cd ~/build && ./build.sh --sdk /path/to/ohos-sdk/linux
# 查看 ELF 头
$OHOS_SDK_ROOT/native/llvm/bin/llvm-readelf -h ./libxxx.so
附录 C:开讲环境检查清单
- WSL 或云机:
cmake make git python3可用 -
OHOS_SDK_ROOT/OHOS_SDK路径与ohos.toolchain.cmake存在 - vcpkg:
vcpkg二进制为 ohos 分支编译产物 - Lycium:
./build.sh zlib已通过或缓存产物 - 容器:镜像可拉取、binfmt 已注册
- 真机:hdc 、binary-sign-tool 路径确认
- 演示用 PNG 样张 1~2 张