前言
安卓(Android)是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的移动操作系统。主要应用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。
Android系统架构是一个复杂而多层次的结构,它基于Linux内核,并在此基础上扩展了丰富的功能和应用程序。
简单记录一下Android系统架构相关内容,记录于此,方便自己查阅。
正文
Android系统架构分为五层,从上到下分别为应用层,应用架构层,系统运行库层,硬件抽象层和Linux内核层。
应用层
Android系统架构的应用层是用户与Android设备交互的直接界面,包含了丰富的系统应用和第三方应用。
应用
系统应用:Android系统自带的一些核心应用,比如电话,短信,日历等。这些应用提供基本的通信。系统应用通常预装在设备上,并享有较高的权限和优先级。
第三应用:用户从应用商店(如Google Play)下载并安装第三方应用。这些应用涵盖了游戏、社交、购物、娱乐、工具等各个领域,极大地丰富了Android生态系统的功能性和多样性。
应用架构层
应用框架层(Framework Layer)在Android系统中至关重要的角色,它位于操作系统和应用程序之间,为开发者提供了一系列核心功能和服务,以便构建高效、功能丰富的应用程序。
主要组件
Activity Manager(活动管理器)负责管理应用程序中的Activity生命周期、任务栈以及应用程序的启动和切换等。它确保Activity能够正确地在不同状态间转换,如启动、暂停、停止和销毁,并管理任务栈的创建、销毁和切换。
Content Providers(内容提供器)允许应用程序之间共享数据。通过Content Provider,一个应用程序可以将其数据存储(如SQLite数据库、文件等)以统一的方式暴露给其他应用程序,同时保证数据的安全性和隐私性。
Broadcast Receivers(广播接收器)用于接收和处理系统或应用发送的广播消息。它可以监听系统广播事件(如设备启动或关闭、网络状态变化等),也可以接收应用内部发送的自定义广播消息。
Services(服务)用于执行长时间运行的任务或处理与用户界面无关的操作。它可以在应用程序的生命周期内独立于用户界面运行,并且可以在应用程序被销毁后继续运行。
Intent(意图)一种用于在应用内部或应用之间传递消息的机制。它可以用于启动活动、启动服务、发送广播等操作,并可以携带数据(如文本、图片等)以便在不同组件之间传递信息。
等
系统运行库层
Android系统架构中的系统运行库层包含了多个关键组件,主要为上层应用提供必要的服务和支持。
C/C++库
系统运行库层还包括了一系列用C和C++编写的库文件,这些库为Android应用提供了丰富的底层服务。
OpenGL ES:用于图形处理,支持开发者在Android平台上创建高性能的2D和3D图形。
SQLite:轻量级的数据库管理系统,广泛应用于Android应用中,用于存储和管理应用程序数据。
Media Framework:多媒体处理框架,支持视频、音频的播放、录制以及编解码等功能。
其他库:还包括如SSL(安全套接层)用于网络通信安全、WebKit用于网页浏览等。
Android运行时
早期Android系统使用Dalvik虚拟机来执行DEX文件(Dalvik Executable文件)。然而,从Android 5.0(Lollipop)版本开始,Dalvik被ART(Android Runtime)所取代。
ART通过预先编译(Ahead-Of-Time, AOT)应用程序代码为机器代码并存储到本地,显著提高了应用程序的运行效率。
Dalvik虚拟机(DVM)在运行时即时编译(Just-In-Time, JIT)的方式,每次启动都需要编译,运行效率低。
硬件抽象层
硬件抽象层(HAL,Hardware Abstraction Layer)是对硬件设备的具体实现进行抽象,为上层软件提供统一的接口。
作用
抽象硬件细节:HAL通过提供统一的接口,隐藏了底层硬件的具体实现细节,使上层应用能够更专注于业务逻辑的现,而无需关心硬件的具体型号、规格等。
提高可移植性和可扩展性:由于HAL的存在,上层软件可以在不同的硬件平台上运行而无需进行大量修改,从而提高了软件的可移植性。同时,随着硬件技术的发展,HAL也可以方便地扩展以支持新的硬件特性。
Linux内核层
Linux内核层作为Android系统架构的底层,扮演着至关重要的角色。
核心组件
安全性:Linux内核内置了多种安全机制,如权限管理、访问控制列表(ACLs)、强制访问控制(如SELinux)、以及内核级的加密支持等,这些机制共同为Android系统提供了强大的安全保障。
内存管理:Linux内核通过虚拟内存系统、页面缓存、交换空间等技术高效地管理物理内存和磁盘空间,确保应用程序和系统服务能够稳定、高效地运行。
进程管理:内核负责进程的创建、调度、同步、通信以及终止。它使用复杂的调度算法来确保所有进程都能公平地获得CPU时间,同时提供进程间通信(IPC)机制。
网络协议栈:Linux内核支持完整的TCP/IP协议栈,包括IPv4和IPv6、ARP、ICMP、TCP、UDP等,使得Android设备能够轻松接入互联网,进行网络通信。
驱动模型:Linux内核采用模块化的驱动模型,允许设备驱动程序在运行时动态加载和卸载。这为Android设备提供了广泛的硬件支持能力,包括触摸屏、摄像头、GPS、蓝牙等。
参考文章
《》
《