前言
下面是一张Android系统架构经典图示意图。大致分为5层,即Linux内核层,硬件抽象层、库和运行时,Framework层,和应用层。Android系统架构鼓励系统组件重用,共享组件间数据,并定义组件间访问权限控制。
看图说话:
可以看到android给出的经典架构图大概可以把android分为5层,下面分别介绍:
1、Linux
Linux内核层,android最底层最核心的部分,当我们打开手机setting,选择about phone选项,这一选项显示的内核版本就是我们所用的Linux内核版本。Linux层包含了android系统的核心服务,包括硬件驱动,进程管理,安全系统等。
2、HAL
硬件抽象层,它主要是为了移动邻域中标准不统一的的硬件驱动定义标准接口,屏蔽隔离掉Linux内核,避免android过分依赖Linux,HAL包含多个库模块,其中每个模块都为特定类型的硬件组件实现一组接口,比如音频/蓝牙模块。
3、AndroidRuntime与Standard libraries
3.1、AndroidRuntime中的Dalvik和ART
每个应用都在其自己的进程中运行,都有自己的虚拟机实例。在android4.4之前,代码的运行都要通过Dalvik,Dalvik包含一整套的android运行环境虚拟机,每个app都会分配Dalvik虚拟机来保证相互之间不受干扰,并保持独立,它的特点是运行时编译。在android4.4之后引入了ART机制,ART采用的是安装时就进行编译,以后运行时就不用编译,而在android5.X开始,Dalivik虚拟机被彻底抛弃,ART模式全面取代了Dalvik。因此android的app流畅度有很大改善,而在android7.0后还引入了混合编译模式(JIT + AOT),保证java运行效率的同时,安装app的速度大幅度提升。
3.2、Standard libraries
如图包含了android中的一些标准库。所谓标准,就是开发者在开源环境中可以使用的开发库。
4、Framework
如图包含了android framework的重点。这里是我们android应用开发者重点关注的地方,我们也会经常用到里面的服务与组件。
5、Application
这个层面就是用户在手机桌面可以看到的app应用。
![](https://i-blog.csdnimg.cn/blog_migrate/3cf06c2da37e17810731d9f0c9e9b881.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/114b452eaf6ecddd82c873b5d2b62a06.jpeg)
图一和图二分别表示使用NDK和java开发的app主要构成,它们共同的特点都有Android Manifest文件,Dalvik Classes,Resource Bundle这几个东西,这些就是我们解压apk后的文件,与android最直接接触的就是SDK。
结语
Android系统架构说简单点可以用几张图表示,但却可以写几本书,所以掌握也并非一朝一夕之功,我们要有大概的认识,在以后的深入学习,就可以慢慢理解它的运行原理。