Ktor 客户端替代 Retrofit,协程原生支持 Ktor 客户端替代 Retrofit,协程原生支持 Ktor 客户端替代 Retrofit,协程原生支持 从一次 Retrofit 协程适配的崩溃说起 去年维护一个老旧项目时,我遇到过一个典型的生产环境崩溃。StackTrace 指向 Retrofit 的 KotlinExtensions.kt 2026-06-30 tool 9
Docker 构建 Android 环境,镜像层缓存策略 Docker 构建 Android 环境,镜像层缓存策略 Docker 构建 Android 环境,镜像层缓存策略 从一次 CI 崩溃说起 去年迁移团队 CI 到 GitHub Actions 时,我遇到了一个典型的问题:每次构建 Android 项目,Docker 镜像的 apt-get upda 2026-06-30 tool 12
Android Emulator 的快照功能,保存测试状态 Android Emulator 的快照功能,保存测试状态 Android Emulator 的快照功能,保存测试状态 一个被反复打断的下午 去年三月份,我在调试一个应用内购买的流程问题。测试环境需要 Google Play 结算库 6.0 的完整配置,包括许可证测试账号、测试信用卡、以及一个特定的 2026-06-29 tool 16
Google 的官方 Codelab 合集,哪些值得刷 Google 的官方 Codelab 合集,哪些值得刷 Google 的官方 Codelab 合集,哪些值得刷 Android 开发者对 Codelab 的态度挺分裂的。一部分人觉得这是官方出的"手把手教程",权威、路径清晰,适合快速上手新 API;另一部分人刷过几个之后就放弃了,理由是"太浅了,跟 2026-06-29 tool 5
APKPure 和酷安的下载安全性分析 APKPure 和酷安的下载安全性分析 APKPure 和酷安的下载安全性分析 从一次签名验证失败说起 去年给一个老设备做系统维护时,我遇到了一个挺典型的问题。一台 Pixel 3 XL 停留在 Android 12,Google Play 服务因为证书链问题无法正常更新,导致依赖 GMS 的应用集 2026-06-29 tool 9
MAT 工具分析堆转储,定位内存泄漏 MAT 工具分析堆转储,定位内存泄漏 「MAT 工具分析堆转储,定位内存泄漏」 Android 应用的内存泄漏问题,说大不大,说小不小。说它不大,是因为很多应用在用户手上运行三五分钟就被杀掉了,泄漏那点内存根本来不及累积成灾难。说它不小,是因为一旦泄漏发生在常驻组件——比如 Service、单例、或 2026-06-25 tool 18
NDK 开发的 CMake 配置模板分享 NDK 开发的 CMake 配置模板分享 NDK 开发的 CMake 配置模板分享 一个被 CMake 3.10 坑过的开场 去年维护一个老项目时,我把 build.gradle 里的 externalNativeBuild.cmake.version 从 "3.10.2" 顺手改成了 "3.22. 2026-06-25 tool 5
JUnit 5 在 Android 测试中的配置与使用 JUnit 5 在 Android 测试中的配置与使用 JUnit 5 在 Android 测试中的配置与使用 Android 测试长期被 JUnit 4 统治。从 2018 年 Google 在 AndroidX Test 库中引入 AndroidJUnitRunner 开始,这个基于 JUnit 2026-06-23 tool 3
Firebase 免费额度够用吗,超出后多少钱 Firebase 免费额度够用吗,超出后多少钱 「Firebase 免费额度够用吗,超出后多少钱」 Firebase 的 Spark 计划(免费档)在 Google 产品里算是个异类。它不像 GCP 那样新用户送 300 美元试用金、到期就停,而是真正意义上的"永久免费"——只要你不触发某些隐藏开关 2026-06-22 tool 16
SVG 转 Vector Drawable 的注意事项 SVG 转 Vector Drawable 的注意事项 SVG 转 Vector Drawable 的注意事项 Android 开发里用 Vector Drawable 替代多套 PNG 已经是老生常谈了,但真把设计师给的 SVG 往项目里一丢,编译报错、运行时崩溃、渲染错位的问题从来没少过。这篇文 2026-06-21 tool 12