kotlinx.serialization 的稳定性,生产环境敢用吗 kotlinx.serialization 的稳定性,生产环境敢用吗 kotlinx.serialization 的稳定性,生产环境敢用吗 去年把项目里的 Gson 全面替换为 kotlinx.serialization 时,我遇到的最直观问题不是运行时 crash,而是 CI 直接编译不过。Kot 2026-07-20 tool 2
Apollo Kotlin 的 GraphQL 客户端,缓存策略配置 Apollo Kotlin 的 GraphQL 客户端,缓存策略配置 Apollo Kotlin 的 GraphQL 客户端,缓存策略配置 线上环境出现过这样一种情况:用户在个人资料页修改了昵称,返回列表页后,下拉刷新,列表里旧昵称闪了一下,紧接着变成了新昵称。这个“闪一下”的过程在弱网环境下尤为明 2026-07-20 tool 5
Fastlane 的自动化发布流程,Play Store 上传 Fastlane 的自动化发布流程,Play Store 上传 Fastlane 的自动化发布流程,Play Store 上传 去年夏天,我在给一个新项目上传第一个内测版本。Play Console 的 Web 界面已经提示必须提交 Android App Bundle,但手动拖拽上传 AAB 之后 2026-07-20 tool 7
Crashlytics 的自定义日志,定位 Native Crash Crashlytics 的自定义日志,定位 Native Crash Crashlytics 的自定义日志,定位 Native Crash 去年线上有一个 Native Crash 把我们折腾了挺久。信号 SIGSEGV,崩溃地址 0x0000000000000000,Firebase Consol 2026-07-20 Android 5
VS Code 写 Android,插件生态够用吗 VS Code 写 Android,插件生态够用吗 VS Code 写 Android,插件生态够用吗 从一次 Gradle 同步崩溃说起 去年把主力开发机从 Intel Mac 换成 M3 MacBook Pro 之后,我做过一个实验:把 IntelliJ IDEA 卸载,只用 VS Code 写 2026-07-17 tool 8
Charles 和 Proxyman 的 HTTPS 解密配置教程 Charles 和 Proxyman 的 HTTPS 解密配置教程 Charles 和 Proxyman 的 HTTPS 解密配置教程 在 Android 开发里抓包,最常见的情况不是配代理,而是配完代理之后满屏的红色叉号。Charles 的列表里显示 <unknown>,Proxyman 的 Fl 2026-07-17 tool 4
Android 14 的截屏检测 API,能做什么不能做什么 Android 14 的截屏检测 API,能做什么不能做什么 Android 14 的截屏检测 API,能做什么不能做什么 Android 14 正式引入 DETECT_SCREEN_CAPTURE 权限和 ScreenCaptureCallback 的时候,我第一反应是:Google 终于把这个坑 2026-07-17 Android 9
Android 的增量编译,到底省了多少时间 Android 的增量编译,到底省了多少时间 Android 的增量编译,到底省了多少时间 从一条 UP-TO-DATE 日志开始 前阵子升级一个老项目到 AGP 8.1.0 + Gradle 8.2.1 + Kotlin 1.9.10, clean build 时间从 3 分 20 秒涨到了 5 2026-07-17 Android 7
OverlayManagerService 的悬浮窗权限,不同厂商差异 OverlayManagerService 的悬浮窗权限,不同厂商差异 OverlayManagerService 的悬浮窗权限,不同厂商差异 从一次线上崩溃说起 去年维护一个直播 SDK 的时候,我们收到一份来自 vivo X90 的崩溃报告。堆栈很干净,干净到让人头疼: android.view 2026-07-15 Android 7
SavedStateViewModelFactory 的恢复逻辑,Bundle 大小限制 SavedStateViewModelFactory 的恢复逻辑,Bundle 大小限制 「SavedStateViewModelFactory 的恢复逻辑,Bundle 大小限制」 去年给一个电商 App 做进程回收后的状态恢复时,我踩到了一个坑:用户把商品加入购物车后切到后台,过十几分钟再回来, 2026-07-15 Android 5