前言
对于咱们Android开发来说,一般来说都是干上个几年之后,都得要考虑进阶或者是转行的问题。但老话说转行穷三年,不到万不得已我想大多数人都不会去放弃现在的岗位与薪资。
如果你还在干Android并且想要进阶,那么对Framework的了解是必不可少的。
Framework相关的知识是Android开发中一个深层次的内容,很多中大厂的面试官喜欢一直问到你答不上来为止,就是为了正儿八经的考察你的技术能力,这也要求Android开发工程师对Framework知识有一个清晰且较为全面的认识。
怎么学Framework
其实学习 Android Framework 源码没有大家想象中的那么难,我把看源码的阶段分为三层:
1、 把整个流程逻辑捋清楚,知道各个技术细节 2、 把源码进行抽象,总结出源码中的核心思想 3、把思想应用到自己的实际开发过程中,做到“为所欲为”
其实大道理说多了,也就变成一个安慰人的套话。真还不如拿出干货、用实力说话;所以说,实力见真章。
首先给大家贴一个阿里P7大佬整理的Frmaework内核源码知识体系图,大家都知道一句话叫做方向不对,努力白费。希望大家可以根据下面这份系统的Android Framework学习路线图进行学习,这样建立的知识体系才够牢固!
学习规划
同时也给大家准备好了对应的Framework源码学习手册:腾讯大佬整理的《Android Framework源码开发指南》
本学习手册旨在通过实例和案例介绍 Android Framework 的核心概念和技术,从而帮助开发者更好地理解 Android 应用程序的设计和开发。
该手册适合具有一定 Android 应用开发经验的程序员,希望能通过深入学习 Android Framework 来帮助开发者更好地理解和掌握这一技术。
详细Vx关注公众号:Android老皮!!!
部分内容节选
Android系统启动流程
了解Framework的同学,可能都或多或少的知道AMS、WMS、类加载、热修复Sophix、插件化等都要涉及系统的启动流程。
从手机开机开始涉及到的关键流程一般可分为以下五个步骤:
- 手机开启执行Boot ROM引导芯片开始执行。
- 加载引导程序Boot Loader到RAM,Boot Loader一般就会由厂商进行定制。
- 执行引导程序:初始化堆栈、硬件、网络内存等操作。
- 启动Android内核,寻找init关键文件,并启动init进程
- Kernel启动后,在用户空间启动init进程,该进程作为用户空间的第一个进程,并调用init进程中的main方法开始启动Zygote进程。
仅凭流程是无法掌握具体技术,相信完整的源码解析加上案例分享,可以帮大家省下不少时间。
跨进程通信IPC
IPC(inter-Process-Communication)进程间通信,用于两个进程之间进行数据交互的过程,任何操作系统都有IPC机制,但不同的操作系统有着不同的通信方式,Android系统是一种基于Linux内核的移动操作系统,Linux的跨进程通信主要通过管道、共享内存、内存映射等实现的,但Android有自己的进程间通信机制,最具代表性的就是Binder。
整份手册内容主要涵盖:系统启动流程分析、跨进程通信IPC、Handler、AMS 、WMS、SurFace,SurfaceFlinger、PKMS等10个章节,共442页,章节最后还有相关面试题解析,帮助大家更好地学习Framework,通过面试难关。
最后
技术是无止境的,你需要对自己提交的每一行代码、使用的每一个工具负责,不断挖掘其底层原理,才能使自己的技术升华到更高的层面
Android 架构师之路还很漫长,与君共勉