购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 Android简介

1.1.1 Android概述

Android是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的移动操作系统,由Google成立的OHA(Open Handset Alliance,开放手机联盟)领导并开发,为各类智能手机及便携式设备提供可运行的操作系统。

Android操作系统最早由Andy Rubin、Rich Miner和Nick Sears等创建并开发,后被Google于2005年收购。2007年11月,Google联合硬件制造商、软件开发商及电信营运商组建了开放手机联盟,随后以Apache开源许可证的授权方式,发布了Android的源代码,称为AOSP(Android Open Source Project, Android开放源代码项目)。

2008年,Google提出了Android HAL架构,并联合HTC发布了第一部Android智能手机。此后,Android不断发展更新,并逐渐扩展到平板电脑及其他领域,如电视、数码相机、游戏机、智能手表等,并在2011年首次超过塞班系统,跃居全球移动操作系统市场份额第一,彼时的iOS、塞班等移动操作系统完全没有与之抗衡的能力。Android能在短时间内称雄移动操作系统市场,归功于Android系统的AOSP。

随着Android系统的不断发展壮大,Android在2017年3月成功超越Microsoft Windows,成为全球装机量最多的操作系统。截至2023年8月,根据StatCounter统计,除了美国、英国、加拿大、巴哈马、冰岛等少数国家和地区外,Android都是占比最高的智能手机操作系统。

1.1.2 Android系统架构

Android系统构架又被称为体系结构。和其他操作系统一样,Android系统也采用了分层的架构,共分为四层五部分,从下到上分别是Linux内核层、硬件抽象层(HAL)、Android Runtime系统库、Java API框架层和应用层,如图1—1所示。

图1—1 Android系统架构图

Linux内核层

Android的核心系统服务依赖于Linux内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。同时,Linux内核也是硬件和软件栈之间的抽象层,允许设备制造商为内核开发硬件驱动程序。

硬件抽象层

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

Android Runtime系统库

对于运行Android 5.0或更高版本的设备,每个应用都在自己的进程中运行,并且拥有自己的Android Runtime(ART)实例。而在Android 5.0版本之前,Dalvik就是Android Runtime。ART通过执行DEX文件,可以在设备上运行多个虚拟机,DEX文件是一种专为Android设计的字节码格式文件,作为一种经过优化的字节码文件,DEX文件占用的内存很少。

编译工具链(如Jack)能够将Java源代码编译为DEX字节码,使其运行在Android设备上。ART主要功能包括:预先(AOT)编译和即时(JIT)编译,优化垃圾回收(GC),以及调试方面的支持,如专用采样分析器、详细的诊断异常和崩溃报告等。

同时,Android还包含一套核心运行时库,可提供Java API框架所使用的Java编程语言中的大部分功能,还包括一些Java 8语言功能。

事实上,Android系统的许多核心系统组件和服务(如ART和HAL)都构建自原生代码,所以需要使用C和C++来编写对应的原生库,然后再提供Java API供应用层调用。例如,可以通过Android提供的Java OpenGL API来访问OpenGL ES的相关服务,实现在应用中绘制和操作2D和3D图形。

Java API框架层

Java API框架层主要提供构建应用程序可能用到的各种API, Android自带的一些核心应用就使用到了这些API,开发者也可以使用这些API来构建属于自己的应用程序。

事实上,这些API是创建Android应用所必需的构建模块,它们是一些简化后的系统组件和服务,是可以重复使用的,具体包括如下:

· 丰富、可扩展的视图系统,可用于构建应用的UI,如列表、网格、文本框、按钮以及浏览器等;

· 资源管理器,用于访问非代码资源,如本地化的字符串、图形和布局文件等;

· 通知管理器,用于在应用的状态栏中显示提醒消息;

· Activity管理器,用于管理应用的生命周期,以及提供导航栈管理;

· 内容提供程序,用于访问其他应用的数据或者共享自己的数据。

应用层

Android系统在发布时会默认提供一些核心应用程序包,如电子邮件、短信、日历和联系人等,它们一般使用Java语言进行编写。事实上,所有安装在手机上的应用程序都属于这一层。 Q3Erevcq0if2xle/9RObqV0bNypg5DZm68tvGoAtX9yDwM0kZWg+YIP1H4s1SFgt

点击中间区域
呼出菜单
上一章
目录
下一章
×