开源鸿蒙PC开发者建议书:权限设计、软件生态与从 macOS 能学到什么

欢迎加入开源鸿蒙 PC 社区:https://harmonypc.csdn.net/


做了几个月的鸿蒙 PC 三方库适配,有一个感受越来越强烈:这个系统在「底层技术能力」上已经足够扎实,但在「开发者体验」和「生态完备度」上,还有很多可以做好的地方。 这篇文章不是吐槽,是一个在鸿蒙上写了几个月代码的人,坐下来认真想想「如果我是产品经理,我会建议什么」。

一、权限体系:安全不能以牺牲开发者效率为代价

当前的问题

鸿蒙的权限模型是值得肯定的——它在手机端建立了一套严格的沙盒机制,应用不能随意访问用户数据。这套模型搬到 PC 上,安全基调是对的,但颗粒度需要重新审视。

我自己踩过的几个典型场景:

场景一:tar 解压把 .so 权限改成 770

构建产物打包成 tar.gz,在设备上用系统 tar 解压后,.so 文件的权限被强制设为 770,导致动态链接器无法加载。这个 bug 的根因是文件系统层面的权限策略——系统在解压时重写了文件权限,而非保留打包时的原始权限。

场景二:LD_LIBRARY_PATH 经常不生效

做交叉编译产物的真机验证时,最自然的做法是设一个 LD_LIBRARY_PATH 让程序能找到依赖的 .so。但在鸿蒙上这个环境变量经常被忽略——这是进程沙盒对动态库加载路径的限制。开发者不得不使用 $ORIGIN rpath 或手动拷贝 so 到系统目录来绕过。

场景三:/tmp 只读导致构建脚本失败

有些 autotools 或 cmake 项目在配置阶段会往 /tmp 写临时文件做编译能力探测。鸿蒙的 /tmp 是只读的,导致这些探测直接失败。

建议

1. 区分「开发者模式」和「普通用户模式」

这是 macOS 做得非常成熟的地方。普通用户日常使用时,系统保护全开——签名校验、沙盒隔离、SIP(系统完整性保护)。但当开发者主动开启「开发者模式」后:

  • 允许未经签名的二进制执行(当然要给警告);
  • 放宽 /tmp 和用户目录的读写限制;
  • 允许 LD_LIBRARY_PATH 等调试用环境变量生效;
  • 允许 hdc 调试器和 native debugger 附加到进程。

鸿蒙 PC 已经在设置里提供了「开发者选项」入口,这是一个很好的起点。建议把上面这些能力收敛到开发者模式开关下——普通用户看到的是安全,开发者看到的是效率,两不耽误。

2. 文件系统权限策略的精细化

不要一刀切地对所有目录应用同一套 ACL。对于 /usr/local/opt~/dev 这类开发者常用路径,应该提供更宽松的默认权限。tar 解压保留原始权限这个 bug 更是应该从系统层面修掉——它不只是开发者的痛,任何需要手动部署软件包的用户都会撞到。

3. 提供一个「签名豁免」或「自签名信任」机制

macOS 允许用户在「安全性与隐私」设置中手动允许被系统拦截的未签名应用运行。鸿蒙目前的 binary-sign-tool -selfSign "1" 是一个权宜之计,但需要开发者手动对每一个二进制签名。建议提供一个系统级的「信任此开发者」或「允许未签名应用运行」的开关,让开发阶段的调试不被签名流程打断。

二、软件生态:先解决「有没有」,再追求「好不好」

当前状态

鸿蒙 PC 的软件生态,目前大致可以分三层来看:

层级 状态 代表
华为原生应用 已有但覆盖面有限 浏览器、文件管理器、设置等基础应用
鸿蒙化第三方应用 正在快速增长 微信鸿蒙版、WPS 鸿蒙版等头部应用陆续适配
Linux 开源软件迁移 社区在发力,但远未规模化 lycium 已归档 275 个库,但以命令行工具和库为主

我的优先级建议

做生态,资源永远是有限的。按我的判断,以下四类软件应该优先搞定——不是「按热度排」,而是「按对开发者生产力的影响排」。

第一优先级:开发工具链(没有这个,开发者不会来)

  • 终端模拟器:不仅仅是能跑 bash,要支持分屏、标签页、配色主题、真彩色。macOS 的 iTerm2、Linux 的 Tilix 是标杆。
  • Git 客户端:命令行 git 是基础,图形化 Git 工具(如 GitKraken、Fork)能大幅降低可视化门槛。
  • Docker / 容器运行时:开发者最常用的环境隔离工具。鸿蒙基于 musl + 自有内核架构,直接移植 Docker 有难度,但可以考虑提供等价的轻量级容器方案。
  • VS Code / 代码编辑器:VS Code 基于 Electron,而 Electron 已经有鸿蒙移植方案(社区已有实践)。这是开发者生态的「杀手级应用」——有了它,一个鸿蒙 PC 就能成为真正的开发机。
  • 调试工具链:gdb/lldb 的鸿蒙原生版、内存分析工具(valgrind 替代)、性能剖析工具(perf 替代)。

第二优先级:办公与生产力

  • WPS / Office 套件:这是 PC 的刚需。WPS 鸿蒙版已经在路上,但覆盖的格式完整度和功能深度需要持续跟进。
  • 输入法:搜狗、讯飞、微信输入法。输入法不是「有了就行」,需要做到和手机端一样的词库同步和智能联想。
  • 截图与录屏工具:macOS 的 CleanShot X 是标杆——截图后自动悬浮、可标注、可 OCR。鸿蒙需要自己的效率工具矩阵。

第三优先级:通讯与协作

  • 微信:不是可选项,是必选项。PC 端微信的聊天记录同步、文件传输、小程序支持都需要完整。
  • 企业微信 / 钉钉 / 飞书:办公场景的协作工具,至少需要完整覆盖消息、文件、会议三大功能。
  • 浏览器:鸿蒙自带浏览器需要持续追赶 Chrome/Firefox 的扩展生态。对开发者来说,浏览器的 DevTools 功能是否完整,直接影响前端开发效率。

第四优先级:多媒体与创作

  • 图片处理:Photoshop 短期内不现实,但 GIMP、Krita 这类开源工具可以先行迁移。
  • 视频剪辑:DaVinci Resolve 有 Linux 版,理论上存在移植可能性。剪映如果能出鸿蒙版将是巨大推动。
  • 音频工具:Audacity 的移植相对可行,播客制作者、音频编辑者是容易忽视但忠诚度很高的用户群。
    在这里插入图片描述

开源软件迁移的工业化

我在上一篇文章里写过:132 个社区适配库靠的是业余热情,而生态需要的量级是 10000+。中间差了两个数量级,靠「手工搬库」是填不上的。需要的是一套工业化流水线:

  • CI/CD 自动构建:上游库一发新版本,自动触发交叉编译、自动跑 HPKCHECK、自动打包归档;
  • 预编译包分发:像 Homebrew 那样,用户 brew install xxx 就能装,不需要知道编译细节;
  • 安全漏洞跟踪:CVE 数据库对接,依赖库有漏洞时自动告警和升级;
  • 供应链审计:每个预编译包能追溯到源码 commit、构建环境、签名信息。

猫哥的 build_in_harmonyos 已经在往这个方向走——AI 辅助编译 + 知识图谱 + 质量门禁。这是一个非常有前景的方向,建议官方给予更多关注和支持。

三、向 macOS 学习什么

我不是要鸿蒙变成「另一个 macOS」。但 macOS 从 2001 年 Mac OS X 发布到现在,二十多年的迭代中沉淀了很多值得参考的设计哲学。挑四个我认为最有借鉴价值的。

1. 「开发者优先」的基因

macOS 从诞生之初就自带对开发者的友好——它基于 Darwin(BSD 变种),自带终端、自带 GCC(后来换成 Clang)、自带脚本语言。开发者拿到一台 Mac,不需要装任何额外东西就能开始写代码。

苹果在 2005 年从 PowerPC 切换到 Intel、2020 年从 Intel 切换到 Apple Silicon 的过程中,两次都保证了开发者工具链的平滑过渡。Rosetta 2 让 x86 二进制在 ARM 上几乎无感运行;Xcode 在同一套 IDE 里支持两种架构的交叉编译;第三方库通过 Universal Binary 机制同时分发两种架构的产物。

鸿蒙 PC 也在经历类似的架构过渡期,建议:

  • 提供高质量的 x86→ARM 二进制转译层(类比 Rosetta 2),让已有的 Linux 命令行工具和库能先跑起来,为原生适配争取时间;
  • 统一开发体验:无论开发者在 Windows、macOS 还是 Linux 上写鸿蒙应用,工具链的安装、配置、调试体验应尽量一致;
  • 降低「从零到 Hello World」的门槛:一个开发者下载 DevEco Studio 后,能不能在 10 分钟内创建项目、编译、部署到设备并看到结果?这个时间越短,转化率越高。

2. 软件分发的统一与信任

macOS 的软件分发有三条路径,形成了一套递进式的信任体系:

  • Mac App Store(最严格):沙盒化、审核、自动更新,用户最放心;
  • Notarization(公证):开发者把应用提交给苹果扫描,确认不含恶意代码后打上公证票据。用户双击 DMG 安装时,Gatekeeper 只放行公证过的应用;
  • 自签名 + 用户手动信任:给开发者和极客用户留的口子。

鸿蒙目前走的是「HNP 原生包 + 应用商店」的路线,这是正确的起点。建议逐步引入中间层——比如一个类似 Notarization 的机制,让非商店渠道分发的应用也能获得一定程度的系统信任,而不是一刀切地「非签名不可运行」。

3. 向后兼容的「长情」

macOS 对向后兼容的投入是业界少见的。Carbon 框架从 Mac OS 9 时代一直维护到 macOS 10.14(跨越近二十年)。Rosetta 2 对 x86 二进制的支持至今仍在维护。Objective-C 的运行时至今仍然完整支持——你甚至可以在最新的 macOS 上运行 2007 年编译的 Objective-C 程序。

这种「长情」带来的不是技术债,而是生态信任——开发者愿意投入,是因为他们相信今天写的代码五年后还能跑。

鸿蒙从 1.0 到 NEXT 的升级过程中,已经展现了「不破不立」的决心。但从 PC 的角度看,建议在关键 API 上尽早建立稳定的兼容承诺——比如 NAPI(Native API)、ArkUI 组件模型、分布式能力接口——让开发者敢于投入。

4. 人机交互的「润物细无声」

macOS 的很多交互细节是用了之后才意识到好的:

  • 三指拖移:不用按触摸板就能拖窗口;
  • 空格键预览:选中文件按空格,不打开应用就能看内容(Quick Look);
  • 热角 + Mission Control:甩鼠标到角落触发多窗口管理;
  • 接力(Handoff):Mac 上写的备忘录,iPhone 上自动继续;
  • 通用剪贴板:Mac 上复制,iPhone 上粘贴。

这些功能单独看都不「革命性」,但叠加在一起构成了一种体验:「电脑不打扰你,但你需要的时候它刚好在」

鸿蒙的分布式能力(超级终端、多设备协同)在理念上其实比苹果的 Continuity 更先进——它不局限于苹果生态内,而是试图连接不同品牌的设备。这是一个巨大的差异化优势。建议在 PC 端把这个优势落实到每一个交互细节里——不只是「能投屏」和「能传文件」,而是让跨设备的无缝体验像 macOS 的 Handoff 一样自然、可预测、零学习成本

四、我对鸿蒙 PC 的几个「奢望」

下面几条,有些是近期可实现的,有些是中长期愿景。但我觉得,有期待本身就是在参与生态建设。

1. 一个「开箱即用」的开发环境

不需要开发者手动配置 SDK、CMake 工具链、签名证书。打开终端,sdkmanager install native 一条命令搞定。像 Rust 的 rustup 那样简洁。

2. 一个类似 Homebrew 的包管理器

目前 lycium_plusplus 面向的是「三方库适配者」,门槛高。需要一层面向「使用者」的包管理——ohpm install ffmpeg 就能把编译好的 ffmpeg 装到系统里。这件事技术上不难(预编译包分发),难的是维护成本和生态规模。

3. 开发者文档的「示例驱动」

不是「这个 API 的参数是什么」,而是「如果你想做一个文件管理器,这里是完整的示例代码,以及每一步在做什么」。Apple 的开发者文档在这方面的质量是有目共睹的——几乎每个 API 都有配套的示例工程。鸿蒙的文档在 API 覆盖率上已经做得不错,但「示例驱动」这块还有很大提升空间。

4. 一个活跃的开发者社区(不只是中文)

当 Stack Overflow 上出现「HarmonyOS」标签的问题、当 GitHub 上的鸿蒙开源项目有英文 README、当海外开发者开始讨论「How to port my library to OpenHarmony」——那时候,鸿蒙 PC 才真正成为了一个全球可参与的平台,而不仅仅是「中国的替代方案」。

写在最后

从一个开发者的视角看,鸿蒙 PC 最打动我的,不是它现在能做到什么,而是它选择了一条最难但最正确的路——不基于 Linux 内核魔改,而是从头构建自己的内核和系统架构。

这条路意味着早期一定会有生态的阵痛——应用少、工具缺、文档薄、社区小。但它也意味着不受制于 GPL 协议、不受制于 Linux 内核上游的决策、可以按自己的节奏定义「PC 操作系统应该是什么样的」。

苹果在 2001 年发布 Mac OS X 时,也经历了同样的阶段。前五年,用户抱怨应用不够、驱动不全、打印机不兼容。但苹果坚持下来了,并且用二十年的时间证明了一件事:技术自主 + 开发者优先 + 交互极致,是可以同时做到的。

希望十年后的某一天,当一个年轻开发者第一次接触鸿蒙 PC 时,他能像我今天打开 macOS 一样——不需要考虑「这个系统能不能干活」,只需要专注于「我想用它创造什么」。


本文为原创内容,所有建议和观点仅代表作者个人立场。欢迎转载,请注明出处。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐