上一篇聊了 Compose Multiplatform,这篇回到 Jetpack 基础设施。Lifecycle、LiveData、ViewModel 是 Android 架构组件的三件套,天天用但底层怎么实现的?理解源码对排查内存泄漏、数据丢失等问题很有帮助。 Lifecycle 的实现原理 核心接
上一篇聊了逆向工程,这篇回到跨平台方向。之前第 30 篇聊过 KMM(Kotlin Multiplatform Mobile),那是共享业务逻辑。Compose Multiplatform 更进一步——共享 UI 代码。一套 Composable 同时跑在 Android、iOS、桌面、Web 上,
上一篇聊了 Wear OS 开发,这篇换个方向——逆向工程。做安全研究的、做竞品分析的、做加固防护的,都需要懂逆向。这篇从静态分析到动态 Hook,梳理 Android 逆向的核心工具和方法。 声明:逆向技术用于安全研究和自有 App 的防护验证。对他人 App 进行逆向可能违反法律和服务条款,请在
上一篇聊了 ViewBinding 与 DataBinding,这篇进入一个相对小众但正在增长的领域——Wear OS。智能手表 App 的开发跟手机 App 差异不小,屏幕小、交互方式不同、性能限制大。这篇梳理 Wear OS 开发的核心要点。 Wear OS 的特殊性 屏幕小:通常 1.2-1.
上一篇聊了 Compose 自定义布局,这篇回到 View 体系,聊一个迁移期的经典问题——ViewBinding vs DataBinding。很多项目同时用了两者,代码混乱。到底该留哪个?怎么清理? 两者的本质区别
上一篇聊了 Media3,这篇回到 UI 方向。Compose 的声明式 UI 看着简单,但做到复杂布局和自定义 Modifier 时,不理解底层原理就会卡住。这篇从 Layout 协议到 Modifier 链,拆解 Compose 布局的核心机制。 Compose 布局三阶段 Compose 的渲
上一篇聊了 CameraX,这篇继续媒体方向。视频播放是很多 App 的核心功能——短视频、直播、视频教程、在线课程。Google 在 2023 年推出了 Media3,统一了以前散乱的 ExoPlayer、MediaSession 和播放器 API。到底 Media3 是什么?跟 ExoPlaye
上一篇聊了蓝牙 BLE,这篇继续硬件交互方向——相机。Camera2 API 强大但极其复杂,动辄几百行代码才能预览。CameraX 是 Jetpack 推出的封装层,大幅降低使用门槛。但很多存量项目还在用 Camera1 或 Camera2,迁移要注意什么? 为什么要从 Camera2 迁移到 C
上一篇聊了依赖管理,这篇进入一个特定领域——蓝牙低功耗(BLE)。智能手表、健康设备、IoT 传感器都走 BLE 协议,但 Android 的 BLE API 出了名的难用:回调嵌套、状态机复杂、不同手机行为不一致。这篇梳理 BLE 开发的核心流程和常见坑。 BLE 基本概念 BLE 通信涉及几个概
上一篇聊了 CI/CD 实践,这篇继续工程效率方向——依赖管理。多模块项目里,依赖版本不一致是个经典问题:模块 A 用 Retrofit 2.9,模块 B 用 2.11,编译不报错但运行时行为不一致。Version Catalogs 就是解决这个问题的。 传统依赖管理的问题 在 Version Ca