cc-switch 鸿蒙 PC移植:使用Tauri官方 feat/open-harmony 分支最新版本移植实录 2026-08-18 晚,基于tauri 官方仓库 feat/open-harmony 分支(tauri2.11.5,crates.io 官方最新版)重新移植 cc-switch 到 HarmonyOS PC。上一篇实录里用的社区 fork 停在 tauri 2.8.5,把整个依赖树锁死在两年前;这一次,插件全部用最新版,一个都不用降。项目地址*:https://atomgit.com/qq8864/cc-switch-harmonyos更多交流学习,欢迎加入开源鸿蒙PC社区:https://harmonypc.csdn.net/欢迎在PC社区平台申请新建项目:https://atomgit.com/OpenHarmonyPCDeveloper猫哥的博客:https://blog.csdn.net/qq8864起因:旧 fork 的版本债第一次移植 cc-switch 到鸿蒙 PC 时,用的是社区维护的 fork(基于 tauri 2.8.5)。那个 fork 能跑,但代价很重:tauri 2.8.5 → tauri-plugin-log 锁 =2.7.1、dialog 锁 =2.4.2、updater 锁 =2.9.0 …上游插件早就进化到 2.9/2.10 了,我们却要为了兼容 2.8.x 的 API 面,把每个插件钉回老版本——这就是"版本债":能跑,但整个项目的基础设施停在两年前,以后想升级上游代码,先得还债。于是我决定从官方 fork 一份 tauri,在feat/open-harmony分支上重新移植。结果发现:官方自己已经在维护 OpenHarmony 支持了。仓库分支版本tauri-apps/tauri(经 yangyongzhen fork)feat/open-harmonytauri 2.11.5(= crates.io 官方最新)tauri-apps/wryfeat/open-harmony0.56.0tauri-apps/taofeat/open-harmony0.36.0tauri-apps/cargo-mobile2feat/ohos0.22.4wry、tao、cargo-mobile2 三个底层库的 OHOS 支持分支都在tauri-apps 官方账号下——这不是民间 hack,是官方生态的一部分。成果速览验证项结果Rust 交叉编译libcc_switch_lib.so(aarch64 ELF,strip 后23.7MB,旧 fork 是 33MB)HAPentry-default-signed.hap(34.8MB,旧 fork 39.8MB,签名版)真机HUAWEI MateBook Pro HAD-W32,API 24,aarch64,hdc install+aa start成功进程主进程 + GPU + render 三进程稳定存活后端数据库迁移、189 条模型定价、Copilot/Codex/Xai OAuth、全局代理全部初始化,0 错误前端从tauri://localhost/assets/...加载(生产模式),React 正常挂载,0 panic / 0 error_boundary插件log 2.9.0 / store 2.4.4 / process 2.3.1 / dialog 2.7.2 / fs 2.5.1 / opener 2.5.4 / updater 2.10.1 / deep-link 2.4.9 / window-state 2.4.1 / single-instance 2.4.3,全部 crates.io 最新体积还变小了 10MB。新代码,新体积,何乐不为。原理:还是那套,前端零改动cc-switch (Rust + React) → libcc_switch_lib.so(napi-ohos 桥接,mobile_entry_point 宏展开) → OHOS ArkWeb WebView(渲染原前端,withGlobalTauri 全局桥) → HAP(hvigor 打包,签名后 hdc 部署)React 前端原样打包,window.__TAURI__全局桥提供 IPC。Rust 后端交叉编译成.so,由RustAbility(@ohos-rs/ability)加载。原理没变,变的是依赖图和踩坑清单。第一关:依赖解析,patch 的完全体上次移植最大的坑是links = "Tauri"冲突(路径依赖不被解析器当作插件版本候选),解法是用[patch.crates-io]。这次 fork 换新,同样的机制,但要 patch 的东西多了三样:1. tauri 系列:path patch(和上次一样)[patch.crates-io] tauri = { path = "D:/tauri-ohos-new/crates/tauri" } tauri-build = { path = "D:/tauri-ohos-new/crates/tauri-build" } tauri-macros = { path = "D:/tauri-ohos-new/crates/tauri-macros" } tauri-codegen = { path = "D:/tauri-ohos-new/crates/tauri-codegen" } tauri-utils = { path = "D:/tauri-ohos-new/crates/tauri-utils" } tauri-runtime = { path = "D

相关新闻

最新新闻

RAG技术面试核心考察点与应对策略

RAG技术面试核心考察点与应对策略

1. RAG技术面试的核心考察点最近在技术社区看到不少同行讨论RAG(检索增强生成)相关的面试经历,发现很多候选人在这个环节表现不佳。作为经历过多次RAG项目实战的老兵,我想分享几个面试官最爱深挖的问题方向。RAG面试的核心考察点通…

2026/8/23 19:56:50
C++可变模板参数:从原理到实战的类型安全编程利器

C++可变模板参数:从原理到实战的类型安全编程利器

1. 从“固定”到“无限”:为什么我们需要可变模板参数? 在C的世界里,函数和类模板的威力在于它们能让我们编写与类型无关的通用代码。但很长一段时间里,这种“通用性”有一个明显的天花板:参数的数量是固定的。你写一个…

2026/8/23 19:56:50
基于Dify工作流构建Markdown转Word自动化服务

基于Dify工作流构建Markdown转Word自动化服务

你有没有遇到过这样的场景:花了半天时间,用 Markdown 精心整理了一份技术文档、项目报告或者 API 说明,格式清晰,结构分明。但当你需要把它交给产品经理、客户或者不熟悉 Markdown 的同事时,对方却要求:“能…

2026/8/23 19:56:50
C++与PPO强化学习实战:从零构建AI角斗士对抗僵尸仿真环境

C++与PPO强化学习实战:从零构建AI角斗士对抗僵尸仿真环境

这次我们来看一个名为“AI角斗士学习对抗僵尸”的项目,它不是一个现成的游戏,而是一个使用C和SFML图形库,结合强化学习(特别是PPO算法)来训练智能体(角斗士)对抗僵尸的仿真环境。项目由Pezzza开…

2026/8/23 19:56:50
嵌入式系统数据存储管理:从介质选型到高可靠架构设计实战

嵌入式系统数据存储管理:从介质选型到高可靠架构设计实战

1. 项目概述:为什么嵌入式系统的数据存储是个“老大难”?干了十几年嵌入式开发,从8位单片机到现在的多核ARM Cortex-A系列,项目做了不下百个。我发现一个挺有意思的现象:很多工程师在项目初期,会把绝大部分…

2026/8/23 19:56:50
整数规划求解利器:分枝定界法核心原理与工程实践详解

整数规划求解利器:分枝定界法核心原理与工程实践详解

1. 项目概述:从“算不完”到“算得巧”的整数规划求解之路 搞数学建模或者运筹优化的朋友,对“整数规划”这四个字一定不陌生。它就像是现实世界决策问题的“标准照”——很多决策变量天然就是整数,比如你要建几个工厂(0或1&#…

2026/8/23 19:51:49