安卓系统初探:从零开始

发表时间: 2023-01-01 21:27

1安卓系统

1.1安卓系统简介

安卓系统(Android) 是一种由 Google 公司和开放手机联盟领导及开发的操作系统,主要用于移动设备,如智能手机和平板电脑。它是基于开放源代码的 Linux 内核构建的,并且提供了一套丰富的应用程序接口 (API,Application Program Interface,计算机和应用程序之间交互所使用的一套标准,是两者之间信息传输和发送指令的媒介。) 和软件开发工具(SDK,Software Development Kit,为辅助开发特定类别的软件,方便工程师开发使用,对软件的操作系统、软件、硬件、开发工具等一系列开发载体做出的集成),供开发人员在设备上创建自定义应用程序。安卓系统的界面风格通常使用拖动式菜单,并具有丰富的个性化选项,使用户可以调整设备的外观和功能。它也提供了许多内置应用程序,如电子邮件客户端、网络浏览器、通讯录、短信、相机、电话等。

1.2安卓系统的优缺点

安卓系统的优点:1)开源(Open Source,指开放系统的源代码)性,安卓是开源的,这意味着开发人员可以自由地使用和修改源代码,并且不需要支付任何许可费。这使得开发人员能够轻松地创建自定义只读内存(ROM,Read-Only Memory,只读内存) 并将其发布到社区中。2)丰富的应用程序生态系统,安卓拥有世界上最大的应用程序生态系统,有许多应用程序和游戏可供选择。3)硬件多样性:安卓支持许多不同的硬件平台,这意味着用户可以在各种不同的设备中使用安卓系统。4)自定义性,安卓提供了丰富的个性化选项,使用户能够调整设备的外观和功能。

安卓系统的缺点:1)安卓系统更新可能不及时,由于安卓系统有许多不同的制造商和设备,因此更新可能会慢于其他操作系统。2)安全性问题,安卓系统过于自由化,冒牌的应用特别多,存在潜藏的安全隐患,例如恶意软件和黑客攻击。3)耗电量较大吗,某些安卓系统设备可能会比其他操作系统的设备更耗电。4)安卓系统对硬件的依赖性较大,可能需要硬件设备的兼容性、性能、配置等各方面满足要求,才能发挥出安卓系统的最大优势。

安卓系统体系结构

2.1 安卓系统结构的内容

图1 安卓系统体系结构

安卓体系结构是指安卓操作系统的组成部分和它们之间的关系。安卓体系结构的示意图见图1。安卓体系结构包括以下几个部分:

  1. 应用程序层(Applications),这是安卓系统最顶层的部分,是用户最直接使用的部分。它包括所有的应用程序和用户界面,比如图1中的H桌面(Home)、通讯录(Contents)、电话(Phone)和浏览器(Browser)。
  2. 应用程序框架层(Applicaiton Framework),这一层提供了应用程序层所需的各种服务和功能,也就是上文中提到的API。应用程序运行时所需要的活动管理器(Activity Manager)、窗口管理器(Window Manager)、内容提供者(Content Providers)、视图系统(View system)、通知管理器(Notification Manager)、包管理器(Package Manager)、电话管理器(Telephony Manager)、资源管理器(Resource Manager)、位置管理器(Location Manager)、即时通讯服务(XMPP Service)等功能都由应用程序框架层提供。
  3. 核心系统库层(Libraries、Android Runtime):这一层提供了底层的系统功能,主要包括原生的C/C++程序库和Android运行时库两部分。原生的C/C++程序库主要包括界面管理器(Surface Manager)、多媒体(Media FrameWork)、关系型数据库引擎(SQLite)、3D绘图库(OpenGL|ES)、字体引擎(FreeType)、浏览器引擎(Webkit)、SGL(2D绘图引擎)、SSL(安全套接字协议)等。Android运行时库,主要包括核心类库(Core Libraries)和 Dalvik虚拟机(Dalvik Virtual Machine)。对于安卓5.0以上的系统版本,不再使用Dalvik虚拟机运行安卓代码,改为用ART虚拟机运行。
  4. 操作系统内核层(Linux Kernal):这一层是安卓操作系统的核心部分,负责管理系统的硬件资源和提供系统的底层服务。由于安卓系统是基于Linux操作系统开发的,所以这里的系统内核层指的是Linux内核。考虑到安卓应用程序在运行时核心系统库层通过使用操作系统内核层的驱动来和硬件交互,因此很多专家把硬件分离出来单独作为一层,叫做硬件抽象层(HAL,Hardware Abstraction Layer),这里不考虑硬件抽象层。操作系统内核层主要由软件驱动构成,包括显示驱动(Display Driver)、相机驱动(Camera Driver)、蓝牙驱动(Blooth Driver)、闪存驱动(Flash Memory Driver)、进程通信驱动(Binder Driver)、通用穿行总线驱动(USB Driver)、小键盘驱动(keypad Driver)、无线网驱动(WiFi Driver)、音频驱动(Audio Drivers)、电源管理器(Power Management)。

2.2 安卓体系结构间的关系

安卓体系结构之间的关系如下:1)应用程序层是最顶层的部分,是用户最直接使用的部分。2)应用程序框架层位于应用程序层之下,负责提供应用程序层所需的各种服务和功能。3)核心系统库层位于应用程序框架层之下,负责提供底层的系统功能。4)操作系统内核层是安卓操作系统的核心部分,位于核心系统库层之下,负责管理系统的硬件资源和提供系统的底层服务。这些部分是层级关系,各个部分之间通过接口相互配合。应用程序层需要调用应用程序框架层提供的服务,应用程序框架层需要调用核心系统库层提供的功能,核心系统库层需要调用操作系统内核层提供的服务。各个部分共同为用户提供完善的移动设备使用体验。

从移动应用程序的代码调用逻辑来看,当用户和应用程序层交互时,安卓代码打包好的应用程序会在Android运行时库运行,实际上实在执行Dex字节码文件。在这个过程中会通过应用程序框架层提供的JAVA API接口实现各种各样的功能和服务。而应用程序框架层提供的JAVA API接口在调用硬件驱动的时候,又会通过JAVA原生接口(JNI,Java Native Interface)调用核心系统库层的C/C++原生程序库。考虑到C/C++代码操控底层硬件的优势包括:c语言生态丰富,发展较早不需要重复写一些复杂的逻辑,C/C++反编译的难度更大等,因此,C/C++原生程序库会调用系统内核的驱动来和硬件进行交互。在多数情况下,重要的业务逻辑会放在C/C++中。

3.安卓系统版本与处理器

3.1安卓系统版本

安卓系统版本是指安卓操作系统的版本号,不同的安卓系统版本代表着不同的功能和特性。例如,安卓11是一个新的安卓系统版本,它提供了新的功能和特性,而安卓10是旧的安卓系统版本,它提供的功能和特性可能较少。

API等级是指安卓系统提供的API的版本号,不同的API等级代表着安卓系统提供的不同功能和服务。例如,API等级30代表着安卓系统提供了30版本的API,这些API可以提供新的功能和特性。

安卓系统版本和API等级之间的存在一定的关系,每个安卓系统版本都会提供一个或多个API等级的API。例如,安卓11系统版本可能会提供API等级30、31和32等多个API等级的API。

但是,并不是所有的安卓系统版本都会提供所有的API等级的API。例如,安卓11系统版本可能只提供API等级30和31的API,而不提供API等级29的API。这意味着,如果开发人员使用了API等级为29的安卓SDK开发应用程序,则该应用程序可能无法在安卓11系统版本中运行。安卓版本与API等级的对应关系见图2。

图2 安卓系统与API等级的关系

3.2安卓系统处理器

按照处理器(CPU,central processing unit)型号的不同,可将安卓系统做如下划分:armeabi架构、arm64架构、x86架构和x86_64架构。其中armeabi架构指的是基于32位ARM处理器开发的安卓系统,arm64架构指的是基于64位arm架构开发的安卓系统,x86架构指的是基于Intel32位处理器开发的安卓系统,x86_64指的是基于Intel64位处理器开发的安卓系统。

更多学习资料请关注我的微信公众号白泽图鉴获取!!!