
欢迎加入【开源鸿蒙PC社区】一起共建鸿蒙化C/C三方库生态。前言peep是由 ryochack 开发的终端文本查看工具采用 Rust 语言编写。它像less命令一样运行但在终端窗口内以一个独立的小面板pane展示文件内容支持文件的自动更新监视follow mode让你在不离开当前工作上下文的前提下快速预览文件内容是查看日志、代码片段和配置文件的理想工具。前置条件环境/工具描述适配库peep开源协议MIT源码版本0.1.6目标平台鸿蒙PC依赖项无操作系统平台macOS原仓库地址https://github.com/ryochack/peep鸿蒙化适配仓库地址https://atomgit.com/OpenHarmonyPCDeveloper/ohos-peep在Ubuntu中搭建鸿蒙PC 三方库交叉编译构建开发环境https://blog.csdn.net/zl392321162/article/details/159284760在macOS中搭建鸿蒙 PC 三方库交叉编译开发环境https://blog.csdn.net/zl392321162/article/details/159284830Windows 10上安装和使用WSL 2、安装Ubuntu 24详细指南https://blog.csdn.net/yyz_1987/article/details/148545443鸿蒙 PC 命令行适配指南Mac 版https://blog.csdn.net/qq_39132095/article/details/154796658鸿蒙 PC 生态三方软件移植开发环境搭建及三方库移植指南https://blog.csdn.net/yyz_1987/article/details/154794871OpenHarmony Linux 命令行工具适配实战基于Cursor × WSL的tree 2.2.1交叉编译与HNP打包全流程指南https://weishuo.blog.csdn.net/article/details/155140843社区维护的鸿蒙 PC 生态命令行工具构建框架lycium_plusplushttps://atomgit.com/OpenHarmonyPCDeveloper/lycium_plusplus支持Rust三方库适配的扩展lycium框架https://atomgit.com/CodexBai/lycium_plusplus.git鸿蒙PC端二进制文件签名命令行使用指南https://blog.csdn.net/jianguo888888/article/details/156644386hnp包验证环境https://bxming.blog.csdn.net/article/details/155073889系列索引篇章标题内容第一篇概述与环境配置Lycium 概念、构建机要求、OHOS SDK 配置第二篇项目结构与适配目录创建目录结构、community vs thirdparty、创建适配目录第三篇HPKBUILD 编写详解元数据字段、过程函数、三种构建系统写法第四篇构建执行与产物获取构建流程、日志分析、多库递归、HAP 集成第五篇流程图与角色职责完整流程图、各角色职责、协作时序第六篇关键注意事项与最佳实践依赖管理、架构超集、日志调试、外部适配仓第七篇快速参考与模板入门步骤、模板、完整案例、检查清单第八篇「番外」扩展lycium框架使其满足rust三方库适配不改变框架原有设计增加Rust三方库适配能力一、环境配置1 OpenHarmony SDK 安装1.1 下载 SDK环境搭建在浏览器中打开 DCP 每日构建列表https://dcp.openharmony.cn/workbench/cicd/dailybuild/dailylist在列表中按本机操作系统选择对应产物名称随版本变化以页面为准开发机系统选择产物关键词Windows / Linuxohos-sdk-fullOHOS 全量 SDK用于交叉编译macOSmac-sdk-fullMac 版 SDK 包下载到本机后解压请将下面文件名替换为你实际下载的包名cd~# Linux / macOS 示例包名以 DCP 页面为准tar-zvxf你下载的-sdk-xxx.tar.gzWindows 请使用资源管理器或 7-Zip 等工具解压对应.zip/.tar.gz包。说明每日构建会更新版本与文件名不要固定使用旧文档中的直链以 DCP 页面上当前可下载的 SDK 包为准。解压后若顶层目录名不是ohos-sdk可将该目录移动或软链为~/ohos-sdk或 Windows 下放到固定路径与下文OHOS-SDK配置一致。再进入ohos-sdk根目录解压文件名以darwin目录下为准下例版本号仅作演示cd~/ohos-sdk# Linux / macOSWindows 请先 cd 到 OHOS_SDK 目录unzipnative-darwin-arm64-6.0.0.46-Beta1.zipunziptoolchains-darwin-arm64-6.0.0.46-Beta1.zipWindows 可对两个 zip右键解压到当前文件夹或使用tar/Expand-Archive等工具解压到ohos-sdk根目录。解压完成后应得到native/、toolchains/等目录含llvm、sysroot、hnpcli等再配置2.1.3中的环境变量。1.2 SDK 目录结构ohos-sdk/ ├── native/ │ ├── llvm/bin/ # 编译器工具链 │ ├── sysroot/ # 系统根目录头文件和库 │ └── build-tools/ # 构建工具 └── toolchains/ └── hnpcli # HNP打包工具1.3 环境变量配置编辑~/.zshrc如果使用 zsh或~/.bash_profile如果使用 bash# OpenHarmony SDK 路径exportOHOS_SDK~/ohos-sdk# 添加到 PATHexportPATH$OHOS_SDK/native/llvm/bin:$PATHexportPATH$OHOS_SDK/native/build-tools/cmake/bin:$PATHexportPATH$OHOS_SDK/toolchains/bin:$PATH# 验证source~/.zshrc# 或 source ~/.bash_profile1.4 验证 SDK 配置# 检查 SDK 路径echo$OHOS_SDK# 检查工具是否在 PATH 中whichclangwhichcmakewhichhnpcli# 检查 SDK 工具目录ls$OHOS_SDK/native/llvm/bin/ls$OHOS_SDK/native/build-tools/cmake/bin/ls$OHOS_SDK/toolchains/# 验证工具版本clang--versioncmake--versionhnpcli--version2 Rust 工具链安装2.1 安装 Rust# 安装 Rust如果未安装curl--protohttps--tlsv1.2-sSfhttps://sh.rustup.rs|shsource~/.cargo/env# 验证安装rustc--versioncargo--version2.2 配置 Rust 环境变量编辑~/.zshrc如果使用 zsh或~/.bash_profile如果使用 bash# Rust 环境变量通常由 rustup 自动添加source~/.cargo/env# 验证source~/.zshrc# 或 source ~/.bash_profilerustc--versioncargo--version二、适配步骤1. 分析peep构建特性peep由Rust语言编写使用Cargo作为构建系统。编译后产出的二进制命令为peep在Cargo.toml的[package]中name peep定义。核心特性Less 风格的面板查看peep类似于less命令但在终端中以独立小面板pane形式呈现文件内容支持上下滚动、搜索跳转等常见分页操作且退出后面板内容仍保留在终端缓冲区中方便回顾。文件自动监视Follow Mode 支持-f/--follow选项当文件被追加写入时自动滚动显示最新内容效果类似tail -f非常适合实时跟踪日志文件变化。支持inotify机制监视文件变更事件。纯键盘交互操作 提供j/k上下滚动、g/G跳转首尾行、/正向搜索、n/N跳转上/下一个匹配项、q/Q退出等直观的键盘快捷键操作习惯与less/vim一致学习成本极低。内容搜索与高亮 内置正则表达式搜索功能在文件中向前搜索匹配内容并高亮显示支持n/N键快速跳转上/下一个匹配结果帮助快速定位关键文本。自定义起始行 通过--start参数指定起始显示行号在查看大型日志或代码文件时可以从指定位置开始浏览避免从头翻页。轻量无外部依赖 编译后为单一二进制文件无运行时外部依赖二进制体积小约 600KB启动速度快适合在资源受限的鸿蒙设备中作为默认文本预览工具使用。2. 创建适配项目参考前置条件列表完成lycium_plusplus交叉框架编译环境搭建以及lycium_plusplus交叉框架代码克隆在lycium_plusplus/RustAdapt创建目标库peep适配目录为ohos-peep。为什么是ohos-peep为了和源库名称做区分表示该库用于ohos设备。ohos-peep创建可以借助编辑器工具如VSCode或者使用文件夹在lycium_plusplus/RustAdapt目录下创建目标库适配目录ohos-peep也可以执行以下命令进行创建。# 我将交叉编译框架克隆在根目录此处可改为正确的目录地址cd~/lycium_plusplus/RustAdaptmkdirohos-peep3. 编写HPKBUILD然后将lycium/template/HPKBUILD.cargo拷贝到RustAdapt/ohos-peep目录下并重命名为HPKBUILDHPKBUILD是lycium交叉编译框架完成编译构建的核心配置文件定义包的元信息、依赖、构建和打包逻辑。需要根据模板在HPKBUILD开头声明peep的基本信息这些字段被lycium用于下载、组织和记录# lycium_plusplus/RustAdapt/ohos-peep/HPKBUILDpkgnamepeep# 库名pkgver0.1.6# 库版本pkgrel0# 发布号pkgdescThe CLI text viewer tool that works like less command on small pane within the terminal window.# 库描述urlhttps://github.com/ryochack/peep# 官网链接archs(arm64-v8a)# cpu 架构license(MIT)depends()# 依赖库的目录名 必须保证被依赖的库的archs是当前库的archs的超集makedepends(cargorustc)# 构建库时的依赖工具-需要用户安装的工具sourcehttps://github.com/ryochack/peep/archive/refs/tags/v${pkgver}.tar.gz# 库源码下载链接downloadpackagetrue# 是否自动下载压缩包如若不写默认 true. (应对一些特殊情况代码只能 git clone (项目中依赖 submoudle ))autounpacktrue# 是否自动解压如若不写默认 true, 如果为 false 则需要用户在 prepare 函数中自行解压buildtoolscargo# 编译方法: cmake(默认) | configure | cargo | 其它则不在此注入 buildargs由 build() 自行处理builddirpeep-${pkgver}# 源码压缩包解压后目录名 编译目录名packagename$builddir.tar.gz# 压缩包名字段配置值用途pkgnamepeeppkgnamepeep包名用于在LYCIUM_ROOT/usr/下创建安装目录、标识依赖关系。pkgver0.1.6pkgver0.1.6上游版本号与https://github.com/ryochack/peep仓库最新发行版本保持一致。pkgrel0pkgrel0包发布号当同一上游版本需要重新打包时递增首次适配为 0。pkgdesc-包的简短描述取自peep官方Cargo.toml。url-上游项目主页URL。archs(arm64-v8a)archs(arm64-v8a)声明支持的架构数组。此处仅列出arm64-v8a但代码内部实际也处理了armeabi-v7a和x86_64此处是声明主要支持而非仅支持。当前鸿蒙 PC 设备为arm64架构因此必须配置arm64-v8a。license(MIT)peep采用MIT协议。depends()无运行时依赖。makedepends(cargo rustc)makedepends(cargo rustc)编译时依赖。Rust工具链是构建前提。sourcerefs/tags/v${pkgver}.tar.gz源码包下载地址。使用${pkgver}变量拼接下载peep 0.1.6的release tarball注意标签含v前缀。downloadpackagetruedownloadpackagetrue告诉lycium构建系统自动下载source指定的源码包。如果设置为false需要在目标库目录下手动下载源码包。autounpacktrueautounpacktrue下载后自动解压无需手动解压步骤。如果设置为false需要手动解压。buildtoolscargobuildtoolscargo声明构建工具类型。lycium据此选择Cargo构建流程而非make/cmake等。builddirpeep-${pkgver}builddirpeep-${pkgver}解压后的源码目录名。prepare()/build()/package()均通过cd $builddir进入此目录。packagename${builddir}.tar.gzpackagename${builddir}.tar.gz源码包文件名用于校验/定位。还需要修改package函数中编译完成后的二进制文件名称peep项目编译完成后会产出一个名为peep的二进制文件在Cargo.toml的[package]中name peep定义此处需要将cp target/${OHOS_RUST_TARGET}/release/xxx改为cp target/${OHOS_RUST_TARGET}/release/peep并复制到安装目录。# 打包安装package(){# 进入 Rust 项目目录和编译时同一个目录cd$builddir# 定义安装路径鸿蒙库的安装目录DEST$LYCIUM_ROOT/usr/$pkgname/$ARCH# 创建安装目录bin 文件夹mkdir-p$DEST/bin/# 【关键】把编译好的 Rust 程序 → 复制到目标目录的 bin 文件夹cptarget/${OHOS_RUST_TARGET}/release/peep$DEST/bin/cd$OLDPWD}4 HNP 打包配置在lycium_plusplus/RustAdapt/ohos-peep目录下创建hnp.json文件因为在HPKBUILD中存在archive函数用于将产物打包为output/arch/pkgname_ver.tar.gz或执行 HNP 打包详细介绍可参考系列索引-构建执行与产物获取。{type:hnp-config,name:peep,version:0.1.6,install:{}}5 交叉编译并解决可能存在的问题HPKBUILD中函数不做改变在lycium_plusplus/lycium目录下打开终端工具输入./build.sh ohos-peep进行第一次交叉编译。交叉编译未通过错误详情为error: could not compilenix(lib)due to51previous errors出现该问题的原因是libc 0.2.126不支持 OHOSnix 0.24不兼容新 libcctrlc 3.2拉入nix 0.24mio缺少os-poll/os-exttokio传递依赖socket2 0.4缺少IovLen支持。针对libc和socket可以直接在HPKBUILD中的build方法cargo build ...之前通过cargo update自动升级对于nix、crtlc、mio需要在perpare方法通过sed方式升级确保旧版本不会被强制依赖。prepare(){cd$builddirmkdir-p.cargo# patch: 升级关键依赖到支持 OHOS 的版本sed-is/nix 0.24/nix 0.31/Cargo.tomlsed-is/ctrlc 3.2/ctrlc 3.5/Cargo.toml# mio 需要启用 os-poll os-ext net 特性peep 使用 mio::unix::SourceFd 和 Poll::newsed-is/mio 0.8/mio { version 0.8, features [os-poll, os-ext, net] }/Cargo.tomlcd${OLDPWD}}# ${OHOS_SDK} oh sdk安装路径# $ARCH 编译的架构是 archs 的遍历# $LYCIUM_ROOT/usr/$pkgname/$ARCH 安装到顶层目录的usr/$pkgname/$ARCH# 执行编译构建的命令build(){# 进入编译工作目录Rust 项目源码所在文件夹cd$builddir# 【关键】更新所有依赖到最新兼容版本支持 OHOS 目标cargoupdate# 【核心编译命令】正式编译 Rust 项目# --release 编译正式发布版优化、速度快# --target 指定编译目标架构鸿蒙aarch64-unknown-linux-ohos# ${OHOS_RUST_TARGET:?} 必须有这个环境变量否则直接报错退出cargobuild--release--target${OHOS_RUST_TARGET:?}# 对最关键一步的退出码进行判断ret$?cd$OLDPWDreturn$ret}如果提示ALL JOBS DONE!!!表示当前交叉编译没有问题编译后的产物可以在lycium/usr/目录和out/arm64-v8目录下查看。三、 在鸿蒙PC上验证交叉编译后的peep命令是否可用将lycium_plusplus/lycium/usr/peep/arm64-v8a/bin/peep二进制文件传到鸿蒙PC上方式有多种可以通过聊天软件。macos设备可以在App Store下载【鸿蒙星河互联】通过分享方式将peep二进制文件发送到鸿蒙PC设备上这种方式需要鸿蒙PC开启华为分享为所有人可见。在鸿蒙PC右下角会弹出接受弹窗选择接受或者另存为接受peep二进制文件。接受后的二进制文件是不可以直接运行的哪怕使用chmod x peep这种方式授权也是无法运行的。需要给二进制文件进行签名后才可以在鸿蒙 PC 侧执行前涉及二进制签名流程可参考《鸿蒙PC端二进制文件签名命令行使用指南》。打开鸿蒙PC终端输入以下命令为peep签名授权。# 进入peep所在目录cdDesktop# 执行签名binary-sign-tool sign-inFilepeep-outFilepeep-selfSign1# 授予权限chmodx peep# 查看peep版本./peep--version四、 FAQ执行签名命令出现“zsh: command not found: binary-sign-tool”提示。需要在应用市场搜索DevBox并安装DevBox提供了一些开发者常用命令主要包含文件和目录操作命令、网络命令、构建命令、签名工具等。