ProGuard 和 R8 的规则文件编写技巧 ProGuard 和 R8 的规则文件编写技巧 ProGuard 和 R8 的规则文件编写技巧 从一次 4MB 的体积回退说起 去年维护一个老牌金融类 App 时,我踩了一个相当经典的坑。团队把构建工具从 AGP 7.2 升级到 8.0,R8 的 full mode 默认开启,发版后线上崩溃率从 0 2026-07-06 tool 16
Appium 和 Espresso 的 UI 测试框架对比 Appium 和 Espresso 的 UI 测试框架对比 Appium 和 Espresso 的 UI 测试框架对比 从一次 CI 崩溃说起 去年维护的一个项目把 UI 测试从 Espresso 迁移到 Appium,三个月后又在深夜回滚。回滚 commit 的 message 写得挺克制:"Re 2026-07-06 tool 15
Genymotion 桌面模拟器的现在和替代方案 Genymotion 桌面模拟器的现在和替代方案 「Genymotion 桌面模拟器的现在和替代方案」 Genymotion 的免费桌面版在 2023 年彻底停更这件事,很多老 Android 开发者可能是后知后觉的。我注意到这个变化是因为某个项目里 CI 流水线突然挂掉,追查下来发现是 Genym 2026-07-03 tool 20
Gradle 依赖版本统一管理方案对比 Gradle 依赖版本统一管理方案对比 Gradle 依赖版本统一管理方案对比 Android 项目里依赖版本管理这件事,看起来是个"配置问题",实际踩进去才知道水有多深。一个中等规模的项目,几十上百个第三方库,加上内部模块的版本对齐,光靠每个 build.gradle 里硬编码版本号,维护起来就是 2026-07-02 tool 26
Stetho 调试桥,查看数据库和网络的 Chrome 插件 Stetho 调试桥,查看数据库和网络的 Chrome 插件 Stetho 调试桥,查看数据库和网络的 Chrome 插件 Stetho 是 Facebook 在 2015 年开源的一个 Android 调试工具,核心思路是把 Chrome DevTools 的远程调试协议(Chrome DevTo 2026-07-01 tool 14
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 21
Android Emulator 的快照功能,保存测试状态 Android Emulator 的快照功能,保存测试状态 Android Emulator 的快照功能,保存测试状态 一个被反复打断的下午 去年三月份,我在调试一个应用内购买的流程问题。测试环境需要 Google Play 结算库 6.0 的完整配置,包括许可证测试账号、测试信用卡、以及一个特定的 2026-06-29 tool 28
Google 的官方 Codelab 合集,哪些值得刷 Google 的官方 Codelab 合集,哪些值得刷 Google 的官方 Codelab 合集,哪些值得刷 Android 开发者对 Codelab 的态度挺分裂的。一部分人觉得这是官方出的"手把手教程",权威、路径清晰,适合快速上手新 API;另一部分人刷过几个之后就放弃了,理由是"太浅了,跟 2026-06-29 tool 14
APKPure 和酷安的下载安全性分析 APKPure 和酷安的下载安全性分析 APKPure 和酷安的下载安全性分析 从一次签名验证失败说起 去年给一个老设备做系统维护时,我遇到了一个挺典型的问题。一台 Pixel 3 XL 停留在 Android 12,Google Play 服务因为证书链问题无法正常更新,导致依赖 GMS 的应用集 2026-06-29 tool 17