SonarQube 代码质量门禁,团队落地经验 SonarQube 代码质量门禁,团队落地经验 SonarQube 代码质量门禁,团队落地经验 从一次深夜回滚说起 去年 Q3 我们团队经历过一次典型的技术债反噬。凌晨两点,生产环境一个空指针异常把订单结算服务打挂了。根因定位很快:某个分支合并时,新同事把 Optional.of() 用成了 Opt 2026-07-10 tool 1
Kotlin 的 Sealed Interface 比 Sealed Class 好在哪 Kotlin 的 Sealed Interface 比 Sealed Class 好在哪 「Kotlin 的 Sealed Interface 比 Sealed Class 好在哪」 去年把项目里的状态机从 Sealed Class 迁到 Sealed Interface 时,踩了个编译器版本相关的 2026-07-10 Android 1
ShortcutManager 的动态快捷方式,真的有人用吗 ShortcutManager 的动态快捷方式,真的有人用吗 ShortcutManager 的动态快捷方式,真的有人用吗 被忽视的 API:从 Android 7.1 到今天的尴尬地位 ShortcutManager 这个 API 在 Android 7.1(API 25)引入,到现在已经横跨了八 2026-07-09 Android 9
kotlinx.serialization 的稳定性,生产环境敢用吗 kotlinx.serialization 的稳定性,生产环境敢用吗 kotlinx.serialization 的稳定性,生产环境敢用吗 从 Gson 迁移说起:一个被低估的决策成本 三年前接手一个日活百万级别的 Android 项目时,团队正面临一个典型的技术债场景:Gson 的 TypeTok 2026-07-09 tool 6
NetworkSecurityConfig 的证书固定,配置注意事项 NetworkSecurityConfig 的证书固定,配置注意事项 NetworkSecurityConfig 的证书固定,配置注意事项 去年处理一个支付 SDK 的接入需求时,对方要求必须做证书固定(Certificate Pinning)。当时心想这玩意儿 Android 7.0 就原生支持了 2026-07-08 Android 4
Robolectric 的单元测试速度, JVM 内跑 Android Robolectric 的单元测试速度, JVM 内跑 Android Robolectric 的单元测试速度,JVM 内跑 Android 一个真实的痛点:Android 单元测试的启动成本 去年维护一个中型项目时,我们的 CI 流水线跑完全部单元测试需要 14 分钟。其中真正的测试执行时间不到 2026-07-08 tool 7
F-Droid 开源应用市场的使用体验 F-Droid 开源应用市场的使用体验 F-Droid 开源应用市场的使用体验 一个被忽略的官方仓库配置问题 我第一次认真用 F-Droid 是在 2021 年,给一台刷了 LineageOS 的备用机装应用。当时遇到的情况很典型:打开客户端,刷新仓库,然后看着进度条卡在 "Updating rep 2026-07-07 tool 2
VpnService 的隧道实现,MTU 和 DNS 配置细节 VpnService 的隧道实现,MTU 和 DNS 配置细节 「VpnService 的隧道实现,MTU 和 DNS 配置细节」 Android 的 VpnService 从 API 14 就有了,但真正能做出稳定可用的隧道实现,踩的坑远比文档上写的多。我去年维护一个基于 VpnService 的 2026-07-07 Android 6
Android 的功耗归因:WakeLock、AlarmManager、JobScheduler 谁更省电 Android 的功耗归因:WakeLock、AlarmManager、JobScheduler 谁更省电 Android 的功耗归因:WakeLock、AlarmManager、JobScheduler 谁更省电 去年接手了一个企业级 MDM 应用的功耗优化项目,用户反馈很直接:装了这个 App 2026-07-06 Android 5
WorkManager 的约束条件,电池优化下还靠谱吗 WorkManager 的约束条件,电池优化下还靠谱吗 WorkManager 的约束条件,电池优化下还靠谱吗 从一次凌晨的崩溃告警说起 去年维护的一个后台上传模块,线上突然报了大量 WorkInfo.State.FAILED 的异常。看日志很诡异:任务明明设置了 NetworkType.CONNE 2026-07-06 Android 5