第1章开始启程,你的第一行Android代码1第1章开始启程,你的第一行Android代码欢迎你来到Android世界!Android系统是目前世界上市场占有率最高的移动操作系统,不管你在哪里,几乎都可以看到人人手中都会有一部Android手机。虽然今天的Android世界欣欣向荣,可是你知道它的过去是什么样的吗?我们一起来看一看它的发展史吧。2003年10月,AndyRubin等人一起创办了Android公司。2005年8月谷歌收购了这家仅仅成立了22个月的公司,并让AndyRubin继续负责Android项目。在经过了数年的研发之后,谷歌终于在2008年推出了Android系统的第一个版本。但自那之后,Android的发展就一直受到重重阻挠。乔布斯自始至终认为Android是一个抄袭iPhone的产品,里面剽窃了诸多iPhone的创意,并声称一定要毁掉Android。而本身就是基于Linux开发的Android操作系统,在2010年被Linux团队从Linux内核主线中除名。又由于Android中的应用程序都是使用Java开发的,甲骨文则针对Android侵犯Java知识产权一事对谷歌提起了诉讼……可是,似乎再多的困难也阻挡不了Android快速前进的步伐。由于谷歌的开放政策,任何手机厂商和个人都能免费地获取到Android操作系统的源码,并且可以自由地使用和定制。三星、HTC、摩托罗拉、索爱等公司都推出了各自系列的Android手机,Android市场上百花齐放。仅仅推出两年后,Android就超过了已经霸占市场逾十年的诺基亚Symbian,成为了全球第一大智能手机操作系统,并且每天都还会有数百万台新的Android设备被激活。目前Android已经占据了全球智能手机操作系统70%以上的份额。说了这些,想必你已经体会到Android系统炙手可热的程度,并且迫不及待地想要加入到Android开发者的行列当中了吧。试想一下,十个人中有七个人的手机都可以运行你编写的应用程序,还有什么能比这个更诱人的呢?那么从今天起,我就作为你Android旅途中的导师,一步步地引导你成为一名出色的Android开发者。好了,现在我们就来一起初窥一下Android世界吧。经验值:+5目前经验值:5级别:萌级小菜鸟捡到宝物:Android前辈遗失的入门级通用修行卡一张。卡略有磨损,但仍可使用。第一行代码——Android21.1了解全貌,Android王国简介Android从面世以来到现在已经发布了近二十个版本了。在这几年的发展过程中,谷歌为Android王国建立了一个完整的生态系统。手机厂商、开发者、用户之间相互依存,共同推进着Android的蓬勃发展。开发者在其中扮演着不可或缺的角色,因为再优秀的操作系统没有开发者来制作丰富的应用程序也是难以得到大众用户喜爱的,相信没有多少人能够忍受没有QQ、微信的手机吧?而谷歌推出的GooglePlay更是给开发者带来了大量的机遇,只要你能制作出优秀的产品,在GooglePlay上获得了用户的认可,你就完全可以得到不错的经济回报,从而成为一名独立开发者,甚至是成功创业!那我们现在就以一个开发者的角度,去了解一下这个操作系统吧。纯理论型的东西也比较无聊,怕你看睡着了,因此我只挑重点介绍,这些东西跟你以后的开发工作都是息息相关的。1.1.1Android系统架构为了让你能够更好地理解Android系统是怎么工作的,我们先来看一下它的系统架构。Android大致可以分为四层架构,五块区域。1.Linux内核层Android系统是基于Linux2.6内核的,这一层为Android设备的各种硬件提供了底层的驱动,如显示驱动、音频驱动、照相机驱动、蓝牙驱动、Wi-Fi驱动、电源管理等。2.系统运行库层这一层通过一些C/C++库来为Android系统提供了主要的特性支持。如SQLite库提供了数据库的支持,OpenGL|ES库提供了3D绘图的支持,Webkit库提供了浏览器内核的支持等。同样在这一层还有Android运行时库,它主要提供了一些核心库,能够允许开发者使用Java语言来编写Android应用。另外Android运行时库中还包含了Dalvik虚拟机,它使得每一个Android应用都能运行在独立的进程当中,并且拥有一个自己的Dalvik虚拟机实例。相较于Java虚拟机,Dalvik是专门为移动设备定制的,它针对手机内存、CPU性能有限等情况做了优化处理。3.应用框架层这一层主要提供了构建应用程序时可能用到的各种API,Android自带的一些核心应用就是使用这些API完成的,开发者也可以通过使用这些API来构建自己的应用程序。4.应用层所有安装在手机上的应用程序都是属于这一层的,比如系统自带的联系人、短信等程序,或者是你从GooglePlay上下载的小游戏,当然还包括你自己开发的程序。第1章开始启程,你的第一行Android代码3结合图1.1你将会理解得更加深刻,图片源自维基百科。图1.11.1.2Android已发布的版本2008年9月,谷歌正式发布了Android1.0系统,这也是Android系统最早的版本。随后的几年,谷歌以惊人的速度不断地更新Android系统,2.1、2.2、2.3系统的推出使Android占据了大量的市场。2011年2月,谷歌发布了Android3.0系统,这个系统版本是专门为平板电脑设计的,但也是Android为数不多比较失败的版本,推出之后一直不见什么起色,市场份额也少得可怜。不过很快,在同年的10月,谷歌又发布了Android4.0系统,这个版本不再对手机和平板进行差异化区分,既可以应用在手机上也可以应用在平板上,除此之外还引入了不少新特性。目前最新的系统版本已经是4.4KitKat。第一行代码——Android4下表中列出了目前市场上主要的一些Android系统版本及其详细信息。你看到这张表格时,数据很可能已经发生了变化,查看最新的数据可以访问。版本号系统代号API市场占有率2.2Froyo81.2%2.3.3–2.3.7Gingerbread1019.0%3.2Honeycomb130.1%4.0.3–4.0.4IceCreamSandwich1515.2%4.1.xJellyBean1635.3%4.2.x1717.1%4.3189.6%4.4KitKat192.5%从上表中可以看出,目前4.0以上的系统已经占据了80%左右的Android市场份额,而且以后这个数字还会不断增加,因此我们本书中开发的程序也是主要面向4.0以上的系统,2.x的系统就不再去兼容了。1.1.3Android应用开发特色预告一下,你马上就要开始真正的Android开发旅程了。不过先别急,在开始之前我们再来一起看一看,Android系统到底提供了哪些东西,供我们可以开发出优秀的应用程序。1.四大组件Android系统四大组件分别是活动(Activity)、服务(Service)、广播接收器(BroadcastReceiver)和内容提供器(ContentProvider)。其中活动是所有Android应用程序的门面,凡是在应用中你看得到的东西,都是放在活动中的。而服务就比较低调了,你无法看到它,但它会一直在后台默默地运行,即使用户退出了应用,服务仍然是可以继续运行的。广播接收器可以允许你的应用接收来自各处的广播消息,比如电话、短信等,当然你的应用同样也可以向外发出广播消息。内容提供器则为应用程序之间共享数据提供了可能,比如你想要读取系统电话簿中的联系人,就需要通过内容提供器来实现。2.丰富的系统控件Android系统为开发者提供了丰富的系统控件,使得我们可以很轻松地编写出漂亮的界面。当然如果你品味比较高,不满足于系统自带的控件效果,也完全可以定制属于自己的控件。3.SQLite数据库Android系统还自带了这种轻量级、运算速度极快的嵌入式关系型数据库。它不仅第1章开始启程,你的第一行Android代码5支持标准的SQL语法,还可以通过Android封装好的API进行操作,让存储和读取数据变得非常方便。4.地理位置定位移动设备和PC相比起来,地理位置定位功能应该可以算是很大的一个亮点。现在的Android手机都内置有GPS,走到哪儿都可以定位到自己的位置,发挥你的想象就可以做出创意十足的应用,如果再结合上功能强大的地图功能,LBS这一领域潜力无限。5.强大的多媒体Android系统还提供了丰富的多媒体服务,如音乐、视频、录音、拍照、闹铃等等,这一切你都可以在程序中通过代码进行控制,让你的应用变得更加丰富多彩。6.传感器Android手机中都会内置多种传感器,如加速度传感器、方向传感器等,这也算是移动设备的一大特点。通过灵活地使用这些传感器,你可以做出很多在PC上根本无法实现的应用。既然有Android这样出色的系统给我们提供了这么丰富的工具,你还用担心做不出优秀的应用吗?好了,纯理论的东西也就介绍到这里,我知道你已经迫不及待想要开始真正的开发之旅了,那我们就开始启程吧!1.2手把手带你搭建开发环境俗话说得好,工欲善其事,必先利其器,开着记事本就想去开发Android程序显然不是明智之举,选择一个好的IDE可以极大幅度地提高你的开发效率,因此本节我就将手把手带着你把开发环境搭建起来。1.2.1准备所需要的软件我现在对你了解还并不多,但我希望你已经是一个颇有经验的Java程序员,这样你理解本书的内容时将会轻而易举,因为Android程序都是使用Java语言编写的。如果你对Java只是略有了解,那阅读本书应该会有一点困难,不过一边阅读一边补充Java知识也是可以的。但如果你对Java完全没有了解,那么我建议你可以暂时将本书放下,先买本介绍Java基础知识的书学上两个星期,把Java的基本语法和特性都学会了,再来继续阅读本书。好了,既然你已经阅读到这里,说明你已经掌握Java的基本用法了,那么开发Java程序时必备的JDK你一定已经安装好了。下面我们再来看一看开发Android程序除了JDK外,还需要哪些工具。1.AndroidSDKAndroidSDK是谷歌提供的Android开发工具包,在开发Android程序时,我们需第一行代码——Android6要通过引入该工具包,来使用Android相关的API。2.Eclipse相信所有Java开发者都一定会对这个工具非常地熟悉,它是Java开发神器,最好用的IDE工具之一。Eclipse是开源的,这使得有很多基于Eclipse制作的优秀IDE得以问世,如MyEclipse、Aptana等。但我觉得它最吸引人的地方并不在这儿,而是它超强的插件功能。Eclipse支持极多的插件工具,使得它不仅仅可以用来开发Java,还可以很轻松地支持几乎所有主流语言的开发,当然也非常适合Android开发。除了Eclipse外,同样适合开发Android程序的IDE还有IntelliJIDEA、AndroidStudio等。其中AndroidStudio是谷歌官方近期推出的新IDE,由于是专门为开发Android程序定制的,在Android领域大有要取代Eclipse的势头。不过本书中还是决定暂时继续使用Eclipse,因为AndroidStudio才推出不久,恐怕还不够稳定。另外你将来的同事大多数应该还是用的Eclipse,如果跟他们选择不同的IDE,在工作效率上可能要打点折扣了。3.ADTADT全称AndroidDevelopmentTools,是谷歌提供的一个Eclipse插件,用于在Eclipse中提供一个强大的、高度集成的Android开发环境。安装了ADT,你不仅可以联机调试,而且还能够模拟各种手机事件、分析你的程序性能等等。由于是Eclipse的插件,你不需要进行下载,在Eclipse中在线安装就可以了。1.2.2搭建开发环境你可以将上述的软件全部都准备好,