第1章 Android系统移植开发概述

1.1 Android系统架构和生态系统

1.1.1 Android软件系统

Android是一个包括操作系统、中间件和关键应用的移动设备软件堆。Android是目前最流行的手机开发平台,依靠Google的强大开发和媒体资源,Android成为众多手机厂商竞相追逐的对象。

Android系统在推出后,逐渐完善和增加功能。从最初的版本发布后,又陆续发布了Cupcake,Donut,Eclair,Froyo等版本,发布的时候使用Android 1.5、Android 2.0等版本号标示,后面版本对前面的版本兼容,如表1-1所示。每一个版本具有不同的API级别,目前Android的API基本从2到8,这个API级别通常是指Android平台的Java层的API的接口。

表1-1 Android版本的升级

作为一个开放式的移动设备的平台,Android包含了众多的功能和庞大的代码。其代码基于Linux内核,在用户空间又分成本地代码(C和C++)和Java代码两种。从宏观的角度来看,Android是一个开放的软件系统,它包含了众多的源代码。从下至上,Android系统分成4个层,如图1-1所示。

图1-1 Android软件系统架构

第1层:Linux操作系统及驱动

第2层:本地代码框架和Java虚拟机

第3层:Java框架

第4层:Java应用程序

Android的第1层由C语言实现,第2层由C和/C++实现,第3、4层主要由Java代码实现。

第1层和第2层之间,从Linux操作系统的角度来看,是内核空间与用户空间的分界线。

第2层和第3层之间,是本地代码层和Java代码层的接口。

第3层和第4层之间,是Android的系统API的接口。

由于Android系统需要支持Java代码的运行,这部分内容是Android的运行环境(Runtime),由虚拟机和Java基本类组成。这部分内容通常也可以认为是第2层的一个部分。

第1层次运行于内核空间,第2、3、4层运行于用户空间。

提示:通常情况下,可以将第1层视为Android的Linux内核,将第2、3、4层视为Android系统。

Android几个层次的功能如下所示:

Android的操作系统

使用Linux 2.6 内核,包括安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也同时作为硬件和软件系统之间的抽象层。

Android本地库

包含一些C/C++库,这些库可以被Android系统中不同的组件使用,它们通过Android应用程序框架为开发者提供服务。

Android运行环境

为Java的运行环境,提供了Java编程语言核心库的大多数功能,由Dalvik Java虚拟机和基础的Java类库组成。Dalvik是Android中使用的Java虚拟机,Dalvik被设计成一个可以同时高效地运行多个虚拟机实例的虚拟系统。

Android应用程序框架

包含了4种基本的组件(活动、服务、广播接收器、内容提供者),丰富的控件(在Android中称为视图),内容提供器,资源管理器,通知管理器,活动管理器等。

Android应用程序

一般由Java语言编写,核心应用程序和系统一起发布,包括:桌面、电话、短信息、E-mail、日历、浏览器、联系人管理程序等。