写到第 15 篇,这个系列已经完成了从初级 Activity 生命周期到 Gradle、Native、APM、安全的跨越。 最后一篇,我想聊聊职业成长:从“能写代码的 Android 工程师”到“能设计系统的移动端架构师”,中间到底差了什么? 一、高级工程师 vs 架构师:差别不在代码量
Android 安全是一个常被低估的领域。很多团队直到被逆向、被爬虫、被薅羊毛,才开始补课。 这篇会讲 Android 安全的几个核心层面: APK 反编译有多容易。 代码混淆、加固、VMP 的基本原理。 本地数据、密钥、通信安全。 签名机制与 APK 完整性校验。 一、APK 反编译:你的代码其实
性能优化不能只靠本地 Profile。用户手里的设备千奇百怪:低端机、老旧系统、弱网环境、后台被杀。你只有在线上真实环境中采集数据,才能发现真正的问题。 这篇会讲如何搭建 Android 性能监控体系:从指标选择、本地采集、上报策略,到最终形成 APM 闭环。 一、APM 应该监控什么? 不是指标越
Android 主流开发语言是 Kotlin,但很多场景你绕不开 C/C++: 图像处理、音视频编解码。 加密算法、安全模块。 复用已有的 C++ 库(如 OpenCV、FFmpeg、游戏引擎)。 对性能极度敏感的计算。 这篇会讲 Android Native 开发的核心:JNI、NDK、CMake
项目小的时候就几个人,编译慢点无所谓。但当模块数超过 20、CI 流水线每天跑几十次、一次全量构建要 10 分钟以上,构建优化就成了真问题。 这篇进入专家篇,讲 Gradle 构建优化和自定义插件。目标不是让你成为 Gradle 专家,而是让你能诊断和解决真实项目里的构建慢问题。 一、为什么你的 G
Android 应用几乎没有不做网络的。但“能联网”和“网络层架构好”是两件事。 我见过太多项目的网络层: 每个接口都手写 try-catch,重复代码一大堆。 错误码处理散落在 Activity 和 ViewModel 里。 Token 刷新没有统一机制,401 到处弹登录框。 一个请求失败就把整
第 3 篇我们讲过 Kotlin 协程的入门用法。到了高级篇,光会 launch 和 withContext 已经不够了。面试官会追问: Dispatchers.Default 和 Dispatchers.IO 到底有什么区别? Job 和 SupervisorJob 的差异是什么? 协程异常为什么
几乎所有 Android 项目都会遇到一个共同问题:对象该在哪里创建? 一开始我们用单例:Repository.getInstance()。然后发现测试困难、生命周期混乱、Mock 麻烦。再后来项目变大,模块之间互相引用,改动一处可能引发连锁反应。 依赖注入(DI)就是解决这个问题的方法论,而 Hi
当你开始做大型 App,或者接入 SDK、插件化、多进程保活时,跨进程通信(IPC)是绕不开的坎。 Android 系统里几乎所有核心服务都在 SystemServer 进程里运行,你的 App 要和它们打交道,全靠 Binder。但很多工程师工作了几年,对 Binder 的理解还停留在“一个跨进程
上一篇我们聊了启动、内存、卡顿的整体方法论。从这一篇开始,进入高级篇,我们选择一个当下最热门也最容易被误用的方向深入:Jetpack Compose 性能。 Compose 的声明式 UI 极大地提升了开发效率,但“写起来爽”和“跑起来顺”是两件事。我见过太多团队: 把 XML 直接翻译成 Comp