前言
Android系统是一种基于Linux的操作系统。通常将Android系统分为5层,从上到下依次是应用层、应用框架层、系统运行库层、硬件抽象层和Linux内核层。Android系统架构组成
应用层
系统内置的应用以及非系统的应用程序都属于应用层。也就是负责向用户提供服务以及与用户交互的应用程序。比如:电子邮件、短信、日历等内置应用以及支付宝、微信等其他应用。
应用框架层
应用框架层也成为Java API框架层,开发者可通过这个Java语言编写的API使用Android OS的整个功能集。这些 API 形成创建 Android 应用所需的构建块,它们可简化核心模块化系统组件和服务的重复使用。主要包括以下组件和服务:
View System(视图系统):丰富、可扩展的视图系统,可用以构建应用的 UI,包括列表、网格、文本框、按钮甚至可嵌入的网络浏览器。
Activity Manager(活动管理器):管理各个应用程序的生命周期,提供常见的导航返回栈(导航返回栈就是Activity栈,维护了Activity启动与返回的顺序)。
Resource Manager(资源管理器):用于访问非代码资源,例如本地化的字符串、图形和布局文件。即获取资源文件。
Notification Manager(通知管理器):可让所有应用在状态栏中显示自定义提醒。
Content Provider(内容提供程序):可让应用访问其他应用(例如“联系人”应用)中的数据或者共享其自己的数据。
Window Manager(窗口管理器):管理所有开启的窗口程序。
系统运行库层
系统运行库层包括原生C/C++库以及Android Runtime(Android运行时库)。
原生C/C++库也提供了Android系统的服务和组件。例如,可以通过 Android 框架的 Java OpenGL API 访问 OpenGL ES,以支持在应用中绘制和操作 2D 和 3D 图形。此外,如果开发的是需要 C 或 C++ 代码的应用,可以使用 Android NDK 直接从原生代码访问某些原生平台库。
Android Runtime又分为核新库和ART(Android 5.0以后,Dalvik虚拟机被ART代替)。
核心库提供了Java语言的核心库的大多数功能,目的就是可以让开发者使用Java语言的特性开发Android应用。
与JVM相比,Dalvik虚拟机是专门为移动设备定制的,允许在有限的内存中允许多个虚拟机实例,并且每个Dalvik虚拟机实例作为一个Linux进程在运行(独立的进程可以防止在虚拟机崩溃时导致所有的程序都被关闭)。
在Android 5.0的时候,ART取代了Dalvik虚拟机。与Dalvik虚拟机相比,在ART中,Android系统在安装应用时会进行一次预编译,将字节码编译为机器码并且存储在本地,这样在应用每次运行时就不用再执行编译,运行效率就会提高(而Dalvik虚拟机是在应用运行时,字节码才通过即时编译器编译为机器码)。除此之外,ART还优化了垃圾回收,并且提供了更好的调试支持,包括专用采样分析器、详细的诊断异常和崩溃报告,并且能够设置监视点以监控特定字段
硬件抽象层
硬件抽象层 (HAL) 提供标准界面,向更高级别的 Java API 框架显示设备硬件功能。HAL 包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个界面,例如相机或蓝牙模块。当框架 API 要求访问设备硬件时,Android 系统将为该硬件组件加载库模块。
也就是说硬件抽象层将硬件抽象化,隐藏了特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件平台无关性,可在多种平台上进行移植。
Linux内核层
Android 平台的基础是 Linux 内核。例如,Android Runtime (ART) 依靠 Linux 内核来执行底层功能,例如线程和低层内存管理。
使用 Linux 内核可让 Android 利用主要安全功能,并且允许设备制造商为著名的内核开发硬件驱动程序。
总结
以上就是Android系统的5层架构,了解Android系统的架构有利于对了解Android系统的运行。