Robolectric 的单元测试速度, JVM 内跑 Android Robolectric 的单元测试速度, JVM 内跑 Android Robolectric 的单元测试速度,JVM 内跑 Android 一个真实的痛点:Android 单元测试的启动成本 去年维护一个中型项目时,我们的 CI 流水线跑完全部单元测试需要 14 分钟。其中真正的测试执行时间不到 2026-07-08 tool 29
F-Droid 开源应用市场的使用体验 F-Droid 开源应用市场的使用体验 F-Droid 开源应用市场的使用体验 一个被忽略的官方仓库配置问题 我第一次认真用 F-Droid 是在 2021 年,给一台刷了 LineageOS 的备用机装应用。当时遇到的情况很典型:打开客户端,刷新仓库,然后看着进度条卡在 "Updating rep 2026-07-07 tool 30
GitHub Actions 的 Android CI 模板优化 GitHub Actions 的 Android CI 模板优化 GitHub Actions 的 Android CI 模板优化 那个被复制了十万次的模板有什么问题 几乎所有 Android 项目的 .github/workflows/android.yml 都是从同一个源头变异而来的:GitHu 2026-07-06 tool 21
ProGuard 和 R8 的规则文件编写技巧 ProGuard 和 R8 的规则文件编写技巧 ProGuard 和 R8 的规则文件编写技巧 从一次 4MB 的体积回退说起 去年维护一个老牌金融类 App 时,我踩了一个相当经典的坑。团队把构建工具从 AGP 7.2 升级到 8.0,R8 的 full mode 默认开启,发版后线上崩溃率从 0 2026-07-06 tool 22
Appium 和 Espresso 的 UI 测试框架对比 Appium 和 Espresso 的 UI 测试框架对比 Appium 和 Espresso 的 UI 测试框架对比 从一次 CI 崩溃说起 去年维护的一个项目把 UI 测试从 Espresso 迁移到 Appium,三个月后又在深夜回滚。回滚 commit 的 message 写得挺克制:"Re 2026-07-06 tool 22
Genymotion 桌面模拟器的现在和替代方案 Genymotion 桌面模拟器的现在和替代方案 「Genymotion 桌面模拟器的现在和替代方案」 Genymotion 的免费桌面版在 2023 年彻底停更这件事,很多老 Android 开发者可能是后知后觉的。我注意到这个变化是因为某个项目里 CI 流水线突然挂掉,追查下来发现是 Genym 2026-07-03 tool 23
Gradle 依赖版本统一管理方案对比 Gradle 依赖版本统一管理方案对比 Gradle 依赖版本统一管理方案对比 Android 项目里依赖版本管理这件事,看起来是个"配置问题",实际踩进去才知道水有多深。一个中等规模的项目,几十上百个第三方库,加上内部模块的版本对齐,光靠每个 build.gradle 里硬编码版本号,维护起来就是 2026-07-02 tool 37
Stetho 调试桥,查看数据库和网络的 Chrome 插件 Stetho 调试桥,查看数据库和网络的 Chrome 插件 Stetho 调试桥,查看数据库和网络的 Chrome 插件 Stetho 是 Facebook 在 2015 年开源的一个 Android 调试工具,核心思路是把 Chrome DevTools 的远程调试协议(Chrome DevTo 2026-07-01 tool 20
Ktor 客户端替代 Retrofit,协程原生支持 Ktor 客户端替代 Retrofit,协程原生支持 Ktor 客户端替代 Retrofit,协程原生支持 从一次 Retrofit 协程适配的崩溃说起 去年维护一个老旧项目时,我遇到过一个典型的生产环境崩溃。StackTrace 指向 Retrofit 的 KotlinExtensions.kt 2026-06-30 tool 15
Docker 构建 Android 环境,镜像层缓存策略 Docker 构建 Android 环境,镜像层缓存策略 Docker 构建 Android 环境,镜像层缓存策略 从一次 CI 崩溃说起 去年迁移团队 CI 到 GitHub Actions 时,我遇到了一个典型的问题:每次构建 Android 项目,Docker 镜像的 apt-get upda 2026-06-30 tool 25