Android系统架构图:
上述系统架构图一共分为5层:LinuxKernel、HAL、库、Java Api框架和系统应用层。
1. Linux内核
Android平台的基础是Linux内核,例如,Android Runtime依靠Linux内核来执行底层功能,例如线程和低层内存管理。Linux内核主要负责硬件的驱动程序、网络、电源、系统安全以及内存管理等功能。
2. 硬件抽象层(HAL)
硬件抽象层(HAl)提供标准界面,向高级别的Java API框架显示设备硬件功能。HAL包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个界面,比如相机或者蓝牙模块。当API要求访问设备硬件时,Android系统将为该硬件组件加载库模块。
3. 运行库层
在运行库层中,包括原生C/C++库和Android Runtime库。
1. 原生C/C++库
许多核心Android系统组件和服务(如ART和HAL)构建自原生代码,需要C/C++编写的原生库。Android平台提供Java框架API以向应用显示其中部分原生库的功能。比如可以通过Android框架的Java OpenGL API访问OpenGL ES,以支持在应用中绘制和操作2D和3D图形;也有标准的c函数库Libc、openssl、sqlite等。
如果需要开发c或者c++代码的应用,可以使用Android NDK直接从原生代码访问某些原生平台库。
2. Android Runtime
Android runtime负责解析和执行生成的dalvik格式的字节码。
部分主要功能有:
①预先(AOT)和即时(JIT)编译
②优化的垃圾回收(GC)
③更好的调试支持,包括专用采样分析器,详细的诊断异常和奔溃报告,并且能够设置监视点以监视特定的字段。
Android还包含一套核心的运行时库,可提供Java API框架使用的java编程语言大部分功能。
4. Android framework(软件应用架构)(API层)
java应用程序开发人员主要是使用该层封装好的Api进行快速开发。
5. applications应用层
Android 随附一套用于电子邮件、短信、日历、互联网浏览和联系人等的核心应用。Android开发人员开发的程序也是处于该层,而且与内置的应用有相同的位置。
上面的四个层次,下层为上层服务,上层需要下层的支持、调用下层的服务,这种严格的分层的方式带来极大的稳定性、灵活性和可拓展性。