上一篇聊了 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
上一篇聊了启动优化,这篇换个方向——工程效率。CI/CD 不是写代码本身,但它决定了代码从提交到上线的效率和质量。很多团队的 Android CI 还停留在"跑个 lint 就打包"的阶段,这篇聊聊怎么搭一套真正有用的 CI/CD。 Android CI/CD 要做什么 一个完整的 Android
上一篇聊了无障碍开发,这篇回到性能方向。启动优化做过的人都知道,冷启动从点击图标到首帧渲染的每一毫秒都是抠出来的。AOT 编译、异步初始化、延迟加载这些手段用完后,Baseline Profiles 是下一层的优化。 先理解 ART 的编译模式 Android Runtime(ART)有三种编译模式