对于学习android的朋友们,我想这是我们必须要知道的东西。上周我的组长给我抛的第二个问题,就是安卓的系统架构分为几层,分别是什么。一时之间我居然答不上来,作为一个安卓开发学习者,我当时就尴尬的不行,我都想找个缝钻进去了。我之前在学习的时候,只是粗略的了解了一下,后来也没有去管了。好啦,言归正传,让我们走进Android的系统架构吧!


Android大致可以分为五层

从上到下依次是:

应用层,应用框架层,系统运行层库,硬件抽象层(Hardware Abstraction Layer),Linux内核层。

下面这张图是Android的系统架构


应用层:

        所有安装到手机上的应用程序都是属于这一层的,比如系统自带的联系人,短信等程序,或者是你从应用商店下载的所有App,当然也包括你自己开发的程序。

应用框架层:

        这一层主要提供了构建应用程序时可能用到的各种API,Android自带的一些核心应用就是使用这些API完成的,开发者也可以自行使用这些API进行自己App的开发。

系统运行库层:

        这一层通过一些C/C++库来为Android提供主要的特性支持。如SQLite库提供了数据库的支持,OpenGL|ES库提供了3D绘图的支持,Webkit库提供了浏览器内核的支持等。

同样在这一层还要Android运行时库,它主要提供了一些核心库,能够允许开发者使用Java语言来编写Android程序。不仅如此,它还包括了Dalvik虚拟机(android5.0后改为ART运行环境),它使得每一个android程序可以运行在独立的进程中,并且拥有自己的Dalvik虚拟机实例。相较于Java虚拟机,Dalvik是专门为移动设备定制的,它针对手机内存、CPU性能有限等情况做了优化处理。

硬件抽象层(HAL):

         硬件抽象层 (HAL) 提供标准界面,向更高级别的 Java API 框架显示设备硬件功能。HAL 包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个界面,例如:Audio音频模块,BlueTooth:蓝牙模块,Camera:相机模块,Sensors:传感器。系统内置对传感器的支持达13种,他们分别是:加速度传感器(accelerometer)、磁力传感器(magnetic field)、方向传感器(orientation)、陀螺仪(gyroscope)、环境光照传感器(light)、压力传感器(pressure)、温度传感器(temperature)和距离传感器(proximity)等。当框架 API 要求访问设备硬件时,Android 系统将为该硬件组件加载库模块。厂商会在这层定义自己的HAL接口。(哈哈(我真臭不要脸)这一部分是ctr+c某位大佬的)

Linux内核层

        众所周知,Android系统是基于Linux内核层的,这一层为android设备的各种硬件提供了底层的强大驱动,如显示驱动、音频驱动、照相机驱动、蓝牙驱动、Wi-Fi驱动、电源管理等。

作者的一些碎碎念:

虽然已经学完了《第一行代码》,但是感觉自己并没有学到很多。我发现自己在学习的过程中总是不愿意动脑子,畏难,我希望自己从现在开始,面对问题不退缩不放弃,与问题斗争到底,决一胜负。我坚信,天道酬勤,与所有Android学习者共勉。

Logo

开源、云原生的融合云平台

更多推荐