Android操作系统是为触摸屏移动设备如智能手机、平板电脑而设计的,并且现在其应用范围已经扩展到其他嵌入式系统。最初由Android Inc.开发,该公司于2003年成立,位于加利福尼亚州的帕洛阿尔托,后来在2005年被Google收购。Android在2007年公开宣布,第一款手机在2008年10月上市。
Android操作系统的内核基于Linux,使用了Linux内核2.6和3.x(Android 4.0及以上版本)。因此,Android是一个基于Linux的操作系统。尽管Android的内核是Linux,但它并不包括完整的Linux工具集,因此不能简单地将其视为一个Linux操作系统。
Linux内核是开源的,支持共享库,拥有经过验证的驱动模型和基于权限的安全模型。
Android操作系统由四个主要层次组成:内核、库、应用程序框架和应用程序。每一层都扮演着重要的角色。
整个Android操作系统都建立在Linux 2.6内核之上,Google对其进行了一些架构上的修改,以适应移动设备的局限性,包括内存管理和电源管理。正是这个Linux内核与硬件交互,并包含了所有必要的硬件驱动。选择Linux是因为它已经是开源的,在桌面系统上有着良好的记录,并且在许多情况下不需要重写驱动程序。Linux提供了诸如虚拟内存、网络、驱动程序、电源管理、进程间通信(IPC)和调试器等功能。
应用程序和服务在不同的进程中运行,但需要共享相同的数据并进行通信,这可能导致显著的安全漏洞和进程死锁,因为它们在进行IPC。为了解决这个问题,创建了一个名为Binder(IPC)的驱动程序,以促进IPC。启用了共享内存、预处理请求池和进程间的同步调用。
另一个问题是电源管理。由于手机使用可充电电池,其电源容量有限。因此,内核中加入了一个名为电源管理驱动程序(PM)的定制驱动程序,它建立在标准Linux电源管理驱动程序之上,具有更严格的电源管理策略,组件通过“唤醒锁”保持电源开启,并支持更多的唤醒锁。
可以通过访问来获取Android内核的完整源代码。
Android框架附带了9个原生库,但也可以向这一层添加第三方库。这些原生库可以分类如下:
包括:
包括:
这个库专门为移动设备的局限性而设计,如内存管理和有限的CPU能力,因此这个库允许小尺寸和快速的代码路径,允许非常快速和小型的自定义pthread实现。
这一层负责将Android逻辑与硬件接口分离。这一层主要包含用户C/C++库,这也是为什么可以使用包括C、C++在内的多种语言原生开发Android的原因。它还提供了Android需要硬件驱动程序实现的接口。
这一层的重要性在于,不是所有组件都有标准化的内核驱动程序接口,因此这一层提供了这些未知的驱动程序。Android对硬件驱动程序有特定的要求。
这包括两个层次,包括:
Dalvik虚拟机提供应用程序的可移植性和运行时一致性,运行优化的文件格式(.dex)和Dalvik字节码,Java .class / .jar文件在构建时转换为.dex,支持每个设备上的多个虚拟机进程,高度CPU优化的字节码解释器,使用运行时内存非常高效。
这包含应用程序(无论是还是任何程序员创建的)将使用的核心系统服务,它们在幕后工作,即应用程序不直接访问它们,并且它们分为两类,包括:
例如,要使用位置服务获取用户的GPS位置,需要请求位置服务:
Java
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);