Android 体系架构

文章目录

  • 简介
  • 一、Android 平台架构
  • 二、Android 架构解释
    • 1.Linux 内核层
    • 2.硬件抽象层 (HAL)
    • 3.原生 C/C++ 库层 与 Android Runtime
    • 4.Java API 框架层 即 Framework
    • 5.系统应用层

简介

  • 安卓(Android)是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的操作系统。
  • 主要应用于ARM平台,但不仅限于ARM平台的 移动设备,如智能手机和平板电脑;
  • 由美国Google公司和开放手机联盟领导及开发.

一、Android 平台架构

Android 是一种基于 Linux 的开放源代码软件栈,为各类设备和机型而创建。 更多 android 基础知识,请阅读官方文档

下图所示为 Android 平台的主要组件:
Android 体系架构_第1张图片

  • 如按按三层分的话,可归纳如下:Android 体系架构_第2张图片

二、Android 架构解释

下面由下至上分别介绍各层,Linux Kernel , HAL ,底层库/运行时, Framework , System apps .


1.Linux 内核层

Android 平台的基础是 Linux 内核。例如,Android Runtime (ART) 依靠 Linux 内核来执行底层功能,例如线程和低层内存管理。

使用 Linux 内核可让 Android 利用主要安全功能,并且允许设备制造商为著名的内核开发硬件驱动程序。


2.硬件抽象层 (HAL)

硬件抽象层 (HAL) 提供标准界面,向更高级别的 Java API 框架显示设备硬件功能。HAL 包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个界面,例如相机或蓝牙模块。当框架 API 要求访问设备硬件时,Android 系统将为该硬件组件加载库模块。


3.原生 C/C++ 库层 与 Android Runtime

Android系统运行层 
  • 原生 C/C++ 库层
    许多核心 Android 系统组件和服务(例如 ART 和 HAL)构建自原生代码,需要以 C 和 C++ 编写的原生库。Android 平台提供 Java 框架 API 以向应用显示其中部分原生库的功能。例如,您可以通过 Android 框架的 Java OpenGL API 访问 OpenGL ES,以支持在应用中绘制和操作 2D 和 3D 图形。

    如果开发的是需要 C 或 C++ 代码的应用,可以使用 Android NDK 直接从原生代码访问某些原生平台库。

  • Android Runtime
    对于运行 Android 5.0(API 级别 21)或更高版本的设备,每个应用都在其自己的进程中运行,并且有其自己的 Android Runtime (ART) 实例。ART 编写为通过执行 DEX 文件在低内存设备上运行多个虚拟机,DEX 文件是一种专为 Android 设计的字节码格式,经过优化,使用的内存很少。编译工具链(例如 Jack)将 Java 源代码编译为 DEX 字节码,使其可在 Android 平台上运行。


4.Java API 框架层 即 Framework

  这一层主要提供了构建应用程序时可能用到的各种API,
  开发者通过这一层的API构建自己的APP,这一层也是APP开发人员必须要掌握的内容。

您可通过以 Java 语言编写的 API 使用 Android OS 的整个功能集。这些 API 形成创建 Android 应用所需的构建块,它们可简化核心模块化系统组件和服务的重复使用,包括以下组件和服务:

  • 丰富、可扩展的视图系统,可用以构建应用的 UI,包括列表、网格、文本框、按钮甚至可嵌入的网络浏览器
  • 资源管理器,用于访问非代码资源,例如本地化的字符串、图形和布局文件
  • 通知管理器,可让所有应用在状态栏中显示自定义提醒
  • Activity 管理器,用于管理应用的生命周期,提供常见的导航返回栈
  • 内容提供程序,可让应用访问其他应用(例如“联系人”应用)中的数据或者共享其自己的数据
    开发者可以完全访问 Android 系统应用使用的框架 API。

5.系统应用层

Android 随附一套用于电子邮件、短信、日历、互联网浏览和联系人等的核心应用。平台随附的应用与用户可以选择安装的应用一样,没有特殊状态。因此第三方应用可成为用户的默认网络浏览器、短信 Messenger 甚至默认键盘(有一些例外,例如系统的“设置”应用)。

系统应用可用作用户的应用,以及提供开发者可从其自己的应用访问的主要功能。例如,如果您的应用要发短信,您无需自己构建该功能,可以改为调用已安装的短信应用向您指定的接收者发送消息。


你可能感兴趣的:(Android,android)