上一篇讲了 Compose 编译器原理,进入 Android 存储生态——Scoped Storage。Android 10 引入的存储沙箱彻底改变了 App 访问文件的方式,旧项目迁移一开始很痛,但理解后其实更简洁。 Android 存储发展的三个阶段 1. Android 4.4 之前(遗留)
上一篇讲了 WebView 优化,回到 Compose——理解 Compose 的工作原理能让"调 API"的工程师变成"懂魔法"的工程师。Compose 的编译器插件是怎么把函数变成 UI 的?这篇拆开说。 Compose 编译器的"魔法" Compose 不是普通的 Kotlin 函数调用。每个
上一篇讲了前台服务与后台治理,切到 WebView——App 里嵌入 H5 页面是高频需求(电商活动页、H5 营销、报名表)。但 WebView 是 Android 性能重灾区,做不好白屏、首屏慢、内存泄漏一起来。 WebView 的性能问题 WebView 第一次初始化(Cold Start)可能
上一篇讲了 Systrace/Perfetto 性能分析,这篇切到 Android 后台治理——前台服务(Foreground Service)、后台限制、WorkManager 选型。Android 14/15 在这一块越来越严格,是 App 上线被驳回的高频原因之一。 Android 后台策略演
上一篇讲了 MVI 架构,切换到性能分析工具——Systrace 与 Perfetto。每个 Android 工程师都该会 Systrace 抓问题,但 Perfetto 是更强的下一代工具。这篇把它们一起讲清楚。 Systrace 是什么 Systrace 是 Android 自带的性能分析工具,
上一篇讲了离线优先架构,回到 App 架构——MVI。MVVM 已经"烂大街",但 MVI 的"单向数据流"解决了 MVVM 一直搞不定的事:状态一致性、可预测、可测试。这一篇用 Orbit 框架做实战示例。 MVI 是什么 MVI = Model-View-Intent,是 MVVM 的"加强版"
上一篇讲了 R8 深度优化,进入数据存储层——离线优先(Offline-First)。移动端网络不稳定,离线设计不是"边角案例"而是"核心场景"。这一篇看 Realm 和 SQLDelight 两种本地存储方案如何在离线优先架构里发挥作用。 什么是离线优先 离线优先的核心思想:UI 不应该等网络,本
系列文章《Android 工程师的 100 篇进阶笔记》第 62 篇 上一篇讲了 APK 体积整体优化,这篇专攻 R8/ProGuard 的进阶能力。除了默认压缩,还有混淆字符串、删除调试日志、Keep 规则调优这些"重武器"。 R8 vs ProGuard Android 长期用 ProGuard
上一篇讲了屏幕适配,切到包体积问题。APK 每涨 1MB,用户下载转化率掉 1%。这个数字看着小,乘以亿级 DAU 就是钱。这一篇把所有能瘦身的手段系统过一遍。 APK 的组成结构 分析 APK 第一步是看里面有什么: ./gradlew app:assembleRelease ls -lh app
上一篇讲了 Choreographer 卡顿监控,回到一个永恒话题——屏幕适配。Android 手机分辨率从 720p 到 4K、纵横比从 18:9 到瀑布屏,怎么做一套 UI 看起来都一样?今日头条的方案是业内最成熟的实践之一。 屏幕适配的三个维度 宽度:同 dp 在不同 DPI 下物理大小不同