Android系统框架
扫描二维码
随时随地手机看文章
这里先附上谷歌一张Android系统框架图,方便大家查看。从图中可以看出,Android系统大体可以分为五层,从上往下分别是:
Applications 层,Framework层,Libraries层,Hardware层,Linux层。
Applications层
这一层是app开发工程师接触最多的一层,与用户直接交互的就是这些应用程序。
应用程序的开发采用的是Java语言,这一层是一个被广大Java开发者热捧的Java世界。这个世界并不是完全独立,它的运转依赖于Native世界,同时也需要framework层作为基石。
主要开发工具就是Android Studio,很强大,用得很爽。
Framework层
这一层大部分是由Java语言编写,封装了很多功能,为Applications层提供各种各样的API,满足业务需求。通常我们看到的PMS,AMS,WMS等,就是在这一层进行实现。
一般定制功能或者解决系统bug的时候,需要对framework层代码进行编辑,我比较喜欢用vim编辑,然后在系统环境中进行编译。
Libraries层
这一层主要提供动态库,Android运行时库、Dalvik虚拟机等。这一层大部分都是用C或者C++写的,所以这一层可以简单把它看成是Native层。
可以单编成so库,然后推进机器端进行调试。
Hardware层
Android系统的硬件抽象层(全称Hardware Abstract Layer, 简称HAL)运行在用户空间中,它向下屏蔽硬件驱动模块的实现细节,向上提供硬件访问服务。通过硬件抽象层,Android系统分为两层来支持硬件设备,其中一层实现在用户空间(User Space),另外一层实现在内核空间(Kernel Space)。传统的Linux系统把对硬件的支持完全实现在内核空间,即把对硬件的支持完全实现在硬件驱动模块中。
Android分两层去控制硬件的原因,在于保护商家的利益。因为Linux是完全开源的,Linux部分的代码需要公开,但这样一来,关于一些Linux内核驱动的控制逻辑细节也会被公开。所以就通过两层来实现,一层是位于user space空间,专门实现对硬件的控制逻辑,这一层不作公开。而另一层则是在Linux内核中实现,这一层只是对硬件的一些简单读写操作,例如读写硬件寄存器的通道等。这一层可以被公开。
Linux层
包含了Linux内核和一些驱动模块(比如LED驱动,USB驱动,wifi驱动等)。这一层主要是跟硬件打交道,调驱动居多。
增加一个驱动或者debug时,可以单独编译kernel,然后单独烧录入系统。
结语
如上就是对Android系统框架的一个简单描述,简单介绍了各层大概做的事情。所以如果是刚开始接触Android的同学,建议先从Applications层,搭建第一个app(hello world)开始。因为这一层有比较方便好用的工具AS,初学者只需要上网大概了解下AS的安装和项目创建过程,就能创建自己的app。然后再慢慢去学习Java语法,很快就能入门。
至于其他层,可以作为后续能力提升,再向下延申学习。
关键在于坚持和学习。
最后
我在微信公众号也有写文章,更新比较及时,有兴趣者可以扫描如下二维码,或者微信搜索【Android系统实战开发】,关注有惊喜哦!