Android 的缓存目录选择:cacheDir vs filesDir vs externalCacheDir Android 的缓存目录选择:cacheDir vs filesDir vs externalCacheDir Android 的缓存目录选择:cacheDir vs filesDir vs externalCacheDir 一个被系统清理搞崩的线上事故 去年维护的一个工具类 App 在 Andr 2026-06-22 Android 1
Firebase 免费额度够用吗,超出后多少钱 Firebase 免费额度够用吗,超出后多少钱 「Firebase 免费额度够用吗,超出后多少钱」 Firebase 的 Spark 计划(免费档)在 Google 产品里算是个异类。它不像 GCP 那样新用户送 300 美元试用金、到期就停,而是真正意义上的"永久免费"——只要你不触发某些隐藏开关 2026-06-22 tool 4
Android 16 的早期爆料,预测功能列表 Android 16 的早期爆料,预测功能列表 Android 16 的早期爆料:Google 真的在听开发者说话吗? 从 Android 15 的"稳定版"闹剧说起 Android 15 的稳定版推送节奏,大概是近几年最让人哭笑不得的一次。Pixel 设备在九月底收到 OTA,结果不到两周,Goo 2026-06-22 随笔 2
WebSettings 的缓存模式,H5 混合应用的加载策略 WebSettings 的缓存模式,H5 混合应用的加载策略 WebSettings 的缓存模式,H5 混合应用的加载策略 去年维护一个存量混合应用时,遇到一个让我困惑了很久的问题:同样的 H5 页面,在 iOS 上二次打开几乎是瞬时的,Android 上却总是要从头加载。排查了一圈 CDN、HTT 2026-06-21 Android 6
SVG 转 Vector Drawable 的注意事项 SVG 转 Vector Drawable 的注意事项 SVG 转 Vector Drawable 的注意事项 Android 开发里用 Vector Drawable 替代多套 PNG 已经是老生常谈了,但真把设计师给的 SVG 往项目里一丢,编译报错、运行时崩溃、渲染错位的问题从来没少过。这篇文 2026-06-21 tool 2
开源项目被大厂收购后的结局,你的依赖库还在吗 开源项目被大厂收购后的结局,你的依赖库还在吗 开源项目被大厂收购后的结局,你的依赖库还在吗 从 Square 的 LeakCanary 说起 Square 这家公司对 Android 生态的贡献,老一点的开发者应该都有印象。Retrofit、OkHttp、Picasso、LeakCanary,几乎构 2026-06-21 随笔 1
Intent 的 FLAG_ACTIVITY_CLEAR_TOP 与 singleTask,任务栈清理的坑 Intent 的 FLAG_ACTIVITY_CLEAR_TOP 与 singleTask,任务栈清理的坑 「Intent 的 FLAG_ACTIVITY_CLEAR_TOP 与 singleTask,任务栈清理的坑」 一个线上崩溃引出的问题 去年维护的一个项目,线上收到一条很奇怪的崩溃栈:Ille 2026-06-21 Android 2
Google 对侧载应用的扫描策略,APK 安装前检查 Google 对侧载应用的扫描策略,APK 安装前检查 Google 对侧载应用的扫描策略,APK 安装前检查 Play Protect 的"守门"逻辑变了 Android 15 开始,Google 把侧载应用的扫描时机往前挪了一大步。以前是你点了安装、APK 落盘之后,Play Protect 才 2026-06-21 随笔 2
Moshi 的代码生成,KSP 适配后的编译速度 Moshi 的代码生成,KSP 适配后的编译速度 Moshi 的代码生成,KSP 适配后的编译速度 从 KAPT 的编译噩梦说起 如果你用 Kotlin 写 Android 项目超过三年,大概率经历过 KAPT 的折磨。Moshi 作为 Square 出品的 JSON 解析库,早期版本依赖 KAPT 2026-06-21 tool 1
Android 开发者的工具链成本,哪些可以省 Android 开发者的工具链成本,哪些可以省 Android 开发者的工具链成本,哪些可以省 去年 JetBrains 宣布 IntelliJ IDEA 和 Android Studio 的授权策略调整时,我在一个开发者群里看到有人转发了一条消息,说"终于不用折腾破解了,直接换 VS Code"。 2026-06-21 随笔 1