tool

85 篇文章
ProGuard 和 R8 的规则文件编写技巧

ProGuard 和 R8 的规则文件编写技巧

ProGuard 和 R8 的规则文件编写技巧 ProGuard 和 R8 的规则文件编写技巧 从一次 4MB 的体积回退说起 去年维护一个老牌金融类 App 时,我踩了一个相当经典的坑。团队把构建工具从 AGP 7.2 升级到 8.0,R8 的 full mode 默认开启,发版后线上崩溃率从 0

Appium 和 Espresso 的 UI 测试框架对比

Appium 和 Espresso 的 UI 测试框架对比

Appium 和 Espresso 的 UI 测试框架对比 Appium 和 Espresso 的 UI 测试框架对比 从一次 CI 崩溃说起 去年维护的一个项目把 UI 测试从 Espresso 迁移到 Appium,三个月后又在深夜回滚。回滚 commit 的 message 写得挺克制:"Re

Genymotion 桌面模拟器的现在和替代方案

Genymotion 桌面模拟器的现在和替代方案

Genymotion 桌面模拟器的现在和替代方案 「Genymotion 桌面模拟器的现在和替代方案」 Genymotion 的免费桌面版在 2023 年彻底停更这件事,很多老 Android 开发者可能是后知后觉的。我注意到这个变化是因为某个项目里 CI 流水线突然挂掉,追查下来发现是 Genym

Gradle 依赖版本统一管理方案对比

Gradle 依赖版本统一管理方案对比

Gradle 依赖版本统一管理方案对比 Gradle 依赖版本统一管理方案对比 Android 项目里依赖版本管理这件事,看起来是个"配置问题",实际踩进去才知道水有多深。一个中等规模的项目,几十上百个第三方库,加上内部模块的版本对齐,光靠每个 build.gradle 里硬编码版本号,维护起来就是

Stetho 调试桥,查看数据库和网络的 Chrome 插件

Stetho 调试桥,查看数据库和网络的 Chrome 插件

Stetho 调试桥,查看数据库和网络的 Chrome 插件 Stetho 调试桥,查看数据库和网络的 Chrome 插件 Stetho 是 Facebook 在 2015 年开源的一个 Android 调试工具,核心思路是把 Chrome DevTools 的远程调试协议(Chrome DevTo

Ktor 客户端替代 Retrofit,协程原生支持

Ktor 客户端替代 Retrofit,协程原生支持

Ktor 客户端替代 Retrofit,协程原生支持 Ktor 客户端替代 Retrofit,协程原生支持 从一次 Retrofit 协程适配的崩溃说起 去年维护一个老旧项目时,我遇到过一个典型的生产环境崩溃。StackTrace 指向 Retrofit 的 KotlinExtensions.kt

Docker 构建 Android 环境,镜像层缓存策略

Docker 构建 Android 环境,镜像层缓存策略

Docker 构建 Android 环境,镜像层缓存策略 Docker 构建 Android 环境,镜像层缓存策略 从一次 CI 崩溃说起 去年迁移团队 CI 到 GitHub Actions 时,我遇到了一个典型的问题:每次构建 Android 项目,Docker 镜像的 apt-get upda

Android Emulator 的快照功能,保存测试状态

Android Emulator 的快照功能,保存测试状态

Android Emulator 的快照功能,保存测试状态 Android Emulator 的快照功能,保存测试状态 一个被反复打断的下午 去年三月份,我在调试一个应用内购买的流程问题。测试环境需要 Google Play 结算库 6.0 的完整配置,包括许可证测试账号、测试信用卡、以及一个特定的

Google 的官方 Codelab 合集,哪些值得刷

Google 的官方 Codelab 合集,哪些值得刷

Google 的官方 Codelab 合集,哪些值得刷 Google 的官方 Codelab 合集,哪些值得刷 Android 开发者对 Codelab 的态度挺分裂的。一部分人觉得这是官方出的"手把手教程",权威、路径清晰,适合快速上手新 API;另一部分人刷过几个之后就放弃了,理由是"太浅了,跟

APKPure 和酷安的下载安全性分析

APKPure 和酷安的下载安全性分析

APKPure 和酷安的下载安全性分析 APKPure 和酷安的下载安全性分析 从一次签名验证失败说起 去年给一个老设备做系统维护时,我遇到了一个挺典型的问题。一台 Pixel 3 XL 停留在 Android 12,Google Play 服务因为证书链问题无法正常更新,导致依赖 GMS 的应用集