Android是基于Linux开放性内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。 Android早期由原名为\的公司开发,谷歌在2005年收购\后,继续对Android系统开发运营,它采用了软件堆层(software stack,又名软件叠层)的架构,主要分为三部分:底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。 2011年初数据显示,仅正式上市两年的操作系统Android已经超越称霸十年的塞班系统,使之跃居全球最受欢迎的智能手机平台。现在,Android系统不但应用于智能手机,也在平板电脑市场急速扩张,在智能MP4方面也有较大发展。采用Android系统主要厂商包括台湾的HTC(第一台谷歌的手机G1由HTC生产代工)、韩国三星、美国摩托罗拉、索尼爱立信等,中国大陆厂商如:首派(A101、A100、A80、A60S及未上市的A70),魅族(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应用通常会要求如下的权限: 拨打电话、发送短信或彩信、修改/删除SD卡上的内容、读取联系人信息、读取日程信息,写入日程数据、读取电话状态或识别码、精确的(基于GPS)地理位置、模糊的(基于网络获取)地理位置、创建蓝牙连接、对互联网的完全访问、查看网络状态,查看WiFi状态、避免手机待机、修改系统全局设置、读取同步设定、开机自启动、重启其他应用、终止运行中的应用、设定偏好应用、震动控制、拍摄图片等。 一款应用应该根据自身提供的功能,要求合理的权限。用户也可以分析一款应用所需权限,从而简单判定这款应用是否安全。如一款应用是不带广告的单机版,也没有任何附加内容需要下载,那么它要求访问网络的权限就比较可疑。
安卓系统 具备优势
开放性
在优势方面,Android平台首先就是其开放性,开放的平台允许任何移动终端厂商加入
到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。
开放性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。 挣脱束缚
在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什么功能接入什么网络,几乎都受到运营商的控制。自从iPhone上市,用户可以更加方便地连接网络,运营商的制约减少。随着EDGE、HSDPA这些2G至3G移动网络的逐步过渡和提升,手机随意接入网络已不是运营商口中的笑谈。 丰富的硬件
这一点还是与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容。好比你从诺基亚Symbian风格手机一下改用苹果iPhone,同时还可将Symbian中优秀的软件带到iPhone上使用、联系人等资料更是可以方便地转移。 开发商
Android平台提供给第三方开发商一个十分宽泛、自由的环境。因此不会受到各种条条框框的阻挠,可想而知,会有多少新颖别致的软件会诞生。但也有其两面性,血腥、暴力、情色方面的程序和游戏如何控制正是留给Android难题之一。 Google应用
如今叱咤互联网的Google已经走过10年度历史。从搜索巨人到全面的互联网渗透,Google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而Android平台手机将无缝结合这些优秀的Google服务。
系统缺陷
每一款手机都有缺陷,每一个操作系统也不是没有BUG。即使是IPHONE4也有许多不尽如人意的地方。
一、Android系统手机泄密 信息时代很严重 先从所有版本Android系统的通病数起。最让用户不齿的在于,近期美国《华尔街日报》聘用两位安全分析师发现,谷歌安卓系统手机和苹果iPhone手机会自动收集用户的行踪信息,并将这些私人信息返回给两家公司。调查发现,使用安卓系统的HTC手机能每隔几秒钟自动记录手机用户的姓名、位置、所在地
附近的无线网络信号强度及一个特殊电话识别码,并每小时多次将这些信息发送给谷歌。 二、拨号后自动挂断电话 通话BUG频繁出现 手机的基本功能就是通讯工具,无论科技发展到多么随心所欲的境界,这一点都是毋庸置疑的。但是Android系统却在最基本的通话功能上出了问题。很多论坛里的网友都反应的一件事情就是,Android系统手机在拨号通话时经常遇见这样的郁闷情况。拨号以后,电话尚未接通会被系统自动挂断。而且,这绝不是某款Android手机的问题,而是很多Android系统手机的通病。 三、对硬件配置要求高 制造成本增加 近期各种高频处理器,各种高RAM内存的手机频现,为玩家奉献了一场几乎华丽的视觉大餐。可以说谷歌Android系统在其中做了推波助澜的效果,原因很简单,Android系统的手机对硬件配置要求过高,厂商如果不推出高硬件标准的手机怎么在这个竞争激烈的时代立足呢?不过,我们可以换个角度考虑一下,这些高配置的手机价钱怎么样?如果你不是富二代,你肯定不会淡定的。
四、系统费电严重 安卓手机续航不足 应用程序实时更新产生不仅仅是白白跑掉的网络流量,还在于这些更新活动也导致手机电量白白浪费掉。在各种手机论坛中,我们见到最多的帖子就是抱怨某款手机的续航能力不足。如果是一款两款手机如此,说明是手机本身的电源
管理系统有缺陷,如果是绝大多数的安卓手机都这样,我们只能把矛头指向谷歌Android系统本身。
五、系统计算器计算有偏差 近日,在各大手机论坛和Android社区都会发现一个令人匪夷所思的帖子,不少网友都纷纷表示Android系统自带的计算器爆出低级错误,Android手机内置的计算器有些最简单的减法都会算错。例如在Android系统自带的计算器内输入14.52-14.49,正确结果应该是0.03,但是计算器结果显示的数字为0.0299999。
未来发展
2011年Google Android平台经理Eric Chu明白,虽然android智能手机用户在快速增长,但是付费应用的交易数量却表现惨淡。在圣弗朗西斯科举行的Inside Social Apps会议上,Chu明确表示Google对付费应用交易完全不满意。
虽然目前对于Google在2011年的Android发展战略仍缺乏具体地消息(Chu表示“敬请期待进一步消息”),但大致可以想到Google会在下面几个方面发力。 In——app payments system(应用内交易系统): Chu表示本季度Android将推出应用内交易系统,一年前苹果也有此类举措。在应用内交易系统中,用户在应用内购买(译者:比如购买更多的功能或游戏装备等等),这将有助于开发者利用发展迅速的虚拟货物移动市场来实现盈利。
Carrier billing(运营商计费): 12月,Google推出AT&T计费系统,用户可以通过手机话费来为应用付费,不需要采用另外一种支付系统。希望Google能在全球与更多的运营商进行类似的合作,Chu如此表示,另外还说与运营商建立付费系统虽然昂贵且耗时,但是对于用户来说是个很有价值的功能,同时也可以提高Android 应用的交易额。
Improve user discovery of apps in Market: Chu表示已经有一个团队在负责剔除Android Market中的劣质应用,还表示将制定市场排名算法以帮助用户更方便地发现最好的应用。
Getting social(社会化):Chu表示为了使得市场和Android更加社会化,Google将推出“最好的社交图”——Android address book(安卓通讯录),并且对开发者开发。Android address book将聚合了多渠道的用户联系人 ,而不仅仅是Google自己的通讯录。