新闻详情

新闻详情

首页 / 资讯中心 / 详情

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

发布时间:2026/11/13 7:49:37来源:尧图网络
知乎++架构全景图: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/11/13 0:43:49

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/12 23:59:09

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/12 9:50:02

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/12 9:25:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/12 15:57:44

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/13 0:02:27

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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