Android
Android是基于Linux内核的软件平台和操作系统,是Google在2007年11月5日公布的手机系统平台,早期由Google开发,后由Google和其他几十个手机公司建立的开放手机联盟(Open Handset Alliance)开发。
Android采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分。低层以Linux内核工作为基础,只提供基本功能;其他的应用软件则由各公司自行开发,以Java作为编写程序的一部分。
Android在未公开之前常被传闻为Google电话或Gphone。大多传闻认为Google开发的是自己的手机电话产品,而不是一套软件平台。传言指出 Google Phone 将提供完全免费的服务,Google会通过广告获取收益。Google Phone 的发布日期预期为2009年。到了2010年1月,Google始发表自家品牌手机电话的 Nexus One。
- 开发商:开放手机联盟(Open Handset Alliance)
- 官方网站:http://www.android.com/
- 操作系统家族:Linux
- 源码模式:自由软件
- 最初发布日期:2008年10月21日
- 最新稳定版本:2.2 (2010年05月20日)
- 支持的语言:多语种
- 内核类:宏内核(Linux)
- 授权条款:Apache 2.0及GPLv2
概览
Google于2005年并购了成立仅22个月的高科技企业Android,展开了短信、手机检索、定位等业务,同时基于Linux的通用平台也进入了开发。
2008 Patrick Brady 于 Google I/O 演讲“Anatomy & Physiology of an Android”,并提出的 Android HAL 架构图。HAL 以 *.so 档的形式存在,可以把 Android framework 与 Linux kernel 隔开。
2010年2月3日,Linux 内核开发者 Greg Kroah-Hartman 将 Android 的驱动程序从 Linux 内核“状态树”(“staging tree”)上除去,从此,Android 与 Linux 内核 开发 分道扬镳。
Android系统今后将继续每半年一次的升级步伐,分别定在每年的夏天和年终。每代Android系统都将以甜点命名,比如1.5版叫做Cupcake(纸杯蛋糕),1.6版为Donut(甜甜圈),然后是Éclair(法式奶油夹心甜点)和Froyo(冷冻乳酪)。Donut将把社交网络功能作为升级重点,在“手机的各种体验中”都增加社交网络元素。
Android已经与 Sony Ericsson、HTC、NTT DoCoMo、KDDI、Motorola等世界移动领域34家公司于免费提供达成一致。今后对于移动通信的影响势必会进一步体现出来。但是如此广泛公司的同盟是否能够有效运作及以持久值得拭目以待。
第一部运行Android的手机是 T-Mobile G1 (也称为 HTC Dream)。于2008年8月18日得到美国联邦通信委员会的批准,并于10月22日开始发售。
数据显示, 截至2009年底, 在全球范围内至少有18款手机使用Android。
开放手机联盟 (Open Handset Alliance)
http://www.openhandsetalliance.com/
现在的开放手机联盟是一个由65间企业组成的商业联盟,以为移动设备开发自由标准。会员包括Google、 HTC、英特尔、摩托罗拉、高通公司、德州仪器、三星电子、LG、T-Mobile、Nvidia及温瑞尔 (Wind River Systems)。
开放手机联盟成立于2007年11月5日,由Google与34间手机制造商、软件开发商、电信运营商和芯片制造商一同创组。Android,联盟中基于开放源码许可证的旗舰软件,将与其他移动平台如苹果、微软、诺基亚、Palm、Research In Motion、Symbian和bada竞争。
Nexus One 是Google推出的运行Android手机操作系统的智能手机。这也是Google自行推出的第一款手机。该手机由HTC公司生产,于2010年1月5日发布。手机的功能包括语音文字识别,内置的Gmail程序,以及驾驶中的语音导航等等。这款手机通过Google网站销售,解锁版定价529美元,捆绑 T-Mobile 2年合同 的版本售价则为179美元。
该手机目前在美国捆绑T-Mobile移动电话网络发行。Verizon(美国)和Vodafone(欧洲)网络的版本原计划在2010年第二季度上市,但后因市场反应不佳而取消。Google曾同时出售不绑定网络的解锁版,可以在全世界任何GSM网络上使用,但3G功能只在一些网络上可用,后也已停止销售。
Nexus One 配有3.7英寸AMOLED显示屏,分辨率为800×480。屏幕具有100000:1的对比度,反应时间为1ms。手机上带有一个轨迹球,可以根据接收的消息类型发出不同颜色的光。该手机有一前一后两个麦克风,后者用于噪音消除,以减少通话背景噪音。手机上还提供一个标准的3.5mm耳机插孔。
Nexus One 手机采用了高通公司 QSD 8250 1GHz 处理器,4GB的microSD卡(可以扩展至32GB),512MB内存和512MB闪存,500万像素自动聚焦摄像头,LED闪光灯和数码变焦,GPS接收机,光线和距离传感器,蓝牙 2.1 + EDR 以及 802.11b/g 的无线功能。
Nexus One 还提供了硬件支持的H.263、H.264和MPEG-4视频解码,并且可播放MP3、AAC+、AAC++、Ogg Vorbis、WAV和MIDI音频,并显示JPEG、GIF、PNG和BMP等图像格式。该手机使用一个标准 micro USB 接口,而不是宏达电所专有的连接器。Android商店的应用程序最初的将被限制在内置的512MB闪存,但使用扩展SD卡的程序存储也将在安全和盗版问题得到解决后启用。
Nexus One 手机重130克,高119毫米(5英寸),宽59.8毫米(2英寸),厚度11.5毫米(0英寸),由一个可拆卸的1400mAh电池供电,预计待机时间为290小时,通话时间10小时,或接入3G网络5个小时。
Nexus One 手机的天线支持全球大多数GSM供应商,但不包括AT&T和罗杰斯(加拿大)使用的频段850MHz和1900MHz的UMTS 3G频段。具体覆盖的频段包括四频GSM的850、900、1800和1900以及UMTS 1(2100MHz)、4(1700MHz至)和8(900兆赫)频段。
Nexus One 运行 Android 2.1 操作系统,代号为“Eclair”(闪电泡芙:一种法式甜点)。2010年2月2日,Google官方博客宣布 Nexus one 的系统固件将会进行第一次升级,更新内容包括”修复3G网络连接问题和支持多点触控”。2010年五月,随着 Android 2.2 开发代号Froyo的推出,Nexus One 成为第一批可更新到 Android 2.2 平台的系统。
Android 1.5 (Cupcake)
基于Linux Kernel 2.6.27
2009年4月30日,官方1.5版本(Cupcake)的Android发布。主要的更新如下:
- 拍摄/回放视频,并支持上传到youtube
- 支持立体声蓝牙耳机,同时改善自动配对性能
- 最新的采用WebKit技术的浏览器,支持拷贝/粘帖和页面中搜索
- GPS性能大大提高
- 屏幕虚拟键盘
- 主屏幕增加音乐播放器和相框widgets
- 应用程序自动随着手机旋转
- 短信,Gmail,日历,浏览器的用户接口大幅改善,比如说Gmail现在可以批量删除邮件了
- 相机引导速度加快,拍摄图片可以直接上传到picasa
- 来电照片显示
Android 1.6 (Donut)
基于Linux Kernel 2.6.29
2009年9月15日, 1.6(Donut)版本SDK发布。主要的更新如下:
- 完全重新设计的 Android Market
- 手势支持
- 支持CDMA网络
- 文字转语音系统(TXT-2-speech)
- 快速搜索框
- 全新的拍照接口
- 应用程序耗电查看
- 支持VPN
- 支持更多的屏幕分辨率
- 支持OpenCore2媒体引擎
- 新增面向视觉或听觉困难人群的易用性插件
Android 2.0/2.0.1/2.1 (Eclair)
基于Linux Kernel 2.6.29
2009年10月26日, 2.0(Eclair)版本SDK发布。主要的更新如下:
- 优化硬件速度
- “Car Home”程序
- 支持更多的屏幕分辨率
- 重整接口
- 新的浏览器的用户接口和支持HTML5
- 新的联系人名单
- 更好的白色/黑色背景比率
- 改进 Google Maps 3.1.2
- 支持 Microsoft Exchange
- 支持内置相机闪光灯
- 数字变焦
- 改进的虚拟键盘
- 蓝牙2.1
Android 2.2 (Froyo)
基于Linux Kernel 2.6.32
2010年5月20日, 2.2(Froyo)版本SDK发布。主要的更新如下:
支持安装软件来扩展内存- 集成Adobe Flash 10.1支持
- 加强软件即时编译的速度
- 新增软件引导”快速”至电话和浏览器
- USB分享器和WiFi热点功能
- 支持在浏览器上传文件
- 更新Market中的”batch”和自动更新
- 增加对Microsoft Exchange的支持 (安全政策, auto-discovery, GAL look-up)
- 集成Chrome的V8 JavaScript引擎应用到浏览器
- 加强快速搜索小工具
未确定新功能:
- 更多软件能通过Market更新, 类似2.0/2.1中的Map更新
- 速度和性能优化
Android 下一版 (Gingerbread)
基于Linux Kernel 2.6.33
已确定新功能:
- 支持WebM视频播放
- 改进 copy–paste 的功能
未确定新功能:
- Android Market music store
- PC 端的媒体流
- 修补 UI
- 蓝牙音效
应用程序
以Java为编程语言,使Android从接口到功能,都有层出不穷的变化,其中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框架注册View.OnClickListener。另外还有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)取得共用数据库。
Android的中间层多以Java 实现,并且采用特殊的Dalvik 虚拟机(Dalvik Virtual Machine)。Dalvik虚拟机是一种“寄存器型态”(Register Based)的Java虚拟机,变量皆存放于寄存器中,虚拟机的指令相对减少。
Dalvik虚拟机可以有多个instance, 每个Android应用程序都用一个自属的Dalvik虚拟机来运行,让系统在运行程序时可达到优化。Dalvik 虚拟机并非运行Java Bytecode,而是运行一种称为.dex格式的文件。
硬件抽像层
Android HAL 是为了将 Android framework 与 Linux kernel 隔开,降低对 Linux kernel 的依赖,以达成kernel independent。Android HAL 目前以 HAL stub 的形式存在,本身是.so 档,是一种 proxy 的概念。Android runtime 向 HAL 取得 stub 的 operations,再以 callback 的方式操作函数。
操作系统
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 Managemeat),程序管理(Process Management),网络堆栈(Network Stack),驱动程序模型(Driver Model)等。下载Android源码之前,先要安装其构建工具 Repo来初始化源码。Repo 是 Android 用来辅助Git工作的一个工具。
了解更多
维基百科:http://zh.wikipedia.org/zh-cn/Android
开源计划:http://source.android.com/
Android Market:http://www.android.com/market/
Google Projects for Android:http://code.google.com/android/
Android Developers:http://developer.android.com/
本文链接地址(Giga OS) - http://sancc.net/os/mobile-os/android
如转载,请注明:“转载自 Giga OS - http://gigaos.com/”,并注明链接地址!








