疯狂Android讲义第四版-第1章Android应用和开发环境-第1节Android的发展和历史

1.1.Android的发展和历史

1.1.1.Androd的发展和简介

1.1.2.Android 9.x 平台架构及特性

Android 系统的底层建立在 Linux 系统上,该平台由操作系统、中间件、用户界面和应用软件4层组成,它采用一种被称为软件叠层(Software Stack)的方式进行构建。这种软件叠层结构使得层与层之间相互分离,明确各层的分工。这种分工保证了层与层之间的低耦合,当下层的层内或层下发生改变时,上层应用程序无须任何改变。

Android 系统主要由6部分组成

1.系统 App 层

Andorid 系统将会包含一系列核心 App(应用程序),包括电话拨号应用、电子邮件客户端、日历、相机、联系人等。这些应用程序通常都是用 Java 编写的。此外,普通开发者开发的各种 Android App,都位于这一层。

2.Java API 框架层

开发 Android App 就是面向 Java API 框架层进行开发。从这个意义上看,Android 系统上的各种 App 是完全平等的,不管是 Android 系统本身提供的 App,还是普通开发者所开发的 App,都可以调用 Android 提供的 Java API 框架。

Java API 框架除可作为 App 开发的基础之外,也是软件复用的重要手段,任何一个应用程序都可以发布它的功能模块——只要发布时遵守了 API 框架的规范,其他 App 就可以调用这个功能模块。

3.原生 C/C++ 库

Android 包含一套被不同组件所使用的 C/C++库的集合。一般来说,Android 应用开发者不能直接调用这套 C/C++库集,而是应该通过它上面的 Java API 框架来调用这些库。

下面列出一些原生C/C++库:

a)WebKit:一个全新的 Web 浏览器引擎,该引擎为 Android 浏览器提供支持,也为 WebView 提供支持,WebView 完全可以嵌入开发者自己的的应用程序中。

b)OpenMAX(开放媒体加速层):其目的在于使用统一的接口,加速处理大量多媒体资料。其中最上层为 OpenMAX AL(App Layer),该层代表 App 和多媒体中间层的标准接口,使得 App 在多媒体接口上具有良好的可移植性。

c)Libc(系统 C 库):一个从 BSD 系统派生的标准 C 系统库,并且专门为嵌入式 Linux 设备调整过

d)Media Framework(媒体框架):基于 PacketVideo 的 OpenCORE,这套媒体库支持播放和录制许多流行的音频和视频格式,以及查看静态图片。它主要包括 MPEG4、H.264、MP3、AAC、AMR、JPG、PNG 等多媒体格式

e)SGL:底层的 2D 图形引擎

f)OpenGL ES:基于 OpenGL ES API 实现的 3D 系统,这套 3D 库既可使用硬件 3D 加速(如果硬件系统支持的话),也可使用高度优化的软件 3D 加速。

g)SQLite:供所有应用程序使用的功能强大的轻量级关系数据库

4.Android 运行时

Android 运行时由两部分组成:Android 核心库和 ART。其中核心库提供了 Java 语言核心库所能使用的绝大部分功能;而 ART 则负责运行 Android 应用程序。

早期 Android 运行时由 Dalvik 虚拟机和 Android 核心库集组成,但由于 Dalvik 虚拟机采用了一种被称为 JIT (Just-In-Time)的解释器进行动态编译并执行,因此导致 Android App 运行时比较慢。从 Android 5.0 开始,Android 运行时改为使用 ART,ART 在用户安装 App 时进行预编译(Ahead-Of-Time,AOT),将原本在程序运行时的编译动作提前到 App 安装时,这样使得程序在运行时可以减少动态编译的开销,从而提升 Android App 的运行效率。

反过来,由于 ART 需要在安装 App 时进行 AOT 处理,因此 ART 需要占用更多的存储空间,应用安装和系统启用时间会延长不少。此外,ART 还支持 ARM、x86 和 MIPS 架构,并且能完全兼容 64 位系统。

Android 6.0 的重要更新是运行时权限,使得 App 能在安装之后动态地请求获取相关权限;Android 7.0 的重要更新则是多窗口模式。

5.硬件抽象层(HAL)

硬件抽象层主要提供了对 Linux 内核驱动的封装,这种封装可以向上提供驱动音频、蓝牙、摄像头、传感器等设备的编程接口,向下则可隐藏底层的实现细节。

简单来说,Android 系统把硬件的支持分为两层:内核驱动层和硬件抽象层。其中底层的内核驱动层处于 Linux 内核中,内核驱动层只提供简单的硬件访问逻辑,这部分代码是完全开源的;而硬件抽象层则负责参数和访问流程控制,这层的封装代码并不开源,它只是向上提供统一的编程接口,而具体的实现往往属于各厂家。

6.Linux内核

Android 系统是基于 Linux 的(所以 Android 本质上是一个 Linux 系统)。Linux 内核提供统一的编程接口,而具体的实现往往属于各厂家。

posted on 2019-11-10 22:39  herisson_pan  阅读(22)  评论(0)    收藏  举报

导航