KtLint 和 Detekt 的代码规范配置 KtLint 和 Detekt 的代码规范配置 KtLint 和 Detekt 的代码规范配置:一个"过度配置"项目的踩坑记录 上个月把项目从 AGP 7.4 迁到 8.2,Gradle 升到 8.5,顺手把 KtLint 从 0.49.1 更新到 1.1.1。本地 ./gradlew spotle 2026-08-03 tool 1
DocumentsContract 的树形文档访问,SAF 的局限 DocumentsContract 的树形文档访问,SAF 的局限 「DocumentsContract 的树形文档访问,SAF 的局限」 去年把文件管理模块重构到纯 SAF(Storage Access Framework)方案时,我在 Android 11 的测试机上遇到一个极其诡异的权限崩溃。 2026-08-03 Android 5
Android 开发从 Java 8 到 17 的迁移,还有多少老项目没动 Android 开发从 Java 8 到 17 的迁移,还有多少老项目没动 Android 开发从 Java 8 到 17 的迁移,还有多少老项目没动 AGP 8.0 发布已经一年半了,Google 那把刀早就磨好。从 2023 年 4 月开始,Android Gradle Plugin 8.0 明 2026-08-03 随笔 1
Macrobenchmark 测出来的启动时间,跟真实用户差多少 Macrobenchmark 测出来的启动时间,跟真实用户差多少 「Macrobenchmark 测出来的启动时间,跟真实用户差多少」 去年做完一轮启动优化,本地跑 Macrobenchmark 的数据看起来相当漂亮。StartupTimingMetric 测出来的 timeToInitialDis 2026-08-03 Android 0
Jetpack Compose 的 Material3 Adaptive,大屏适配终于有官方方案了 Jetpack Compose 的 Material3 Adaptive,大屏适配终于有官方方案了 Jetpack Compose 的 Material3 Adaptive,大屏适配终于有官方方案了 Compose 1.0 正式发布的时候,折叠屏还只是个新鲜玩具。三星 Galaxy Z Fold 那 2026-08-03 随笔 4
国内手机厂商的折叠屏适配要求,大屏 App 的新规范 国内手机厂商的折叠屏适配要求,大屏 App 的新规范 国内手机厂商的折叠屏适配要求,大屏 App 的新规范 去年几家大厂凑在一起搞了个折叠屏软件生态联盟,华为、小米、OPPO、vivo、荣耀,该在的都在。新闻稿写得挺漂亮,说要统一标准、共建生态、提升大屏体验。结果联盟成立快一年了,我打开各家应用商店 2026-08-03 随笔 1
Baseline Profile 启动优化实测,效果有多少 Baseline Profile 启动优化实测,效果有多少 Baseline Profile 启动优化实测,效果有多少 上个月在给一个 Jetpack Compose 项目做冷启动性能基线的时候,Macrobenchmark 跑出来的数据让我一度怀疑设备坏了。同一台 Pixel 7,同一个 APK, 2026-08-03 Android 0
Android 面试题整理,来自真实面经 Android 面试题整理,来自真实面经 「Android 面试题整理,来自真实面经」 牛客网上有一条2024年快手Android开发岗的二面面经,候选人记录了这样一段对话:面试官先问"Handler会导致内存泄漏吗",他按标准答案回答了内部类持有外部类引用、建议使用静态内部类加WeakRefere 2026-08-03 tool 0
Jacoco 覆盖率报告的配置与解读 Jacoco 覆盖率报告的配置与解读 Jacoco 覆盖率报告的配置与解读 很多 Android 团队第一次接触 Jacoco 都是在升级 Android Gradle Plugin 之后。原先跑得好好的 ./gradlew createDebugCoverageReport 突然报空指针,或者 C 2026-08-03 tool 0
Android 的 TTS 引擎选择,系统 vs 第三方 Android 的 TTS 引擎选择,系统 vs 第三方 「Android 的 TTS 引擎选择,系统 vs 第三方」 去年把 App 的 targetSdkVersion 升到 31(Android 12)之后,后台收到一条很诡异的崩溃链:用户在 Pixel 5 上点击播放按钮,应用直接闪退,堆栈 2026-07-31 Android 3