Android是基于
Linux开放性内核的
操作系统,是
Google公司在2007年11月5日公布的手机操作系统。
Android
早期由原名为"Android"的公司开发,谷歌在2005年收购"Android.Inc"后,继续对Android系统开发运营,它采用了软件堆层(software stack,又名软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能,其他的应用
软件则由各公司自行开发,部分程序以
Java编写。 2011年初数据显示,仅正式上市两年的操作系统Android已经超越称霸十年的
塞班系统,使之跃居全球最受欢迎的智能手机平台。现在,Android系统不但应用于智能手机,也在
平板电脑市场急速扩张,在智能MP4方面也有较大发展。采用Android系统主要厂商包括台湾的HTC,(第一台谷歌的手机G1由HTC生产代工)美国
摩托罗拉,SE等,
中国大陆厂商如:魅族(M9),华为、中兴、联想、蓝魔等。
应用程序
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框架注册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(硬件抽像层)是能以封闭源码形式提供硬件驱动模块。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工作的一个工具。
安全与权限
Android本身是一个权限分立的操作系统。在这类操作系统中,每个应用都以唯一的一个系统识别身份运行(Linux用户ID与群组ID)。系统的各部分也分别使用各自独立的识别方式。Linux就是这样将应用与应用,应用与系统隔离开。 系统更多的安全功能通过权限机制提供。权限可以限制某个特定进程的特定操作,也可以限制每个URI权限对特定数据段的访问。 Android安全架构的核心设计思想是,在默认设置下,所有应用都没有权限对其他应用、系统或用户进行较大影响的操作。这其中包括读写用户隐私数据(联系人或电子邮件),读写其他应用文件,访问网络或阻止设备待机等。
Android应用安装时的权限提示界面
安装应用时,在检查程序签名提及的权限,且经过用户确认后,软件包安装器会给予应用权限。从用户角度看,一款Android应用通常会要求如下的权限: 拨打电话、发送短信或彩信、修改/删除SD卡上的内容、读取联系人信息、读取日程信息,写入日程数据、读取电话状态或识别码、精确的(基于GPS)地理位置、模糊的(基于网络获取)地理位置、创建蓝牙连接、对互联网的完全访问、查看网络状态,查看WiFi状态、避免手机待机、修改系统全局设置、读取同步设定、开机自启动、重启其他应用、终止运行中的应用、设定偏好应用、震动控制、拍摄图片等。 一款应用应该根据自身提供的功能,要求合理的权限。用户也可以分析一款应用所需权限,从而简单判定这款应用是否安全。如一款应用是不带广告的单机版,也没有任何附加内容需要下载,那么它要求访问网络的权限就比较可疑。
很多玩家用户可能会奇怪:“为什么 Android 会用甜点作为它们系统版本的代号?”这个命名方法开始于 Andoird 1.5 发布的时候。作为每个版本代表的甜点的尺寸越变越大,然后按照26个字母数序:纸杯蛋糕,甜甜圈,松饼,冻酸奶,姜饼,蜂巢。
Android 1.1
发布时间:发布于 2008 年9月
Android 1.5
Cupcake纸杯蛋糕 发布时间:发布于 2009 年 4 月
Android 1.6
Donut甜甜圈 发布时间:2009 年 9 月
Android 2.0
Eclair松饼 发布时间:2009 年 10 月 26 日
Android 2.1
Eclair松饼 发布时间: 2009 年 10 月 26 日,又一个主要版本升级以创纪录的速度放出。这次,大版本升级到了Android 2.1 “Eclair.”Android 2.1主要特性:提升硬件速度更多屏幕以及分辨率选择大幅度的用户界面改良支持 Exchange活动墙纸大幅改进虚拟键盘蓝牙 2.1Google 地图
Android 2.2
Froyo冻酸奶 谷歌于北京时间2010年5月20日晚上10:30点在旧金山Moscone会展中心举办Google I/O 2010大会第二天的会议,Google正式发布了代号是“froyo 冻酸奶”的Android操作系统2.2版。 相对于上一版本的 改变: 1、整体性能大幅度的提升 2、3G网络共享功能。 3、Flash的支持。 4、App2sd功能。 5、全新的软件商店。 6、更多的Web应用
API接口的开发。
Android 2.3
Gingerbread姜饼
gingerdroid
北京时间2010年12月7日凌晨,Google正式对外发布了他们的下一代智能
手机操作系统Android 2.3也就被大家所熟知的Android Gingerbread系统。 主要更新包括: 游戏:增加了新的垃圾回收和优化处理事件,以提高对游戏的支持能力。原生代码可直接存取输入和感应器事件、EGL/OpenGL ES、OpenSL ES。新的管理窗口和生命周期的框架。 多媒体:支持VP8和WebM视频格式,提供AAC和AMR宽频编码,提供了新的音频效果器,比如混响、均衡、虚拟耳机和低频提升 通讯方式:支持前置摄像头、SIP/VOIP和NFC(近场通讯) 站在用户的角度看,这次更新的亮点主要有: 简化界面、速度提升: 更快更直观的文字输入: 一键文字选择和复制/粘帖: 改进的电源管理系统: 新的应用管理方式: 原生支持前置摄像头、互联网通话和NFC(近场通讯): 系统原生支持VoIP,可以在联系人里加入它的SIP帐户,然后直接通过系统来拨打VoIP电话。 增加下载管理器:Android 2.4 Ice cream sandwich冰激凌三明治 预计在2011年第四季度发布。其甜品代号为 Ice cream sandwich(冰激凌三明治) 预计与2.3版本之间的变化不会太大,但是会有不少功能更新。毕竟已经采用了新的代号。 目前已知的Android 2.4带来的更新包括更多的动画特效、更快的运行速度、软件通话降噪、视频聊天等。 Android 2.4系统不会是之前一直谣传的Android 3.0,其真正的版本号将会是Android 2.4。
Android2.4
2011年5月10日,在旧金山举行的I/O开发者大会上,谷歌展示了Android 2.4(代号:冰淇淋三明治)智能手机系统。谷歌未透露Android 2.4的上市时间等细节。Android 2.4将解决开发者和消费者最大的抱怨:Android平台的分散。市场上有数以百计的Android设备,虽然选择很多,但也给开发者带来困难,很难开发出可满足如此众多手机和平板电脑需要的软件。 谷歌强调,Android 2.4将解决这一问题。另外冰淇淋三明治将包含Honeycomb系统上所有最好的功能。例如“3D”用户全息界面,可检测你在屏幕上要找的东西,并据此进行更新。这有点难以解释,简单地说就是不管你在显示屏上看什么,软件将自我调整以确保你有完美的视觉体验。 Android平台正在迅速增长,而且只会变得更大。目前在Android市场有20万种Android应用程序。谷歌也证实,已激活了1亿部Android设备。尽管对冰淇淋三明治了解非常少,但看到谷歌将解决设备分散问题,并增加了一些漂亮的功能,还是令人欣慰。
Android 3.0
Honeycomb(蜂巢)
3.0系统特性 ·优化针对平板 ·全新设计的UI增强
网页浏览功能 ·n-app purchases功能
Android3.1
Honeycomb 蜂巢(改进3.0BUG) ·经过优化的
Gmail
电子邮箱; ·全面支持
GoogleMaps
Android 3.1Honeycomb(3.0改进) Google发布了最新的Android3.1操作系统,新版本最大的改变是将Android手机系统跟平板系统再次合并,从而方便开发者。Android3.1相比3.0的升级有限,除了任务管理器可以滚动,支持USB 输入设备(键盘、鼠标等)。 另外还有,它会支持 Google TV.可以支持XBOX 360无线手柄,这个就强悍了,大屏幕的Android平板电脑肯定会非常吃香,简直就是一台随身游戏机嘛,还是用手感最好的无线手柄的。此外就是一些widget支持的变化,能更加容易的定制屏幕widget插件。
Android 3.2
Honeycomb(蜂巢) 2011年7月13日,谷歌公司放出了新版“蜂巢”Android 3.2的升级源码,合作厂商摩托罗拉亦在当日发布了针对旗下XOOM平板电脑的升级固件,为用户更新新版系统。 Android 3.2这一新版平板电脑操作系统开始支持7英寸设备,并引入了应用显示缩放功能,可以让那些针对手机开发的应用,更平滑的显示在平板电脑上。
Android平台的研发队伍阵容强大,包括Google、HTC(宏达电)、
T-Mobile、
高通、摩托罗拉、
三星、
LG以及中国移动在内的34家企业都将基于该平台开发手机的新型业务,应用之间的通用性和互联性将在最大程度上得到保持。“开放手机联盟”表示,Android平台可以促使移动设备的创新,让用户体验到最优越的移动服务,同时,开发商也将得到一个新的开放级别,更方便的进行协同合作,从而保障新型移动设备的研发速度。 34家企业的加盟,也将大大降低新型手机设备的研发成本,完全整合的“全移动功能性产品”成为“开放手机联盟”的最终目标。 这34家企业中并不包含全球手机第一巨头诺基亚,收购palm并且全力打造web os的HP,以及凭借iPhone风光正在的苹果公司,美国运营商AT&T和Verizon,当然微软没有加入,独树一帜的加拿大RIM和他们的
Blackberry也被挡在门外。 手机开放联盟大家庭成员名单: 一、手机制造商: 台湾宏达国际电子(HTC)(Palm等多款智能手机的代工厂) 摩托罗拉(美国最大的手机制造商) 韩国三星电子(仅次于诺基亚的全球第二大手机制造商) 韩国LG电子
中国移动(全球最大的移动运营商,有4亿用户) 日本KDDI(2900万用户) 日本NTT DoCoMo(5200万用户) 美国Sprint Nextel(美国第三大移动运营商,5400万用户) 意大利电信(Telecom Italia)(意大利主要的移动运营商,3400万用户) 西班牙Telefónica (在欧洲和拉美有1.5亿用户) T-Mobile(德意志电信旗下公司,在美国和欧洲有1.1亿用户) 二、半导体公司: Audience Corp(声音处理器公司) Broadcom Corp(无线半导体主要提供商) 英特尔(Intel) Marvell Technology Group Nvidia (图形处理器公司) SiRF(GPS技术提供商) Synaptics(手机用户界面技术) 德州仪器(Texas Instruments) 高通(Qualcomm ) 三、软件公司: Aplix Ascender
eBay的
Skype Esmertec Living Image NMS Communications Noser Engineering AG Nuance Communications PacketVideo SkyPop Sonix Network TAT-The Astonishing Tribe Wind River Systems