Android Archi结构:应用层、框架、组件

Android 操作系统的首次发布是在 2008 年。即使在刚开始时,操作系统背后的团队也是站在巨人的肩膀上构建的。除了用户界面之外, Android 操作系统呈现在表面层面,它由多个层组成。这些层包括自定义代码和数十年来不断发展的开源技术。

Android Android 的开发由多家公司共同努力和投资完成。Android 开发的主要公司是 Google。其他公司包括三星、LG 等设备制造商;英特尔和 ARM 等处理器制造商,仅举几例。

当我们谈论 Android 建筑,我们指的是 Android 系统经过设计、分层,并构建为一个系统。构建如此复杂的系统需要精心构建,以确保所有组件协同工作。其架构确保众多组件作为一个整体运行而不会崩溃。

以下是组成 Android 架构如下图所示:

  1. 申请
  2. 应用框架
  3. Android 运行时和核心库
  4. Linux内核

开发移动设备操作系统面临一系列挑战。使用这种分层架构可确保将不同的问题分解并分不同层次解决。

分层架构有助于分离关注点,确保 Android 软件开发人员不必每次都处理低级问题。他们可以专注于提供与他们正在处理的层相关的业务价值。

致力于开发应用程序的开发人员无需担心应用程序框架的实现。这项工作留给致力于应用程序框架的系统开发人员。

应用程序框架开发人员专注于开发人员体验,无需担心底层驱动程序。底层系统工程师可以完全专注于底层组件,例如蓝牙或音频驱动程序等。

Android的分层结构使得可以单独对每个层应用包含错误修复或改进的更新。这确保了跨层更改不会相互干扰。这使得在操作系统不同级别工作的人员可以在完成新更新和发布时不互相干扰地工作。

Android 申请

Android 申请
Android 申请

这是与最终用户交互的层。应用程序开发人员在此层发布其应用程序以供运行。

Android默认情况下,附带一组应用程序,使 Android 设备从一开始就可用。

  1. 首页: 主页 Android 由最终用户可能想要快速访问的常用应用程序的启动器图标组成。您可以通过单击这些应用程序的启动器来启动应用程序。在屏幕的最顶部,您可以看到显示网络、电池电量、日期和时间的小部件。
  2. 联系方式: Android默认情况下,提供存储和检索联系人的方法。联系人信息可与其他应用共享,以增强功能。
  3. 消息: Android 提供发送和接收短信的功能。
  4. 电子邮箱: Android 附带对电子邮件服务的本机支持。设置 Android 设备需要 Gmail 帐户。设置 Gmail 会激活设备上的其他电子邮件相关组件 Android 设备。一些与电子邮件相关的功能包括安全和恢复机制。另一个与电子邮件相关的功能是访问 Play Store,这是一个 Android 领域广泛应用,提供了卓越的解决方案。
  5. 浏览器: Android 带有默认浏览器。
  6. 通知抽屉: 在屏幕上向下滑动会显示通知抽屉。它提供用户应该注意的应用程序事件。通知上方是一组快捷方式,用户可以切换一些常用的设备设置。这些设置包括蓝牙和 Wifi 等各种硬件组件的开启和关闭切换。长按这些事件可以让我们导航到它们的配置页面。

这一层也被称为用户层,与下面的层不同,下面的层主要针对应用程序开发进行调整。应用程序开发人员在此层上创建和自定义其应用程序的体验。应用程序层下面的层不是由应用程序开发人员定制的。它们被视为系统层的一部分。这些层由设备制造商、Google Android 团队或想要使用 Android 他们产品或研究的源代码。

应用框架

这个 Android 操作系统公开了底层库和功能 Android 使用 Java API。这就是所谓的 Android 框架。该框架提供了一种安全、统一的方法来利用 Android 设备资源。

应用框架
应用框架

1)活动管理器

应用程序使用 Android 用于呈现应用程序入口点的活动组件。 Android 活动是应用程序用户与之交互的用户界面的组成部分。当最终用户与 Android 设备,它们会启动、停止并在许多应用程序之间来回跳转。每个导航事件都会触发相应应用程序中许多活动的激活和停用。

这个 Android ActivityManager 负责在应用程序转换期间保持可预测且一致的行为。ActivityManager 为应用程序创建者提供了一个插槽,让他们的应用程序在以下情况下做出反应: Android 操作系统执行全局操作。应用程序可以监听设备旋转、由于内存不足导致的应用程序销毁、应用程序失去焦点等事件。

应用程序对这些转换做出反应的方式的一些示例包括暂停游戏中的活动、停止通话期间播放的音乐。

2)窗口管理器

Android 可以确定屏幕信息,以确定创建应用程序窗口所需的要求。 Windows 是我们可以查看应用程序用户界面的插槽。 Android 使用窗口管理器在应用程序和系统运行时向它们提供此信息,以便它们能够适应设备运行的模式。

窗口管理器有助于提供定制的应用体验。应用可以填满整个屏幕以获得身临其境的体验,或与其他应用共享屏幕。 Android 通过允许每个应用程序有多个窗口来实现此功能。

3)位置管理器

桥梁 Android 设备配备 GPS 装置,可使用卫星信息获取用户位置,精度可达米级。程序员可以提示用户获取位置权限、传递位置和感知体验。

Android 还能够利用无线技术进一步丰富位置细节,并在设备处于封闭空间时增加覆盖范围。 Android 在位置管理器的保护下提供这些功能。

4)电话管理器

桥梁 Android 设备在电话通信中起着主要作用。 Android 使用 TelephoneManager 结合硬件和软件组件来提供电话功能。硬件组件包括 SIM 卡等外部部件,以及麦克风、摄像头和扬声器等设备部件。软件组件包括拨号盘、电话簿、铃声配置文件等本机组件。使用 TelephoneManager,开发人员可以扩展或微调默认呼叫功能。

5)资源管理器

Android 应用程序通常不只包含代码。它们还包含其他资源,例如图标、音频和视频文件、动画、文本文件等。 Android 有助于确保高效、快速地访问这些资源。它还确保向最终用户提供正确的资源。例如,在应用程序中填充字段时使用正确的语言文本文件。

6)视图系统

Android 还提供了一种轻松创建应用交互所需的常见视觉组件的方法。这些组件包括按钮等小部件、ImageView 等图像载体、用于显示项目列表的组件(如 ListView)等等。这些组件是预制的,但也可以定制以满足应用开发人员的需求和品牌。

7)通知管理器

通知管理器负责通知 Android 应用程序事件的用户。它通过在事件发生时向用户提供视觉、音频或振动信号或它们的组合来实现这一点。这些事件具有外部和内部触发器。内部触发器的一些示例是电池电量不足状态事件,它会触发通知以显示电池电量不足。另一个示例是用户指定的事件,例如警报。外部触发器的一些示例包括检测到的新消息或新 wifi 网络。

Android 为程序员和最终用户提供了一种微调通知系统的方法。这有助于确保他们能够以最适合他们及其当前环境的方式发送和接收通知事件。

8)包管理器

Android 还提供对已安装应用程序的信息的访问。 Android 跟踪应用程序信息,例如安装和卸载事件、应用程序请求的权限以及内存消耗等资源利用率。

这些信息可以帮助开发人员根据配套应用程序提供的新功能来激活或停用其应用程序的功能。

9)内容提供商

Android 有一种标准化的方法,可以使用内容提供程序在设备上的应用程序之间共享数据。开发人员可以使用内容提供程序向其他应用程序公开数据。例如,他们可以让应用程序数据可从外部搜索应用程序搜索。 Android 本身使用相同的系统公开日历数据、联系人数据等数据。

Android 运行时和核心/本机库

Android 运行时和核心/本机库
图书馆

1) Android 运行时

Android 目前使用 Android 运行时 (ART) 用于执行应用程序代码。ART 之前是 Dalvik 运行时,它将开发人员代码编译为 Dalvik 可执行文件 (Dex 文件)。这些执行环境针对 Android 平台进行了优化,考虑到了移动设备上的处理器和内存限制。

运行时将程序员编写的代码转换为进行计算的机器代码,并利用 Android 框架组件来提供功能。 Android 托管多个应用程序和系统组件,每个应用程序和系统组件都在其进程中运行。

核心库

在本部分中,我们将讨论 Android 操作系统。

2)媒体框架

Android 还原生支持流行的媒体编解码器,使在 Android 平台可立即使用/播放多媒体组件。

3) SQLite

Android 也有一个 SQLite 数据库 这使得应用程序无需第三方库即可具有非常快速的本机数据库功能。

4)Freetype

Android 预装了快速灵活的字体引擎。这使应用程序开发人员能够设计其应用程序的组件,并提供丰富的体验来传达开发人员的意图。

5)OpenGL

Android 还附带了 OpenGL 图形系统。这是一个 C 库,可以帮助 Android 使用硬件组件进行二维和三维图形的实时渲染。

6)SSL

Android 还带有内置安全层,以实现应用程序之间的安全通信 Android 以及其他设备,如服务器、其他移动设备、路由器6。

7)西格里

Android 带有一个以低级代码实现的图形库,可以高效地为 Android 平台渲染图形。它与 Android 框架 Android 图形管道。

8)Libc

核心 Android 包含用 C 编写的库和 C++,它们是用于嵌入式的低级语言,有助于最大程度地提高性能。Libc 提供了一种向这些库公开低级系统功能(例如线程、套接字、IO 等)的方法。

9) Webkit

这是一个开源浏览器引擎,用作构建浏览器的基础。默认 Android 4.4 KitKat 之前的浏览器使用它来渲染网页。它允许应用程序开发人员使用 WebView 在视图系统中渲染 Web 组件。这使应用程序能够将 Web 组件集成到其功能中。

10)表面管理器

表面管理器负责确保应用程序屏幕的流畅渲染。它通过组合 2D 和 3D 图形进行渲染来实现这一点。它通过进行屏幕外缓冲进一步实现这一点。

Linux内核

的根组件 Android 系统是 Linux 内核。它是实现所有 Android的功能。

Linux内核

Linux 内核是一款久经考验的软件,曾用于开发 操作系统 适用于从超级计算机到小型设备的广泛设备。其处理能力有限,如物联网 (IoT) 的小型联网设备。

Linux 内核可以进行调整以满足设备规格,从而使制造商能够 Android 具有不同功能的设备以匹配用户体验。

至于 Android,内核负责许多基础功能,包括但不限于:

  1. 设备驱动程序
  2. 内存管理
  3. 流程管理

让我们扩展一些功能:

设备驱动程序

Linux 内核包含操作系统与不同硬件组件配合使用所需的驱动程序。这些驱动程序提供了一个标准接口,可与来自不同制造商的硬件组件配合使用。

这使得设备制造商能够采购不同的组件,例如蓝牙组件、Wifi 组件、相机组件。只要制造商匹配 Android 标准规格,集成无缝。

1)USB 驱动程序

Linux 还提供了 Android 具有与 USB 设备交互的方法。现代设备配有不同的 USB 端口,包括 USB 2.0 和新版本的 USB,包括 USB-C。这些驱动程序使使用 USB 端口充电、传输实时数据(例如来自 Android 设备,并与 Android 交互 文件系统.

2)蓝牙驱动程序

Linux 内核支持与蓝牙硬件组件交互。它提供了一种读取和写入从支持的蓝牙无线电频率接收的数据的方法。它还提供了一组设施 Android 配置蓝牙。

3)WiFi 驱动

Linux 内核提供驱动程序来集成 WiFi 网络硬件组件。移动设备中嵌入的 WiFi 组件可实现 Android 设备连接到 wifi 网络。驱动程序使 wifi 组件能够广播 wifi 网络并创建热点。

4)显示驱动器

Android 可以与显示组件进行交互。对于大多数设备,接口组件是 LCD 触摸屏。它支持配置和绘制像素。

5)音频驱动程序

Android 设备通常带有用于音频输入和输出的硬件组件。内核中的音频驱动程序可实现 Android 系统使用从这些组件接收的音频并产生音频输出。

6)电源管理器

桥梁 Android 设备在断开电源插座的情况下使用。因此,它们大部分时间都依赖电池供电。Linux 内核带有一个电源管理系统,该系统可配置以满足使用它的设备的需求。

Android 操作系统使用电源管理器使设备上的其他组件具有电源感知能力。它通过广播各种与电源相关的状态来实现这一点。这些状态包括待机、睡眠和低电量。 Android,电源管理器被调整为默认睡眠模式,以确保最长的电池寿命。

电源管理器为应用程序提供了对不同电源模式做出反应的方法。应用程序还可以改变其行为以匹配设备的当前电源状态。

应用程序还可以请求更改默认电源策略。应用程序可以实现所需的功能,例如保持硬件组件处于活动状态。一个例子是阅读书籍时保持屏幕处于活动状态,以确保用户不会受到干扰。另一个例子是在后台听音乐时保持音频组件处于打开状态。

7)闪存

桥梁 Android 设备使用闪存作为存储手段。闪存速度快,占用空间少,非常适合小型设备。Linux 内核提供了一种 Android 设备读取和写入闪存。它提供了一种对内存进行分区的方法,以便操作系统和其他应用程序可以轻松高效地共享内存资源。

8) 粘合剂

Android 托管许多应用程序和系统组件,每个应用程序和系统组件都在其进程中运行。在大多数情况下,这些进程应该彼此隔离,以防止干扰和数据损坏。然而,有些情况下我们希望将数据从一个进程传递到另一个进程。

Linux 内核通过提供 Binder 驱动程序来实现数据共享功能。Binder 驱动程序支持进程间通信 (IPC)。使用 IPC 进程可以发现其他进程并共享信息。

内存管理

Linux 内核的另一个职责是内存管理。当不同的应用程序运行时,内核会确保它们使用的内存空间不会发生冲突和相互覆盖。

它还有助于确保所有正在运行的应用程序都获得足够的内存来运行,确保没有一个应用程序占用太多空间。

流程管理

每个应用程序 Android 在进程中运行。内核还负责管理进程。这意味着它负责创建、暂停、停止、关闭或终止进程。

内核实现各种功能,例如同时运行多个进程、进程间通信、在后台运行进程等等。

由于每个进程都需要自己的内存空间才能正常运行,因此内核会确保分配给每个进程的内存空间不受其他进程的影响。它还确保 内存 当进程关闭时,分配给进程的资源将被释放。

Linux 内核还负责将工作分配给设备中的处理器。这样可以最大限度地提高多核设备的性能,因为不同的应用程序将在不同的核心上运行进程。

Linux 内核在底层执行更多任务,包括强制安全性。

结语

  • Android 架构是分层组织的。
  • 每一层解决一组独特的问题。
  • 最终用户与应用层上的应用程序交互
  • 应用程序开发人员开发在应用程序层使用的应用程序。他们使用应用程序框架提供的工具和抽象来实现这一点。
  • Android 框架层通过在本机库上创建 API 简化了对低级组件的访问。
  • Android 运行时和核心库使用低级语言以及针对移动设备的优化。这确保应用程序开发人员编写的代码能够顺利运行,尽管 Android 设备限制。
  • 在底部 Android 软件堆栈是 Linux 内核。它与 Android 设备。