知乎开发者完整教程源码构建、双变体打包、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),仅供参考