Android是一种基于Linux的开放源代码软件栈,为广泛的设备和机型而创建。下图所示为Android平台的主要组件。
下面简单介绍下各层:
Linux内核android平台的基础是Linux内核。例如,AndroidRuntime(ART)依靠linux内核来执行底层功能,例如线程和低层内存管理。
使用Linux内核可让Android利用主要安全功能,并且允许设备制造商为著名的内核开发硬件驱动程序。
硬件抽象层(HAL)硬件抽象层(HAL)提供标准界面,向更高级别的JavaAPI框架显示设备硬件功能。HAL包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个界面,例如相机或蓝牙模块。当框架API要求访问设备硬件时,Android系统将为该硬件组件加载库模块。
AndroidRuntime对于运行Android5.0(API级别21)或更高版本的设备,每个应用都在其自己的进程中运行,并且有其自己的AndroidRuntime(ART)实例。ART编写为通过执行DEX文件在低内存设备上运行多个虚拟机,DEX文件是一种专为Android设计的字节码格式,经过优化,使用的内存很少。编译工具链(例如Jack)将Java源代码编译为DEX字节码,使其可在Android平台上运行。
ART的部分主要功能包括:预先(AOT)和即时(JIT)编译优化的垃圾回收(GC)更好的调试支持,包括专用采样分析器、详细的诊断异常和崩溃报告,并且能够设置监视点以监控特定字段在Android版本5.0(API级别21)之前,Dalvik是AndroidRuntime。如果您的应用在ART上运行效果很好,那么它应该也可在Dalvik上运行,但反过来不一定。
Android还包含一套核心运行时库,可提供JavaAPI框架使用的Java编程语言大部分功能,包括一些java8语言功能。
原生C/C++库许多核心Android系统组件和服务(例如ART和HAL)构建自原生代码,需要以C和C++编写的原生库。Android平台提供Java框架API以向应用显示其中部分原生库的功能。例如,您可以通过Android框架的JavaOpenGLAPI访问OpenGLES,以支持在应用中绘制和操作2D和3D图形。
如果开发的是需要C或C++代码的应用,可以使用AndroidNDK直接从原生代码访问某些原生平台库。
JavaAPI框架您可通过以Java语言编写的API使用AndroidOS的整个功能集。这些API形成创建Android应用所需的构建块,它们可简化核心模块化系统组件和服务的重复使用,包括以下组件和服务:
丰富、可扩展的ViewSystem,可用以构建应用的UI,包括列表、网格、文本框、按钮甚至可嵌入的网络浏览器ResourceManager,用于访问非代码资源,例如本地化的字符串、图形和布局文件NotificationManager,可让所有应用在状态栏中显示自定义提醒ActivityManager,用于管理应用的生命周期,提供常见的导航返回栈ContentProviders,可让应用访问其他应用(例如“联系人”应用)中的数据或者共享其自己的数据开发者可以完全访问Android系统应用使用的框架API。
系统应用Android随附一套用于电子邮件、短信、日历、互联网浏览和联系人等的核心应用。平台随附的应用与用户可以选择安装的应用一样,没有特殊状态。因此第三方应用可成为用户的默认网络浏览器、短信Messenger甚至默认键盘(有一些例外,例如系统的“设置”应用)。
系统应用可用作用户的应用,以及提供开发者可从其自己的应用访问的主要功能。例如,如果您的应用要发短信,您无需自己构建该功能,可以改为调用已安装的短信应用向您指定的接收者发送消息
赞赏