首页/新闻资讯/正文详情

知乎++开发者完整教程:源码构建、双变体打包、CI测试与贡献规范一次讲透

发布时间:2026/9/27 18:12:03 来源:云帆数科 栏目:资讯中心
知乎++开发者完整教程:源码构建、双变体打包、CI测试与贡献规范一次讲透
知乎开发者完整教程源码构建、双变体打包、CI测试与贡献规范一次讲透【免费下载链接】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是一款去广告、低内存占用、支持 AI 大模型能力的知乎安卓第三方客户端。本教程面向想参与开发的新手一次讲清源码构建步骤、full/lite 双变体打包、CI 自动化测试链路与贡献规范帮助你在一个晚上完成第一个可安装的 APK并提交一个符合规范的 PR。一、项目速览知乎是什么、代码放在哪里知乎的核心卖点去广告、去推广软文、屏蔽盐选付费内容独创本地推荐算法推荐完全在本地计算不被算法投喂并内置基于 LLM embedding 的 AI 智能内容过滤、Markdown/LaTeX 渲染与内容创作能力。项目基于Kotlin MultiplatformKMP一套核心代码同时支撑 Android、实验性桌面端与 macOS。在 settings.gradle.kts 中可以看到全部模块编排主要模块一览目录职责app/Android 应用壳定义 full/lite 双变体shared/KMP 跨平台核心UI、数据、账号、Markdown 渲染shared-local-db/本地数据库历史记录、收藏夹等desktopApp/实验性桌面端Windows / Linux内置 Java 运行时macosApp/macOS arm64 原生端sentence_embeddings/端侧句向量 AI 模型仅 full 变体third_party/内置的 markdown / LaTeX / 代码高亮渲染库aigc-vote-server/Rust 编写的 AIGC 标记投票服务rs-zse-sign/Rust 实现的 zse96 签名算法misc/浏览器广告过滤插件、油猴脚本、表情包等周边工具当前版本号维护在 gradle.propertiesversionName0.30versionCode747构建产物会自动带上这两个值。二、环境准备与源码构建从克隆仓库到第一个 APK环境要求3 件套JDK 17CI 使用 Zulu 发行版本地保持一致最稳妥Android SDK项目compileSdk37、minSdk27Android 9、targetSdk35Android Studio直接打开仓库根目录即可识别 Gradle 工程构建加速已开箱即用gradle.properties 中默认开启了 4G 堆内存、并行构建、构建缓存与 KSP 增量处理首次构建稍慢二次构建会明显变快。一键克隆仓库git clone https://gitcode.com/gh_mirrors/zh/zhihu-plus-plus新手最常用的 5 条 Gradle 命令命令用途./gradlew ktlintCheck代码风格检查CI 门禁同款./gradlew assembleLiteDebug打包 lite 变体 debug APK./gradlew assembleFullDebug打包 full 变体 debug APK./gradlew :shared:jvmTest :app:testLiteDebugUnitTest运行单元测试与 CI 完全一致./gradlew :desktopApp:packageReleaseDistributionForCurrentOS打包当前系统的桌面版lite debug APK 产出在app/build/outputs/apk/lite/debug/app-lite-debug.apk可直接安装到手机。另外debug 与 release 构建都会把当前 Git commit 写入GIT_HASH常量见 app/build.gradle.kts方便排查问题时确认我跑的是哪份代码。三、双变体打包full 与 lite 怎么选知乎通过 GradleproductFlavors实现双变体打包这是 app/build.gradle.kts 里的核心配置两者差异如下维度lite默认变体full包体积小于 4 MB更大内置 ONNX 推理框架与模型AI 智能过滤不支持基于 LLM embedding 的向量相似度屏蔽回答applicationIdcom.github.zly2006.zhplus.litecom.github.zly2006.zhplus依赖差异—额外依赖 sentence_embeddings/ 与 HanLP配置上有两个值得注意的细节每个变体都会注入IS_LITE布尔编译常量代码里靠它区分行为而不是靠判断包名release 打包时只有 lite 变体启用 R8 混淆与资源缩减isMinifyEnabled按变体名判断full 变体因包含原生模型文件关闭混淆以避免裁剪出错。想产出一个可发布的 release 包本地构建需要配置签名环境变量signingKey为 Base64 编码的 jks、keyStorePassword、keyAlias、keyPassword然后执行./gradlew assembleLiteRelease 官方对两个变体的定位见 README.mdfull 主要承载端侧 AI 技术尝试Lite 更小更快按需选择。四、CI 测试流水线PR 提交后自动执行了哪些检查提交 PR 后.github/workflows/pr.yml 定义的检查流水线会自动运行共 5 个任务Job执行内容作用ktlint./gradlew ktlintCheckJDK 17代码风格门禁不通过直接失败build_pr./gradlew assembleLiteDebug按需追加测试 APK 构建验证编译并产出 debug APK 供下载unit-tests:shared:jvmTest:app:testLiteDebugUnitTestJDK 23跨平台核心逻辑单元测试desktop-jar:desktopApp:packageReleaseDistributionForCurrentOS验证桌面端 release 打包链路mock-instrumented-shardsAPI 36 Pixel 7 模拟器5 分片并行基于Mock 数据的 UI 插桩测试三个设计上很聪明的点值得学习智能触发流水线会先比对 PR 的 diff只有改动了app/、shared/、构建配置等路径时才触发插桩测试pr.yml文档类 PR 不用白等模拟器。分片提速插桩测试由 .github/scripts/run-instrumented-shard.sh 拆成 5 个分片并行跑在 5 台模拟器上并以mock数据模式执行不依赖真实账号失败时自动抓取 logcat 诊断日志。汇总门禁最后一个 job android-instrument-tests 只校验各 job 结果——未触发插桩测试时要求状态为skipped防止该跑没跑被误判为通过。除此之外非 master 分支的每次 push 都会触发 Build Check主干之外的代码也不会裸奔版本发布时.github/release.yml 按标签把 changelog 自动归类为重大变化 / 新功能 / Bug 修复三节。本地测试策略建议按项目沉淀的经验CLAUDE.md本地不要默认跑完整 instrumented test全量留给 CI只做构建、格式化和针对当前失败点的定向用例模拟器反馈更快回归修复必须先红到绿——先在基线复现失败修复后再确认变绿。五、贡献规范提交 PR 前必须知道的 5 件事PR 标题与正文默认使用中文这是项目约定模板结构见 .github/PULL_REQUEST_TEMPLATE.md。如实勾选 AI 使用声明模板要求声明代码是否由 AI 编写/改写若使用了 AI必须附上实际运行产出的测试截图或录屏设计图或旧截图不算数否则不进入 review。报 bug 用对模板仓库提供 bug 反馈、功能建议 与提问三类 issue 模板bug 报告务必写清知乎版本号和稳定复现步骤缺版本的 issue 会被直接关闭。feat 与 fix 按产品变化判定新增用户可见的选项、入口或行为属于feat只有既有承诺行为发生回归才属于fix——不要因为是修 bug 改出来的就把新功能归成修复。遵守社区准则项目采用 CODE_OF_CONDUCT.mdContributor Covenant营造无骚扰、包容的贡献环境。六、延伸阅读文档与周边工具动手之前翻一翻这些目录能少走很多弯路docs/通知中心设计、Markdown 渲染性能报告、AI UI 设计指南reports/instrumented 测试失败的逐文件根因分析报告排查 CI 失败的范本misc/chrome-zhihu-ad-filter/配套的浏览器广告过滤插件含测试用例aigc-vote-server/AGENTS.md投票服务的运维与数据迁移注意事项 上手路线推荐先git clone→./gradlew assembleLiteDebug装到手机跑一遍 → 读 README.md 的路线图 → 挑一个good first issue开始你的第一个 PR。祝你贡献顺利【免费下载链接】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),仅供参考

相关推荐

Windows蓝屏排查全攻略:从错误代码到WinDbg实战定位
Windows蓝屏排查全攻略:从错误代码到WinDbg实战定位

1. 蓝屏不是玄学:先搞懂Windows到底在报什么警很多人一看到蓝屏就慌,第一反应是“完了,系统要重装了”。其实蓝屏(BSOD,Blue Screen of Death)本质上是Windows内核在检测到无法继续安全运行的严重错误时&am… · 2026/9/27 18:11:34

彻底清除Windows“此电脑”中顽固第三方图标:注册表命名空间扩展删除指南
彻底清除Windows“此电脑”中顽固第三方图标:注册表命名空间扩展删除指南

1. 这个顽固图标到底藏在哪:从资源管理器命名空间说起很多人第一次遇到这个问题,都是在装完某款“C盘瘦身”“系统优化”“安全卫士”类工具之后。卸载程序跑完了,控制面板里也找不到它了,但打开“此电脑”,那个图标依… · 2026/9/26 5:16:20

Atlas 300V Pro上YOLOv8部署实践:模型转换与ACL推理
Atlas 300V Pro上YOLOv8部署实践:模型转换与ACL推理

先说结论:Atlas 300V 不是传统意义上的GPU,但它确确实实是一块运算加速卡,而且是专门为AI推理场景设计的那种。这段时间我在Atlas 300V Pro上把 YOLOv8 目标检测模型完整跑了一遍,从硬件认识到驱动安装,从PyTorch导出O… · 2026/9/26 5:16:20

Docker部署OpenClaw完整教程:TaoToken统一Key接入与config.toml配置骨架
Docker部署OpenClaw完整教程:TaoToken统一Key接入与config.toml配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 18:12:01

什么是迭代器模式?用 TaoToken 统一 Key 打通 AI 工具配置的实战解析
什么是迭代器模式?用 TaoToken 统一 Key 打通 AI 工具配置的实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 18:11:49

商丘做网站汉狮网络新手避坑:性能优化与实操指南
商丘做网站汉狮网络新手避坑:性能优化与实操指南

商丘做网站汉狮网络新手避坑:性能优化与实操指南 想自己做网站却不会写代码?别慌,这其实是商丘很多中小企业主和个体户的常态。很多人以为建站必须得是程序员,其实选对服务商和方向,哪怕你是纯小白,也能搞定一个既美观又高速的网站。… · 2026/9/27 18:11:30

语音面试首包延迟仅200ms的秘密:interview-guide WebSocket+句子级并发TTS流式架构完全解析
语音面试首包延迟仅200ms的秘密:interview-guide WebSocket+句子级并发TTS流式架构完全解析

语音面试首包延迟仅200ms的秘密:interview-guide WebSocket句子级并发TTS流式架构完全解析 【免费下载链接】interview-guide 基于 Spring Boot 4.1、Java 25、Spring AI 2.0、React、PostgreSQL/pgvector、Redis 和 RustFS 构建的开源 AI 面试平台,支持… · 2026/9/27 18:11:18

本地运行Llama3极简傻瓜教程:用TaoToken统一Key打通Cline配置
本地运行Llama3极简傻瓜教程:用TaoToken统一Key打通Cline配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 18:11:18

3步搞定wordpress后台移除新闻,这份保姆级建站教程太实用
3步搞定wordpress后台移除新闻,这份保姆级建站教程太实用

3步搞定wordpress后台移除新闻,这份保姆级建站教程太实用 做企业站的朋友大概都遇到过这种糟心事儿:买来的WordPress模板看着挺唬人,结果后台一堆“新闻”、“博客”模块删都删不掉。你明明只想做个产品展示页,页面底下却挂着几条八竿… · 2026/9/27 18:10:42

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码