新闻详情

新闻详情

首页 / 资讯中心 / 详情

知乎++架构全景图:Kotlin Multiplatform如何打造跨Android与桌面的知乎客户端

发布时间:2026/9/27 7:34:32来源:尧图网络
知乎++架构全景图:Kotlin Multiplatform如何打造跨Android与桌面的知乎客户端
知乎架构全景图Kotlin Multiplatform如何打造跨Android与桌面的知乎客户端【免费下载链接】zhihu-plus-plusZhihu | 知乎: Ad-free, low cost, AI powered zhihu android 3rd-party client. 去广告、占用低、AI大模型的新时代知乎安卓端体验项目地址: https://gitcode.com/gh_mirrors/zh/zhihu-plus-plus知乎Zhihu是一款免费、去广告的知乎第三方客户端基于 Kotlin MultiplatformKMP跨平台技术用同一套核心代码同时驱动 Android 应用与 Windows / Linux / macOS 桌面客户端。本文带你快速看懂它的架构全景从共享代码分层、数据库复用到平台入口一次讲透这个轻量化知乎客户端是怎么搭起来的。一、先认识知乎一个不一样的知乎客户端在官方客户端越来越重的今天知乎走的是另一条路去广告去广告、去推广软文、去带货推销、去盐选专栏体积小巧Lite 版 APK 不到 4 MB告别 110 MB 的官方客户端AI 加持Full 版本内置端侧 AI 推理支持基于 LLM embedding 的智能内容过滤本地推荐算法把内容推荐完全放在本地摆脱算法奴役更有趣的细节它甚至内置了知乎经典表情包[惊喜]强势回归 相关资源在 misc/emojis/。这些卖点背后是一套相当现代的多平台工程架构。二、模块全景一个仓库多个应用打开仓库根目录的 settings.gradle.kts你会看到整个项目注册的模块清单——这就是知乎的全家福模块角色一句话说明app Android 主应用Jetpack Compose UI分 lite / full 两个版本desktopApp 桌面应用Compose Desktop产出 Windows / Linux 可执行程序macosApp macOS 原生应用Kotlin/Native 编译arm64 原生体验shared 核心共享层90% 以上的业务逻辑都在这里shared-local-db️ 本地数据库跨平台 Room 数据库封装sentence_embeddings 端侧 AIRust 编写的词元化工具仅 full 版third_party 渲染引擎内置的 Markdown / LaTeX / 代码高亮库这种薄平台壳 厚共享层的结构是 KMP 项目最典型的形态。三、共享层 shared一套代码四处开花shared/ 是整座大厦的地基。它的 shared/build.gradle.kts 里声明了全部编译目标androidLibraryAndroid 库compileSdk 37 / minSdk 27jvmJVM 目标桌面端Windows / Linux共用iosArm64 / iosSimulatorArm64 / macosArm64苹果平台原生目标配套的源码目录则按平台圈层划分shared/src/ ├── commonMain/ ← 所有平台共享数据模型、ViewModel、UI 页面、导航 ├── androidMain/ ← 仅 Android通知、扫码、主题、更新等 ├── jvmMain/ ← 仅桌面 JVM文件、剪贴板、WebView 等 ├── macosMain/ ← 仅 macOS原生窗口、侧栏、工具栏 └── nativeMain/ ← iOS macOS 共享3.1 expect/actualKMP 处理平台差异的官方姿势比如打开外部链接保存图片系统剪贴板这类能力各平台实现方式完全不同。知乎在 PlatformCapabilities.kt 中用expect声明能力契约expect fun rememberSystemUrlOpener(): SystemUrlOpener expect fun rememberImageSaver(): ImageSaver expect fun rememberPlainTextClipboard(): PlainTextClipboard然后在androidMain/jvmMain/macosMain里各自提供actual实现。共享 UI 只面向expect接口编程完全不用关心底层是 Android Intent 还是 JavaFX 窗口 3.2 数据层Room 数据库的跨平台复用本地历史、收藏、屏蔽词都要落库。shared-local-db/ 模块在 shared-local-db/build.gradle.kts 中把Room 2.8.4 同时编译到 Android、JVM 和 Native 三个目标并用 KSP 在各平台自动生成 DAO 实现——Android 上查历史记录、桌面端导出收藏夹走的是同一套 SQL 与数据模型。四、内容渲染把知乎的味道内置进客户端知乎内容 富文本 公式 代码块。知乎直接在 third_party/ 内置了三个 KMP 渲染引擎保证各平台阅读体验完全一致markdown-parser / markdown-rendererCompose 声明式渲染的 Markdown 引擎latex-parser / latex-renderer数学公式渲染字体动态下载见 LatexFontDownloader.ktcodehighlight-parser / codehighlight-render代码块语法高亮渲染引擎之外还有两个 Rust 编写的配套项目值得一提rs-zse-sign/实现 zse96 v2 签名算法可调用 99% 的知乎网页端 APIaigc-vote-server/AIGC 内容投票的服务端组件五、三个平台入口同一个界面5.1 Androidapp 模块Android 端是功能最全的主场。app/ 通过flavorDimensions划分两个构建变体lite轻量版无 ML 功能体积仅约 4 MBfull完整版含 ONNX 端侧推理与智能内容过滤UI 入口在 ZhihuMainAndroidContent.kt内部直接复用 shared 层定义的全部页面。5.2 Windows / LinuxdesktopApp 模块桌面端入口只有短短十几行desktopApp/Main.kt 用 Compose Desktop 的application { Window { ... } }包住DesktopZhihuMain()套上同一个ZhihuTheme主题——这就是跨平台最直观的体现窗口是新的内容全是共享的。5.3 macOSmacosApp 原生运行时macOS 走的是更硬核的路线macosApp/Main.kt 用 Kotlin/Native 直接对接 AppKitNSApplication/NSWindow原生侧栏见 MacosNativeSidebar.kt最终挂载的依然是 shared 层那棵共享 UI 树。六、这套架构给普通用户带来了什么体验一致手机端和桌面端共享同一套页面、主题与数据模型行为不会各玩各的轻量快速共享层不背平台包袱lite 版 APK 才能做到 4 MB 级可持续演进新增一个平台比如 iOS只需补一个source setactual实现业务逻辑几乎零改动对贡献者友好想修 bug 或加功能90% 的工作集中在 shared/src/commonMain/ 一处完成想深入了解 UI 与交互设计约定可参考 docs/ai-ui-design-guide.md 与 docs/notification-center.md。七、小结知乎用一张清晰的 KMP 架构图展示了一份核心逻辑N 个平台外壳的可能性shared承载业务灵魂shared-local-db统一数据地基third_party内置渲染引擎app/desktopApp/macosApp各自穿上平台的外衣。对于想了解 Kotlin Multiplatform 工程实践的同学这个仓库本身就是一份难得的完整样本 【免费下载链接】zhihu-plus-plusZhihu | 知乎: Ad-free, low cost, AI powered zhihu android 3rd-party client. 去广告、占用低、AI大模型的新时代知乎安卓端体验项目地址: https://gitcode.com/gh_mirrors/zh/zhihu-plus-plus创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

做创意礼品定制的网站避坑指南:备案对比评测与实战 2026/9/27 7:34:23

做创意礼品定制的网站避坑指南:备案对比评测与实战

做创意礼品定制的网站避坑指南:备案对比评测与实战 备案流程一头雾水?别急,这坑我替你踩过了。做创意礼品定制的网站,最劝退新手的往往不是代码,而是那个看似简单实则暗藏玄机的ICP备案。很多老板觉得只要域名解析对了就能开干,结果网站上线第一天就…

阅读更多 →
国内股票行情数据 API 怎么选?量化开发者选型指南 2026/9/27 7:34:23

国内股票行情数据 API 怎么选?量化开发者选型指南

策略跑不通,很多时候不是逻辑写错了,而是数据源在背后捅了一刀——开盘那五分钟接口返回空数据,或者一次送股没做对复权,回测曲线和实盘就彻底对不上。这篇文章不谈玄学,只解决一个问题:在国内做和股票相关…

阅读更多 →
做个卖东西的网站要多少钱?3类方案对比评测与避坑指南 2026/9/27 7:34:23

做个卖东西的网站要多少钱?3类方案对比评测与避坑指南

做个卖东西的网站要多少钱?3类方案对比评测与避坑指南 自己不会代码,却想赶紧上线一个能卖货的网站,这种焦虑我太懂了。很多人拿着预算去问价,得到的回答却五花八门,从几千到几十万都有,完全摸不着头脑。…

阅读更多 →
毕业论文开题可行性分析总写成表决心?用智一刻3维论证打动导师 2026/9/27 7:34:17

毕业论文开题可行性分析总写成表决心?用智一刻3维论证打动导师

在开题报告的各项栏目中,“课题可行性分析”往往是被很多同学最不上心、写得最敷衍的一节。 翻开很多人的报告,可行性分析往往只有干瘪的三句话:“本人在大学期间努力学习各门课程”、“在导师的指导下我一定能克服困难”、“我将全力以赴保…

阅读更多 →
多平台AI收录监测如何统一优化方案? 2026/9/27 7:34:10

多平台AI收录监测如何统一优化方案?

多平台AI收录监测的统一优化,核心不在于“一套内容发遍所有平台”,而在于用一套底层知识资产去适配不同AI平台的抓取与引用逻辑。目前业内较常见的做法,是依托全栈式GEO技术引擎(如Tclaw)配合多智能体矩阵来完成监测、…

阅读更多 →
网课网站怎么建才不踩坑?3个最佳实践让备案通过快一倍 2026/9/27 7:34:10

网课网站怎么建才不踩坑?3个最佳实践让备案通过快一倍

网课网站怎么建才不踩坑?3个最佳实践让备案通过快一倍 很多老板做网课网站,第一反应是找模板,第二反应是搞内容,但真正卡住脖子的,往往是那个让人一头雾水的备案流程。…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉