Ktor 客户端替代 Retrofit,协程原生支持 Ktor 客户端替代 Retrofit,协程原生支持 Ktor 客户端替代 Retrofit,协程原生支持 从一次 Retrofit 协程适配的崩溃说起 去年维护一个老旧项目时,我遇到过一个典型的生产环境崩溃。StackTrace 指向 Retrofit 的 KotlinExtensions.kt 2026-06-30 tool 1
Paging 3 的 RemoteMediator,缓存策略怎么设计 Paging 3 的 RemoteMediator,缓存策略怎么设计 Paging 3 的 RemoteMediator,缓存策略怎么设计 一个让人困惑的 API 设计 RemoteMediator 的签名看起来足够简单。load() 方法返回 MediatorResult.Success 或者 M 2026-06-30 Android 2
Docker 构建 Android 环境,镜像层缓存策略 Docker 构建 Android 环境,镜像层缓存策略 Docker 构建 Android 环境,镜像层缓存策略 从一次 CI 崩溃说起 去年迁移团队 CI 到 GitHub Actions 时,我遇到了一个典型的问题:每次构建 Android 项目,Docker 镜像的 apt-get upda 2026-06-30 tool 1
Security 库的 EncryptedSharedPreferences,性能损耗有多少 Security 库的 EncryptedSharedPreferences,性能损耗有多少 Security 库的 EncryptedSharedPreferences,性能损耗有多少 Android Jetpack Security 库在 1.0.0 稳定版发布之后,EncryptedShare 2026-06-30 Android 1
PackageVisibility 的查询白名单,Android 11 后的适配 PackageVisibility 的查询白名单,Android 11 后的适配 PackageVisibility 的查询白名单,Android 11 后的适配 Android 11(API 30)引入的 Package Visibility 限制,是我这几年做应用适配时踩坑最多、也最被低估的一个 2026-06-29 Android 1
LocalBroadcastManager 的废弃,应用内通信用什么替代 LocalBroadcastManager 的废弃,应用内通信用什么替代 LocalBroadcastManager 的废弃,应用内通信用什么替代 一个被忽略 5 年的废弃通知 2022 年 1 月,AndroidX Core 1.8.0-alpha01 版本发布,release notes 里有一 2026-06-29 Android 1
Android Emulator 的快照功能,保存测试状态 Android Emulator 的快照功能,保存测试状态 Android Emulator 的快照功能,保存测试状态 一个被反复打断的下午 去年三月份,我在调试一个应用内购买的流程问题。测试环境需要 Google Play 结算库 6.0 的完整配置,包括许可证测试账号、测试信用卡、以及一个特定的 2026-06-29 tool 1
Compose 性能分析:Layout Inspector 之外还有什么 Compose 性能分析:Layout Inspector 之外还有什么 Compose 性能分析:Layout Inspector 之外还有什么 Layout Inspector 在 Android Studio 里挂了太多年了,从传统 View 时代就是性能分析的标配。Compose 出来以后, 2026-06-29 Android 1
Google 的官方 Codelab 合集,哪些值得刷 Google 的官方 Codelab 合集,哪些值得刷 Google 的官方 Codelab 合集,哪些值得刷 Android 开发者对 Codelab 的态度挺分裂的。一部分人觉得这是官方出的"手把手教程",权威、路径清晰,适合快速上手新 API;另一部分人刷过几个之后就放弃了,理由是"太浅了,跟 2026-06-29 tool 1
APKPure 和酷安的下载安全性分析 APKPure 和酷安的下载安全性分析 APKPure 和酷安的下载安全性分析 从一次签名验证失败说起 去年给一个老设备做系统维护时,我遇到了一个挺典型的问题。一台 Pixel 3 XL 停留在 Android 12,Google Play 服务因为证书链问题无法正常更新,导致依赖 GMS 的应用集 2026-06-29 tool 1