Android版本简介
Android系统从2007年最早的Android 1.0发布到今年Android 8.0的发布,虽然已经发生了很大的变化,但是基本的框架并没有太大的变化,我先后接触过Android 2.2、Android4.4、Android6.0、Android7.0版本,下图分别是Android 2.2和Android8.0的软件架构图,从这两张图中可以看到,即使是最新的Android版本,其框架依然和Android 2.2版本保持基本一致,这得益于Android早期版本就已经经过良好的设计,使其具备了很好的扩展性。从这两幅图中可以看到的一个最大的变化就是Android虚拟机从dalvik换成了art,当然每一层的具体实现,有些确实也发生比较大的变化。
那么Android有这么多版本,如果想对Android系统进行分析,选择什么版本比较好呢,其实这应该是一个因人而异没有绝对答案的问题,如果只是想搞清Android系统原理,我建议选择2.x版本就好了,因为2.x版本在框架上基本定型,而代码规模要小很多,能最快速的把握核心逻辑和原理,而且如果真的把2.x版本搞懂了,说明具备了分析Android系统所需要知识结构,也具备快速分析任一Android版本的能力。这也是老罗和邓凡平等前辈基于2.x版本的分析依旧对新手有参考意义的地方,有时候看到那些说分析过时的评论也是苦笑不得啊。理解了2.x版本后,就可以根据自己工作的需要,再分析具体的版本了。
博客内容说明
就我自己来说,对一些实现机制上发生较大变化的又比较复杂的模块,我会先对2.2版本进行分析,然后再对6.0版本或其他有代表性的版本进行分析,主要是想看一下技术演进的过程,而如果是一些实现机制上没啥变化的或者简单的模块,我会直接对6.0版本进行分析,因为我觉得这两个版本比较有代表性吧,而且接触的时间也多一点,但是最后写成博客的话,为了节省时间,基本都基于6.0版本来写吧。
好了,扯了这么多废话,究竟应该怎么分析Android这个博大精深的系统呢?我觉得不管采用什么方法,对于想分析Android系统的童鞋来说,首先要达到的一个目标就是打通整个系统,可以先分析一些通用的模块,比如四大组件相关的,然后再分析专业性比较强的模块,比如多媒体子系统、网络子系统等,可以采用情景分析法,比如某个组件、某个功能的原理和流程,系统启动流程等,我准备大概按以下提纲来安排我的博客,实际写博客不会按顺序来写,写完一些基础的博客后,会先写一些最近工作中相关度比较高的一些东西。
- Android基础
- Android系统启动流程
- Android app组件
- Android显示子系统
- Android多媒体子系统
- Android网络子系统
- Android虚拟机
- Android开发调试
- 等等等
分析Android系统是个任重而道远的事情,是个需要持续积累的过程,刚开始肯定会碰到一些门槛,不过跨过去之后基本就一马平川了,主要就是需要一个比较全面的知识结构,如果你软件经验比较丰富基础比较好的话,应该会比较顺利,不然的话肯定会比较吃力的,容易陷入细节,抓不住重点。如果对系统比较熟悉了,要写成博客还需要投入很多的时间,不管怎样,路漫漫其修远兮 ,吾将上下而求索,一起努力吧。