写在前面:
1、有没有必要学习linux内核?我认为是很有必要的。
学习linux内核有助于我们加深对一些概念的理解,比如“进程”、“线程”。
2、有没有必要自己编译android源码?
非必须,可以直接用android studio查看sdk源码,除非要调试一些功能。但是要亲自操练起来才能更熟悉。
android framework与我们的开发息息相关,这也是我们通常需要阅读源码的地方。
当然大多数开发者更多的还是在做业务开发,对于Framework基本停留在“不够了解”的阶段,其中不乏一些工作多年的 Android 工程师。
尤其是在面试的时候,面试官经常同你随便侃侃Activity的启动模式,但Activity启动牵扯的知识点其实很多,并非能单单用四个启动模式就能概括的,
默认的启动模式的表现会随着Intent Flag的设置而改变,因此侃Activity启动模式大多走流程装逼,最多结合项目遇到的问题,不熟悉Framework内容,这很难把控得住。
最为值得关注的是,Android Framework招聘岗位增长速度竟然达到了70%,在这接连裁员的环境下,也看得出这块前景是不可估量的。
那Android Framework工程师需要学习那些内容?
首先,需要了解Android系统的基本架构和组成部分。包括:Linux内核、HAL层、Framework层和应用层等。
其次,开发者们需要熟悉Java编程语言和Android开发工具,如Eclipse和Android Studio等。
最后,开发者们需要了解Framework层框架的各个模块和功能,如Activity、Service、Content Provider和Broadcast Receiver等。
这样一看想要全面学习 Android 系统,似乎并不简单而且有些难度,但我们作为应用开发者来讲,如果只是了解一些选修内容还是没那么难,虽然 Android 系统非常庞大且错综复杂,但整体架构设计还是很清晰的。
那么对于想要深入学习Android Framework开发知识的,仍在迷茫的开发们可以参考这份腾讯大佬整理的进阶文档《Android Framework 源码开发手册》
内容涵盖:系统启动流程分析、跨进程通信IPC、Handler、AMS 、WMS、SurFace,SurfaceFlinger、PKMS等共10个章节,章节最后还有相关面试题解析,帮助大家更好地学习Framework,通过面试难关。
由于篇幅原因,文中只展示部分内容,完整的可以直接下方扫码获取:
部分内容节选
目录
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。
结语
在整个Framework的学习过程中肯定会有一些痛苦,但相信只要能熬过去便能更上一层楼。
共勉。