SQLDelight 的类型安全 SQL,在 Android 项目中的使用 SQLDelight 的类型安全 SQL,在 Android 项目中的使用 「SQLDelight 的类型安全 SQL,在 Android 项目中的使用」 从 Room 的编译期焦虑说起 去年维护一个老项目时,我遇到过一个典型的 Room 痛点。需求很简单:给查询加个 LIMIT 参数,让用户能分页 2026-06-06 tool 18
Dagger 到 Hilt 的迁移检查清单 Dagger 到 Hilt 的迁移检查清单 「Dagger 到 Hilt 的迁移检查清单」 Hilt 发布已经四年多了,但直到今天,我打开 GitHub 上那些 2018 年以前创建的 Android 项目,Dagger 的 @Component 和 @Module 依然随处可见。迁移不是不想做,而 2026-06-06 tool 21
Zygote 的预加载优化,对 App 启动的影响 Zygote 的预加载优化,对 App 启动的影响 Zygote 的预加载优化,对 App 启动的影响 Android 应用的冷启动速度,很大程度上取决于 Zygote 进程的分叉效率。这个结论在官方文档里被反复提及,但具体到实际项目中,Zygote 预加载的类列表到底该怎么调整、能省多少毫秒、会不 2026-06-06 Android 22
JetBrains Fleet 对 Android 开发的支持现状 JetBrains Fleet 对 Android 开发的支持现状 JetBrains Fleet 对 Android 开发的支持现状 一个被反复推迟的"下一代 IDE"承诺 JetBrains 在 2021 年底首次公开 Fleet 的时候,整个技术圈的预期被拉得很高。官方博客的标题写得相当大胆: 2026-06-06 随笔 19
Coil 和 Glide 的加载性能对比数据 Coil 和 Glide 的加载性能对比数据 Coil 和 Glide 的加载性能对比数据 从一个真实的 ANR 开始 去年维护的一个社交类 App 开始频繁上报 Input dispatching timed out 类型的 ANR,堆栈信息集中在图片加载环节。当时用的是 Glide 4.14.2 2026-06-04 tool 22
Retrofit 的自定义 Converter,写一个没那么难 Retrofit 的自定义 Converter,写一个没那么难 Retrofit 的自定义 Converter,写一个没那么难 Retrofit 的 Converter 机制被很多人视为黑盒。官方文档里轻描淡写一句 "addConverterFactory",Stack Overflow 上搜到的答 2026-06-04 Android 13
欧盟 DMA 法案实施后,Google 搜索框还能预装吗 欧盟 DMA 法案实施后,Google 搜索框还能预装吗 「欧盟 DMA 法案实施后,Google 搜索框还能预装吗」 欧盟数字市场法案(Digital Markets Act,DMA)在 2024 年 3 月全面生效,这半年多下来,Android 生态里最能感受到震动的,其实不是那些宏大的反垄断叙 2026-06-04 随笔 12
Android Studio 新版本的内存占用,我的电脑撑得住吗 Android Studio 新版本的内存占用,我的电脑撑得住吗 Android Studio 新版本的内存占用,我的电脑撑得住吗 Android Studio Koala 的 release notes 里有一行字我盯着看了很久:"Improved memory management for la 2026-06-03 随笔 29
Biometric 指纹认证的不同安全等级,怎么选 Biometric 指纹认证的不同安全等级,怎么选 Biometric 指纹认证的不同安全等级,怎么选 Android 的 Biometric API 从 BiometricPrompt 取代 FingerprintManager 开始,官方就在推一个"统一入口"的概念。但真到了要上线指纹支付、应用 2026-06-03 Android 23
Jacoco 覆盖率报告的配置与解读 Jacoco 覆盖率报告的配置与解读 Jacoco 覆盖率报告的配置与解读 一个被忽略的质量信号 去年维护一个老项目时,我遇到了一个典型的场景:CI 流水线里跑完测试,Jacoco 报告生成成功,覆盖率 87%,团队觉得挺满意。但线上还是出了 NPE,堆栈指向的代码路径在测试里明明"覆盖"到了。追查 2026-06-03 tool 13