Android系统架构(图解)

摘要:
用户开发的Android应用程序与Android的核心应用程序处于同一级别。它们是基于Android的系统API构建的。系统库Android本地框架由C/C++实现,并包含供Android系统的各种组件使用的C/C++库。这些功能通过Android的应用程序框架为开发者提供服务。Linux内核Android提供基于Linux的核心系统服务,如安全性、内存管理、进程管理、网络堆栈和驱动程序模型。

下图是 Android 操作系统的架构,架构包括 4 层,由上到下依次是应用程序层、应用程序框架层、核心类库和 Linux 内核。其中,核心类库中包含系统库及 Android 运行环境。

Android 操作系统的架构示意图
图1  Android 操作系统的架构

应用程序层

Android 装配了一个核心应用程序集合,包括 E-mail 客户端、SMS 短消息程序、日历、地图、浏览器、联系人管理程序和其他程序,所有应用程序都是用 Java 编程语言编写的。


用户开发的 Android 应用程序和 Android 的核心应用程序是同一层次的,它们都是基于 Android 的系统 API 构建的。

应用程序框架层

应用程序的体系结构旨在简化组件的重用,任何应用程序都能发布它的功能且任何其他应用程序都可以使用这些功能(需要服从框架执行的安全限制),这一机制允许用户替换组件。

开发者完全可以访问核心应用程序所使用的 API 框架。通过提供开放的开发平台,Android 使开发者能够编制极其丰富和新颖的应用程序。开发者可以自由地利用设备硬件优势访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等。

所有的应用程序都是由一系列的服务和系统组成的,主要包括以下几种:

系统/服务英文名称说明
视图View这里的视图指的是丰富的、可扩展的视图集合,可用于构建一个应用程序,包括列表 (Lists)、网格 (Grids)、文本框 (TextBoxes)、按钮 (Buttons),甚至是内嵌的 Web 浏览器。
内容管理器Content Provider内容管理器使得应用程序可以访问另一个应用程序的数据(如联系人数据库)或者共享自己的数据。
资源管理器Resource Manager资源管理器提供访问非代码资源,如本地字符串、图形和分层文件 (layout files)。
通知管理器Notification Manager通知管理器使得所有的应用程序都能够在状态栏显示通知信息。
活动管理器Activity  Manager在大多数情况下,每个 Android 应用程序都运行在自己的 Linux 进程中。当应用程序的某些代码需要运行时,这个进程就被创建并一直运行下去,直到系统认为该进程不再有用为止,然后系统将回收该进程占用的内存以便分配给其他的应用程序。活动管理器管理应用程序生命周期,并且提供通用的导航回退功能。

系统库

Android 本地框架是由 C/C++ 实现的,包含 C/C++ 库,以供 Android 系统的各个组件使用。这些功能通过 Android 的应用程序框架为开发者提供服务。

这里只介绍 C/C++ 库中的一些核心库:

名称说明
系统C语言库标准C语言系统库 (libc) 的 BSD 衍生,调整为基于嵌入式 Linux 设备。
媒体库基于 PacketVideo 的 OpenCORE,这些库支持播放和录制许多流行的音频和视频格式,以及静态图像文件,包括 MPEG4、H.264、MP3、AAC、AMR、JPG、PNG。
界面管理管理访问显示子系统,并且为多个应用程序提供 2D 和 3D 图层的无缝融合。
LibWebCore 新式的 Web 浏览器引擎,支持 Android 浏览器和内嵌的 Web 视图。
SGL一个内置的 2D 图形引擎。
3D 库基于 OpenGL ES 1.0 APIs 实现,该库可以使用硬件 3D 加速或包含高度优化的 3D 软件光栅。
FreeType位图和矢量字体显示渲染。
SQLiteSQLite 是一个所有应用程序都可以使用的强大且轻量级的关系数据库引擎。

Android 运行环境

Android 包含一个核心库的集合,该核心库提供了 Java 编程语言核心库的大多数功能。几乎每一个 Android 应用程序都在自己的进程中运行,都拥有一个独立的 Dalvik 虚拟机实例。

Dalvik 是 Google 公司自己设计的用于 Android 平台的 Java 虚拟机。Dalvik 虚拟机是 Google 等厂商合作开发的 Android 移动设备平台的核心组成部分之一,它可以支持已转换为 .dex (Dalvik Executable) 格式的 Java 应用程序的运行。

.dex 格式是专为 Dalvik 设计的一种压缩格式,适合内存和处理器速度有限的系统。

Dalvik 经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个 Dalvik 应用作为一个独立的 Linux 进程执行。Dalvik 虚拟机依赖 Linux 内核提供基本功能,如线程和底层内存管理。

Linux内核

Android 基于 Linux 提供核心系统服务,例如安全、内存管理、进程管理、网络堆栈、驱动模型。除了标准的 Linux 内核外,Android 还增加了内核的驱动程序,如Binder (IPC) 驱动、显示驱动、输入设备驱动、音频系统驱动、摄像头驱动、WiFi驱动、蓝牙驱动、电源管理。

Linux 内核也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。

分层的好处就是使用下层提供的服务为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化时,不会影响到上层,可以说是高内聚、低耦合。

免责声明:文章转载自《Android系统架构(图解)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇网络流(一)基础知识篇过滤器 ||(filter)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

RabbitMQ、Kafka、RocketMQ的优劣势

今天我们一起来探讨:  全量的消息队列究竟有哪些?  Kafka、RocketMQ、RabbitMQ的优劣势比较  以及消息队列的选型 最全MQ消息队列有哪些 那么目前在业界有哪些比较知名的消息引擎呢?如下图所示 这里面几乎完全列举了当下比较知名的消息引擎,包括:  ZeroMQ  推特的Distributedlog  ActiveMQ:Apach...

Virt-manager安装KVM虚拟机

一、安装virt-manager 1、安装之前确认转发:grep X11Forwarding /etc/ssh/sshd_config --colour  2、在xshell中或者是SecureCRT中勾选:Foward x11 packets:  3、安装Xming工具:直接在官网下载 地址:https://sourceforge.net/proje...

RobotFramework自动化测试框架-移动手机自动化测试Open Application关键字的使用

在AppiumLibrary库中,Open Application关键字用来打开一个待测试移动APP。 示例1:连接本机已经打开的appium服务端,打开一个待测试的安卓APP,指定测试平台为Android,测试的手机deviceName为98YFBP522VSU,需要打开的APP路径为C:/Users/yongqing/Desktop/app-debug...

adt-bundle更新eclipse,以及搭建android环境

曾经开发一直去android官网下载adt-bundle的。里面已经包括了eclipse和android SDK,搭建android环境特别方便,仅仅须要3步:1.下载并安装jdk(也就是jar se) 2.配置java环境变量 3.下载adt-bundle。这样就能够打卡eclipse直接开发Android了。 可是,adt-bundle有一个缺点就...

JavaEE系列之(二)commons-fileupload实现文件上传、下载

一、文件上传概述     实现Web开发中的文件上传功能,需要两步操作:     1、在Web页面中添加上传输入项 <form action="#" method="post" enctype="multipart/form-data"> <input type="file" name="file...

KVM(一)简介及安装

1. KVM 介绍 1.0 虚拟化简史 其中,KVM 全称是 基于内核的虚拟机(Kernel-based Virtual Machine),它是一个 Linux 的一个内核模块,该内核模块使得 Linux 变成了一个 Hypervisor: 它由Quramnet 开发,该公司于 2008年被Red Hat 收购。 它支持x86 (32 and 64 位...