Kotlin 协程的 Job 和 SupervisorJob 差别在哪 Kotlin 协程的 Job 和 SupervisorJob 差别在哪 Kotlin 协程的 Job 和 SupervisorJob 差别在哪 去年维护一个后台任务调度模块的时候,我踩到了一个协程异常处理的坑。当时代码大概长这样: val scope = CoroutineScope(Job() + 2026-05-26 Android 5
Kotlin 2.0 正式发布,迁移要注意什么 Kotlin 2.0 正式发布,迁移要注意什么 「Kotlin 2.0 正式发布,迁移要注意什么」 Kotlin 2.0 在 2024 年 5 月 GA 了,JetBrains 憋了快两年的大版本终于落地。我先把结论放在前面:这个版本最值得关注的不是新语法糖,而是编译器后端彻底换成了 K2,以及随之 2026-05-26 随笔 1
我日常用的 Android 调试工具清单 我日常用的 Android 调试工具清单 我日常用的 Android 调试工具清单 Android 开发的调试工具生态在过去几年发生了不小的变化。Google 官方工具链在持续迭代,第三方工具也在特定场景下找到了自己的位置。这篇文章想聊的不是那种"十大必备工具"式的罗列,而是我实际工作中高频使用、踩 2026-05-26 tool 0
Android 面试题整理,来自真实面经 Android 面试题整理,来自真实面经 「Android 面试题整理,来自真实面经」 为什么我又开始整理面试题了 去年帮团队面了大概三十多个 Android 开发,从 P5 到 P7 都有,发现一个挺尴尬的现象:很多人简历上写着"精通 Kotlin/Compose/性能优化",真坐下来聊半小时,能 2026-05-26 tool 1
Hilt 的编译时代码生成,到底生成了什么 Hilt 的编译时代码生成,到底生成了什么 Hilt 的编译时代码生成,到底生成了什么 Hilt 2.44 版本发布的时候,我把一个老项目从 Dagger 2 切了过去。迁移过程比预期顺利,加几个注解、删几行代码就编译通过了。但那天晚上我盯着 build 目录看了很久——Hilt 到底帮我生成了什么 2026-05-24 Android 5
Macrobenchmark 测出来的启动时间,跟真实用户差多少 Macrobenchmark 测出来的启动时间,跟真实用户差多少 「Macrobenchmark 测出来的启动时间,跟真实用户差多少」 从一次离谱的数据差异说起 去年我在优化一个电商 App 的冷启动,Macrobenchmark 跑出来的数据漂亮得让我怀疑人生。Median 280ms,P99 3 2026-05-24 Android 1
JetBrains 的新动作,Kotlin 生态要变天? JetBrains 的新动作,Kotlin 生态要变天? JetBrains 的新动作,Kotlin 生态要变天? Kotlin 2.0 编译器落地,K2 不是换皮 JetBrains 在 2024 年 5 月把 Kotlin 2.0.0 推成稳定版,这事儿被很多人低估了。K2 编译器从 2021 2026-05-24 随笔 4
开源图表库选型:MPAndroidChart 之外还有什么 开源图表库选型:MPAndroidChart 之外还有什么 开源图表库选型:MPAndroidChart 之外还有什么 一个被反复问到的老问题 去年维护的一个企业级项目里,产品突然要求在报表页加一套复杂的组合图表:柱状图叠折线图,带自定义 marker,还要支持手势联动。团队里有人直接甩了 MPAn 2026-05-24 tool 1
APK 瘦身实战记录,从 80MB 压到 35MB APK 瘦身实战记录,从 80MB 压到 35MB APK 瘦身实战记录,从 80MB 压到 35MB 起因:一个被渠道拒掉的包 去年 Q3 我们发版前,运营在群里丢过来一张截图,某应用商店后台提示"安装包超过 80MB,建议优化至 50MB 以下以获得推荐位加权"。当时我们的 release AP 2026-05-24 tool 3
KMP 项目里的 expect/actual 是怎么工作的 KMP 项目里的 expect/actual 是怎么工作的 KMP 项目里的 expect/actual 是怎么工作的 从一个编译报错开始 去年下半年我在把一个 Android 项目往 KMP 迁移时,碰到了一个挺典型的编译错误。代码结构大概是这样: // commonMain expect cla 2026-05-24 Android 4