Android系统深度游
最后更新于:2022-04-01 20:02:52
项目原因,让我们必须深入探索Android系统,完成对之前的我们来说比较艰巨的任务。这样,我们开启了Android深度游。
Android这个系统,应用层开发还是比较舒服的,Google把一切都安排好了,只要会Java就可以开发出绚烂多彩的应用。而它的内部还是比较庞大的,啃动它还是比较困难的,虽然它是open的,但面对海洋一般的代码,难免会迷失。
先看看Android系统的架构图
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-12_575d20c6dc88f.jpg)
从下到上共分四层:Linux kernel、libraries、application framework、applications
Android是基于Linux内核的,这是第一层。这就意味着你要有Linux的经验。Lniux内核与Linux驱动的知识是少不了的。对于内核相关的书籍,个人正在看两本国人写的书《Linux内核完全注释》和《Linux内核源代码情景分析》。
前一本书的作者是赵炯,主要分析0.11版的kernel。从代码量较少的但比较成型的内核说起,容易理解也不会被庞大的代码量所吓到。内面对linux历史背景和一些原理都有讲解,这样比干巴巴的分析代码强多了,也易于理解和消化。
另一本书的作者阵容还是很强大的。作者毛德操与胡希明都是教授级的人物,毛先生现已定居美国,而此书是两人联袂把当时共事时的心得与体会都分享出来,其实也是对过往岁月的一种纪念,一种友谊万岁的情怀。本书针对kernel 2.4.0,超级详细的理清脉络,从情景出发分析探寻kernel世界。是本不可多得的国人经典。
驱动方面,其实是整个内核代码量最多的部分。但我最近都是在网上找一些资料,并没有深入读书研究,可以延后再办。
第二层是公共库和Android的运行时,Libraries都是很大的题目,有专门的书籍讨论,而我主要把精力放在Android运行时上。
Android运行时是由Dalvik虚拟机和核心库组成的。这方面可以阅读杨丰盛的《Android技术内幕:系统卷》,专门开辟一张来讲虚拟机。别看运行时只占架构图中的一小部分,但它的重要性很高,每个应用程序都是跑在这里的。
第三层是应用框架层,为第四层应用层暴漏API接口。
期间我阅读以下几本书,感觉都能够学到一些东西。都是国人所做。
1.《深入理解Android》(卷1)和(卷2) 邓凡平著。
我的启蒙书。在这里我仔细学习了VOLD等详细分析,至今印象深刻。前后两本,足够带你去Android的内部逛一圈,并且有所收获。把它们放在桌上,随时翻阅,随时收益。从Android框架的初始化开始,走过的所有组件,都有涉猎。但当某一个知识点需要更详细的分析时,感到书中给出的略有些不足。这可以理解,因为知识覆盖面太广,谁也不是各个领域的专家,有不足很正常。
2.《Android技术内幕:系统卷》 杨丰盛著。
此书是我最早入手的,大概是刚刚上市。当时我正在做Android应用开发,由于其太深入到系统内部了,涉及各种驱动,读起来吃力不讨好。放下了,最近捡起来一看,也会找到我想要的,真是庆幸自己当时的选择。
3.《Android内核剖析》 柯元旦
内核剖析,是用来吸引人的,并没有得到大家的共鸣。本书覆盖的知识点很广,但是有些蜻蜓点水,一带而过。最可怕的是,错别字很多,有些都影响到内容的表达了。我的评价不高,大家可以试读一下。
4.《深入剖析Android系统》 杨长刚
印象最深的是Android的启动过程,里面讲的很不错。我之前没有深入分析,读过之后感觉澄清了许多问题,也弥补了之前的无知。读起来也不错,但是时间原因不能精读,放在那里随时翻阅。
最后,贴一张很有营养的图,来自[makelinux](http://www.makelinux.net/android/internals/)。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-12_575d20c712b57.jpg)
';