1.1 Android简介
1.1.1 通信技术
在学习Android系统之前有必要了解一下通信技术。随着智能手机的发展,移动通信技术也在不断地升级,从最开始的1G、2G技术发展到现在的3G、4G技术。
• 1G:是指最初的模拟、仅限语音的蜂窝电话标准。摩托罗拉公司生产的第一代模拟制式手机使用的就是这个标准,类似于简单的无线电台,只能进行通话,并且通话是锁定在一定频率上的,这个频率也就是手机号码。这种标准存在一个很大的缺点,就是很容易被窃听。
• 2G:是指第2代移动通信技术,代表为GSM,以数字语音传输技术为核心。相对于1G技术来说2G已经很成熟了,它增加了接收数据的功能。以前常见的小灵通手机采用的就是2G技术,信号质量和通话质量都非常好。不仅如此,2G时代也有智能手机,可以支持一些简单的Java小程序,如UC浏览器、搜狗输入法等。
• 3G:是指将无线通信与国际互联网等多媒体通信相结合的移动通信系统。它能够处理图像、音乐、视频流等多种媒体形式,提供包括网页浏览、电话会议、电子商务等多种信息服务。相比前两代通信技术来说,3G技术在传输声音和数据的速度上有很大的提升。
• 4G:是指第4代移动通信技术,该技术包含TD-LTE和FDD-LTE两种制式。严格意义上来讲,LTE只是3.9G,尽管被宣传为4G无线标准,但还未达到4G的标准。只有升级版的LTE Advanced才满足国际电信联盟对4G的要求。4G集3G与WLAN于一体,能够快速传输数据、音频、视频和图像等。4G能够以100Mbit/s以上的速度下载,比家用宽带ADSL(4Mbit/s)快25倍,并能够满足几乎所有用户对于无线服务的要求。
以上四种通信技术,除了1G 技术以外,其他的三种技术最本质的区别就是传输速度,2G通信网的传输速度为9.6kbit/s,3G 通信网在室内、室外和行车的环境中能够分别支持至少2Mbit/s、384kbit/s以及144kbit/s的传输速度,4G通信网可以达到100Mbit/s。
1.1.2 Android起源
Android是一款基于Linux平台的开源操作系统,主要用于移动设备中,如智能手机和平板电脑等,由Google公司和开放手机联盟领导及开发。
Android操作系统最初由Andy Rubin(安迪·鲁宾)开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信运营商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。
Android一词最早出现于法国作家利尔亚当(Auguste Villiers de l'Isle-Adam)在1886年发表的科幻小说《未来夏娃》中,将外表像人的机器起名为Android。Android本意指“机器人”,Google公司将Android的标识设计为一个绿色机器人,表示Android系统符合环保概念。Android图标如图1-1所示。
图1-1 Android图标
2008年9月发布Android第1个版本Android 1.1。Android系统一经推出,版本升级非常快,几乎每隔半年就有一个新的版本发布。从Android 1.5版本开始,Android用甜点作为系统版本的代号。具体版本如下。
• 2009年4月30日,Android 1.5 Cupcake(纸杯蛋糕)正式发布。
• 2009年9月15日,Android 1.6 Donut(甜甜圈)版本发布。
• 2009年10月26日,Android 2.0/2.1 Éclair(松饼)版本发布。
• 2010年5月20日,Android 2.2/2.2.1 Froyo(冻酸奶)版本发布。
• 2010年12月7日,Android 2.3 Gingerbread(姜饼)版本发布。
• 2011年2月2日,Android 3.0 Honeycomb(蜂巢)版本发布。
• 2011年5月11日,Android 3.1 Honeycomb(蜂巢)版本发布。
• 2011年7月13日,Android 3.2 Honeycomb(蜂巢)版本发布。
• 2011年10月19日,Android 4.0 Ice Cream Sandwich(冰激凌三明治)版本发布。
• 2012年6月28日,Android 4.1 Jelly Bean(果冻豆)版本发布。
• 2012年10月30日,Android 4.2 Jelly Bean(果冻豆)版本发布。
• 2013年7月25日,Android 4.3 Jelly Bean(果冻豆)版本发布。
• 2013年9月4日,Android 4.4 KitKat(奇巧巧克力)版本发布。
• 2014年10月15日,Android 5.0 Lollipop(棒棒糖)版本发布。
• 2015年9月30日,Android 6.0 Marshmallow(棉花糖)版本发布。
• 2016年8月22日,Android 7.0Nougat(牛轧糖)版本发布。
以Android版本图标代表的Android发展史如图1-2所示。
图1-2 Android发展史
1.1.3 Android体系结构
Android系统采用分层架构,由高到低分为4层,依次是应用程序层、应用程序框架层、核心类库和Linux内核,如图1-3所示。
图1-3 Android体系结构
从图1-3可以看出Android体系的具体结构,接下来分别针对这几层进行分析。
1.应用程序层(Applications)
应用程序层是一个核心应用程序的集合,所有安装在手机上的应用程序都属于这一层,例如系统自带的联系人程序、短信程序,或者从Google Play上下载的小游戏等都属于应用程序层。
2.应用程序框架层(Application Framework)
应用程序框架层主要提供了构建应用程序时用到的各种API。Android自带的一些核心应用就是使用这些 API 完成的,例如视图(View)、活动管理器(Activity Manager)、通知管理器(Notification Manager)等,开发者也可以通过这些API来开发自己的应用程序。
3.核心类库(Libraries)
核心类库中包含了系统库及 Android 运行时库。系统库这一层主要是通过 C/C++库来为Android系统提供主要的特性支持,如OpenGL/ES库提供了3D绘图的支持,Webkit库提供了浏览器内核的支持。
Android运行时库(Android Runtime)主要提供了一些核心库,能够允许开发者使用Java语言来编写 Android 应用程序。另外,Android 运行时库中还包括了 Dalvik 虚拟机,它使得每一个Android应用都能运行在独立的进程当中,并且拥有一个自己的Dalvik虚拟机实例。相比于Java虚拟机,Dalvik虚拟机是专门为移动设备定制的,它针对手机内存、CPU性能等做了优化处理。
4.Linux内核(Linux Kernel)
Linux内核层为Android设备的各种硬件提供了底层的驱动,如显示驱动、音频驱动、照相机驱动、蓝牙驱动、电源管理驱动等。
1.1.4 Dalvik虚拟机
通过1.1.3小节的学习可知,在Android运行时库中包含了Dalvik虚拟机。Dalvik是Google公司自己设计用于Android平台的虚拟机,它可以简单地完成进程隔离和线程管理,并且可以提高内存的使用效率。每一个 Android应用程序在底层都会对应一个独立的 Dalvik 虚拟机实例,其代码在虚拟机的解析下得以执行。
很多人都认为Dalvik虚拟机是一个Java虚拟机,因为Android开发的编程语言恰恰是Java语言,但是这种说法并不准确。Dalvik虚拟机并不是按照Java虚拟机的规范来实现的,两者不兼容,而且也有很多的不同之处,接下来通过一个图进行对比说明,如图1-4所示。
图1-4 Java虚拟机和Dalvik虚拟机对比
从图1-4可以看出,Java虚拟机和Dalvik虚拟机主要有两大区别,一是它们编译后的文件不同,二是它们基于的架构不同,具体如下。
1.编译后的文件不同
Java虚拟机运行的是.class字节码文件,而Dalvik虚拟机运行的则是其专有的.dex文件。在Java程序中Java类会被翻译成一个或者多个字节码文件(.class),然后打包成.jar文件,之后Java虚拟机会从.class文件和.jar文件中获取相应的字节码。Android程序虽然也是使用Java语言进行编程,但是在翻译成.class文件后,还会通过工具将所有的.class文件转换成一个.dex文件,然后Dalvik虚拟机从其中读取指令和数据,最后的.odex文件是为了在运行过程中进一步提高性能,对.dex文件的进一步优化,能加快软件的加载速度和开启速度。
2.基于的架构不同
Java虚拟机是基于栈的架构,栈是一个连续的内存空间,取出和存入的速度比较慢,而Dalvik是基于寄存器的架构,寄存器是CPU上的一块缓存,寄存器的存取速度要比从内存中存取的速度快很多,这样就可以根据硬件来最大程度优化设备,更适合移动设备的使用。
需要说明的是,Android系统下的Dalvik虚拟机默认给每一个应用程序最多分配16MB内存,如果Android加载的资源超过这个值,就会报出OutOfMemoryError异常,因此一定要注意这个问题。
多学一招:ART模式
ART模式英文全称为Android Runtime,是谷歌Android 4.4系统新增的一种应用运行模式。与传统的 Dalvik 模式不同,ART 模式可以实现更为流畅的 Android 系统体验,不过只能在Android 4.4以上系统中采用此模式。
事实上谷歌的这次优化源于其收购的一家名为 Flexycore 的公司,该公司一直致力于Android系统的优化,而ART模式也是在该公司的优化方案上演进而来。
ART模式与Dalvik模式最大的不同在于,在启用ART模式后,系统在安装应用的时候会进行一次预编译,在安装应用程序时会先将代码转换为机器语言存储在本地,这样在运行程序时就不会每次都进行编译了,执行效率也大大提升。