admin管理员组

文章数量:1538123

2024年6月1日发(作者:)

Android操作系统简介

Android一词的本义指“机器人”,同时也是Google于2007年11月5日

宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、

用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动

软件。目前,最新版本为Android 2.4 Gingerbread和Android 3.0 Honeycomb。

Android是基于Linux内核的操作系统,是Google公司在2007年11

月5日公布的手机操作系统,早期由原名为"Android"的公司开发,谷歌在

2005年进行收购"",Google继续进行对Android系统开发运

营,它采用了软件堆层(software stack,又名以软件叠层)的架构,主

要分为三部分。底层Linux内核只提供基本功能;其他的应用软件则由各

公司自行开发,部分程序以Java编写。

2011年初数据显示,仅正式推出三年的操作系统Android已经超越称

霸十年的塞班系统,采用Android系统主要厂商包括美国摩托罗拉

(MOTOROLA)、韩国的三星(SAMSUNG)、英国索尼爱立信(Sony Ericsson)

另外还有中国厂商如:中国台湾HTC、联想、华为、中兴等,使之跃居全球

最受欢迎的智能手机平台,Android系统不但应用于智能手机,也在平板电

脑市场急速扩张。

1

应用程序

Android以Java为编程语言,使接口到功能,都有层出不穷的变化,

其中Activity等同于J2ME的MIDlet,一个 Activity 类(class)负责创

建视窗(window),一个活动中的Activity就是在 foreground(前景)

模式,背景运行的程序叫做Service。两者之间通过由ServiceConnection

和AIDL连结,达到复数程序同时运行的效果。如果运行中的 Activity 全

部画面被其他 Activity 取代时,该 Activity 便被停止(stopped),甚

至被系统清除(kill)。

View等同于J2ME的Displayable,程序人员可以通过 View 类与“XML

layout”档将UI放置在视窗上,Android 1.5的版本可以利用 View 打造

出所谓的 Widgets,其实Widget只是View的一种,所以可以使用xml来

设计layout,HTC的Android Hero手机即含有大量的widget。至于

ViewGroup 是各种layout 的基础抽象类(abstract class),ViewGroup

之内还可以有ViewGroup。View的构造函数不需要再Activity中调用,但

是Displayable的是必须的,在Activity 中,要通过findViewById()来

从XML 中取得View,Android的View类的显示很大程度上是从XML中读取

的。View 与事件(event)息息相关,两者之间通过Listener 结合在一起,

每一个View都可以注册一个event listener,例如:当View要处理用户

触碰(touch)的事件时,就要向Android框架注册kListener。

另外还有Image等同于J2ME的BitMap。

中介软件

操作系统与应用程序的沟通桥梁,并用分为两层:函数层(Library)

和虚拟机(Virtual Machine)。 Bionic是 Android 改良libc的版本。

Android 同时包含了Webkit,所谓的Webkit 就是Apple Safari 浏览器背

后的引擎。Surface flinger 是就2D或3D的内容显示到屏幕上。Android

使用工具链(Toolchain)为Google自制的Bionic Libc。

Android采用OpenCORE作为基础多媒体框架。OpenCORE可分7大块:

PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、

Operating System Compatibility Library(OSCL)、Common、OpenMAX。

Android 使用skia 为核心图形引擎,搭配OpenGL/ES。skia与Linux

Cairo功能相当,但相较于Linux Cairo, skia 功能还只是雏形的。2005

年Skia公司被Google收购,2007年初,Skia GL源码被公开,目前Skia 也

是Google Chrome 的图形引擎。

Android的多媒体数据库采用SQLite数据库系统。数据库又分为共用

数据库及私用数据库。用户可通过ContentResolver类(Column)取得共

用数据库。

2

Android的中间层多以Java 实现,并且采用特殊的Dalvik 虚拟机

(Dalvik Virtual Machine)。Dalvik虚拟机是一种“暂存器型态”

(Register Based)的Java虚拟机,变量皆存放于暂存器中,虚拟机的指

令相对减少。

Dalvik虚拟机可以有多个实例(instance), 每个Android应用程序

都用一个自属的Dalvik虚拟机来运行,让系统在运行程序时可达到优化。

Dalvik 虚拟机并非运行Java字节码(Bytecode),而是运行一种称为.dex

格式的文件。

硬件抽像层 (Hardware Abstraction Layer)

Android 的 HAL(硬件抽像层)是能以封闭源码形式提供硬件驱动模

块。HAL 的目的是为了把 Android framework 与 Linux kernel 隔开,让

Android 不至过度依赖 Linux kernel,以达成 kernel independent 的概

念,也让 Android framework 的开发能在不考量驱动程序实现的前提下进

行发展。

HAL stub 是一种代理人(proxy)的概念,stub 是以 *.so 档的形式

存在。Stub 向 HAL“提供”操作函数(operations),并由 Android runtime

向 HAL 取得 stub 的 operations,再 callback 这些操作函数。HAL 里

包含了许多的 stub(代理人)。Runtime 只要说明“类型”,即 module ID,

就可以取得操作函数。

编程语言

Android 是运行于 Linux kernel之上,但并不是GNU/Linux。因为在

一般GNU/Linux 里支持的功能,Android 大都没有支持,包括Cairo、X11、

Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic

取代Glibc、以Skia 取代Cairo、再以opencore 取代FFmpeg 等等。Android

为了达到商业应用,必须移除被GNU GPL授权证所约束的部份,例如Android

将驱动程序移到 userspace,使得Linux driver 与 Linux kernel彻底分

开。bionic/libc/kernel/ 并非标准的kernel header files。Android 的

kernel header 是利用工具由 Linux kernel header 所产生的,这样做是

为了保留常数、数据结构与宏。

目前Android 的 Linux kernel控制包括安全(Security),存储器

管理(Memory Management),程序管理(Process Management),网络堆

栈(Network Stack),驱动程序模型(Driver Model)等。下载Android

源码之前,先要安装其构建工具 Repo来初始化源码。Repo 是 Android 用

来辅助Git工作的一个工具。

3

本文标签: 系统运行程序采用