Android开发权威指南(第二版)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-08-06 09:57:48

点击下载

作者:李宁编著

出版社:人民邮电出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Android开发权威指南(第二版)

Android开发权威指南(第二版)试读:

前言

随着Android的超速发展,为了使Android更加稳定,以及更好地处理版本碎片化,Google公司承诺每年只发布一次Android的新版本,不过从最近几年看,Google公司完全没有遵守这个承诺,Android的版本发布越来越快,越来越频繁。

由于Android版本更新太块,而且大的升级有可能出现版本之间的不兼容,或增加了新的技术,所以就造成了目前市面上的Android书籍的内容严重滞后,这就造成了书中的很多例子在新版本的Android系统中根本无法成功运行。为了使读者尽可能跟上Android升级的脚步,笔者经过近一年的写作,将《Android开发权威指南》第1版进行了全面改版,增加了很多只有Android 4.x才有的新功能。所以,读者可以通过本书的学习全面掌握Android的最新技术。掌握这些技术除了可以显著提高自己的技术水平外,还可以让自己的职业生涯达到一个新的高度。而且,Android程序员目前的市场需求越来越大,这必然会为我们带来更多的就业和创业机会,这些机会都值得广大程序员好好把握!

本书的特点

本书是一本全面介绍Android应用开发的专著,全面介绍了在Android 4.2.2平台上应用开发的各种知识。与市面上的同类Android编程的图书不同,本书从Android的各个版本新增功能入手,介绍了Android各个主要版本之间的差异,这对于读者为不同Android版本开发应用至关重要。

本书具有的特点介绍如下。

1.知识点全面,覆盖面广

本书全面介绍了Android的各种应用开发知识,主要包括四大应用程序组件、布局、菜单、控件、资源和本地化、可视化UI设计、对话框、Toast和通知栏(Notification)、拖放技术、数据库技术、Android支持的各种组件技术、通信技术(蓝牙、NFC、网络等)、异步装载、推送技术、多媒体、2D绘图技术、OpenGL ES、动态壁纸、传感器、GPS、谷歌地图、人机交互、Android NDK开发、测试驱动开发、性能优化等。这些技术几乎覆盖了Android应用开发的每一个方面,其中有很多技术讲解得非常深入,例如,Activity从创建到销毁的过程中到底发生了什么;Intent、Intent Filter与Activity到底是什么关系;NFC技术在不同场合、不同领域的应用。其中有很多技术在其他同类的图书中是绝无仅有的。

2.最新版本,实战性强

本书采用了最新的Android版本(4.2.2),所以,书中示例使用的都是最新的技术。而且每一个知识点都采用了“项目驱动”的方式来讲解,这样在理解知识点所涉及的理论后,就可以很容易地进行实战演练。随书光盘中提供的数万行源代码可以供读者随时参考。

3.讲解细腻,授人以渔

现在市面上很多同类书尽管提供了大量的示例,但只是机械地Step by Step,并没有介绍其中的实现原理,而本书的很多示例将会进入到更深层来挖掘其中的奥秘。例如,对于动画渲染器来说,自定义的渲染器不能在XML文件中定义,那是为什么呢?本书会详细分析相关的Android SDK源代码来了解其中的奥秘。读者将从这些示例中了解到从官方文档和其他图书中无法了解到的信息,本书不仅授人以鱼,而且还授人以渔。

光盘内容

1.光盘说明

src:所有的源代码都在src目录中,每一章的代码都放在chxx目录中,例如,第5章的源代码目录是src/ch05。src.7z:为了方便读者将源代码复制到个人计算机上,还提供了一个压缩版本的源代码文件。specification:该目录中是NFC规范。tools:该目录中包含了一些反编译工具。software:该目录中包含了用于读写NFC标签的工具。tomcat:该目录中包含了Tomcat 7,并在其中内置了第27章使用的Servlet,可直接在Windows、Mac OS或Linux上启动Tomcat,但要设置JAVA_HOME环境变量,并且将<JDK安装目录>/bin路径设置到PATH环境变量中。

2.运行环境

本书的示例运行在JDK 6下,需要在Eclipse 3.4及以上版本中导入并运行本例。建议读者除了使用JDK 6外(如果编译Android源代码,必须使用JDK 6,如果只想运行随书光盘中的示例,也可以使用JDK 7),其他的工具尽量使用最新的版本。

随书光盘中的示例在Android 4.2.2上测试通过,如果读者使用的Android版本与本书示例使用的Android版本不同,请在Eclipse中修改当前工程的Android版本。修改的方法是打开工程的属性对话框,单击左侧的“Android”项,然后在右侧的列表中选择相应的Android版本即可。

另外,有一些示例并不能在Android模拟器上测试,例如,蓝牙、NFC等。运行这些示例需要读者自己准备带有相应硬件模块的Android设备。对于NFC应用,读者可以使用第45章介绍的NFC侠开发和测试NFC应用,但第26章的示例仍然使用传统的方式编写,所以,仍然需要在支持NFC的Android设备上运行。

3.注意事项(1)本书所有的Android项目都是Eclipse工程,建议读者将源代码从光盘复制到个人计算机上,然后使用Eclipse直接导入即可。(2)本书的第27章涉及一些Web的技术,其中使用到了Tomcat 7和Servlet,读者只要将光盘中的tomcat目录直复制到个人计算机上,并设置好JAVA_HOME环境变量,然后直接运行<Tomcat安装目录>/bin目录中的startup.sh或startup.bat脚本文件就可以启动Tomcat了。第27章使用的Servlet已经集成到Tomcat中,只要修改一下示例中的IP即可访问Servlet。(3)本书还有一些示例使用了笔者机器的IP地址,读者在运行这些示例时要将这些IP地址改成自己机器的IP地址。这些内容已经在相关的章节予以说明了,读者在运行这些示例时要仔细阅读相关的代码描述。

4.技术支持

如果您对光盘的内容有什么不清楚的,或任何与本书有关的问题都可以到http://blog.csdn.net/ nokiaguy或新浪微博http://weibo.com/androidguy与笔者联系。编辑联系邮箱为zhangtao@ptpress.com.cn。

第1章 初识Android平台

自从Google公司在2005年收购了成立仅22个月的Android公司以来,在Google公司以及其他软硬件企业的不断推动下,Android以其迅猛的速度成为了目前最流行,市场占用率最大的智能手机操作系统。

世界上第1部装有Android系统的手机于2008年9月23日发布,这部手机被称为T-Mobile G1。G1的发布也标志着Android正式加入了智能手机操作系统的激烈竞争。Google公司为了争取主动权,不惜重金举办Android开发者大赛,以便吸引更多开发者的目光,同时也可以使更多的优秀Android应用脱颖而出。Android在最近几年的火热让很多国内外企业看到了Android的光明前途。不仅国外的众多企业加入了Google公司主导的开发手机联盟,而且国内的很多企业,包括中国移动、联想、华为、魅族、小米等,也加入了Android的大家庭。甚至国内很多与手机业务八杆子打不着的企业(如360、阿里巴巴、盛大等)也加入了Android的混战,纷纷与其他硬件厂商合作推出了自己的手机。

2012年是Android手机井喷的一年。在这一年里国内外上市的Android手机种类可能多达数百款。然而,这也许只是个开始,在未来的几年内,随着加入Android阵营的企业不断增多,从事Android开发的程序员也会以几何级数增长。Android的市场占用率会进一步扩①大,也将会成为一个最具前景的手机操作系统。但不管是Android光明的前途,还是“钱”途,都需要千里之行,始于足下。对于那些还徘徊在Android大门之外的程序员,还在等什么呢?让Android成为你们要学习的下一种新技术的首选吧!当您读完这段文字时,说明您已经到达了Android大门之外,下面要做的一件事就是继续阅读本书,并让本书帮您打开这扇通往Android的圣殿之门,让我们一起开始Android之旅吧!【注】①实际上,Android可以安装在很多硬件上,例如,手机、平板电脑、基于X86架构的PC等,但由于Android最初是为手机设计的,所以本书会将Android称为手机操作系统。但读者要明白Android并不是只能运行在手机中。1.1 Android简介

Android的中文意思是“机器人”。但在移动领域,大家一定会将Android与Google联系起来。Android本身是一个基于Linux内核的操作系统,该系统是由一个有几十家科技公司和手机公司组成“开放手机②联盟”共同研发的,而且完全免费开源,这将大大降低手机设备的研发成本,甚至Android已成了“山寨”机的首选。【注】②由于Android源代码采用了Apache License协议发布,而该开源协议并没有强迫软件开源,所以Android系统中的部分软件可能是闭源的。

Android作为Google公司最具创新的产品之一,正受到越来越多的手机厂商、软件厂商、运营商及个人开发者的追捧。目前Android阵营主要包括HTC(宏达电)、T-Mobile、高通、三星、LG、摩托罗拉、ARM、软银移动、中国移动、华为等。虽然这些企业有着不同的背景,但它们都在Android平台的基础上不断创新,让用户体验到最优质的服务。下面欣赏几款具有代表性的Android设备。第一款毫无疑问,就是世界上第一部Android手机T-Mobile G1。这款手机带有一个物理键盘(硬键盘),可以通过侧划拉出。第二款则是Google的①Nexus S。该款手机是Google定制的第2款Android手机。尽管Nexus S刚出厂时预装的是Android 2.3,但由于与Google是直系亲属,所以总能比其他型号的手机更早享受到Android的最新版本。Nexus配有主频为1GHz的CPU和512MB的RAM。【注】①Nexus S由Google公司设计,三星代工制造,型号是I9020。Nexus One由HTC公司代工制造。

最后要出场的不是一部手机,而是一部7英寸平板电脑,这就是②Google公司在2012年6月份(7月12日正式发售)推出的Nexus 7。前面介绍的两款手机的性能与Nexus 7比起来差了很多。单从CPU来看,T-Mobile G1和Nexus S都是单核的;而Nexus 7的处理器是4核Tegra 3(执行并发操作会更快),主频为1.3GHz。除此之外,Nexus 7还搭配了一颗GeForce 12核 GPU显示处理器(处理图像的效果会更好)以及1GB内存,而且支持蓝牙、Wi-Fi、GPS、NFC等流行的通信技术。Nexus 7分为Wifi、3G和4G版本,不过没有后置摄像头(这点很不人性化)。但价格却很便宜(刚开始推出时8G Wifi版为199美元,16G Wifi版为249美元)。【注】②Nexus 7由Google公司设计,华硕公司代工制造。

扩展学习:OTA与手动升级Android系统

本节介绍的3款Android设备,有两款(Nexus S和Nexus 7)由Google公司设计,其他厂商代工制造。之所以会对Google公司定制的Android设备如此推崇,并不是因为这些设备完全超越其他Android设备,而是因为它们和Google公司的关系。由于这两款设备都是Google公司定制的,所以自然而然地成为了Google公司的试验机。Google公司在推出Android最新版的时候,总会在其他厂商对系统升级之前,率先在自己的试验机上通过OTA(OvertheAir,空中下载)方式升级系统。

当然,OTA升级可能只是在一定范围内进行(并不是所有的Nexus S、Nexus 7以及其他Nexus设备都会收到OTA通知)。对于那些未收到OTA通知的用户估计就会很闹心了。不过只要读者使用的是Nexus S、Nexus 7等Google公司定制的Android设备,就完全不必闹心了。Google公司已经为我们准备了Android的最新离线版本,读者可从如下的页面下载这些离线安装包。

https://developers.google.com/android/nexus/images

该页面包含了Nexus S、Nexus S(4G)、Galaxy Nexus、Nexus 4、Nexus 7、Nexus10等设备的最新Android ROM离线安装包。在未来可能还会包含更多的Nexus系列设备。读者可以下载这些ROM离线安装包(tgz压缩包格式),将其解压后,直接执行其中的脚本文件即可。但在执行脚本文件之前,手机需要先进入Bootloader模式(也称为工程模式),通常将手机关闭,然后按住电源键的同时再按住音量下键,手机通电后就会进入Bootloader模式。1.2 Android的制胜法宝

欣赏完这么多“超酷”的Android设备,现在来看一下Android到底有什么魔力,可以让众多的粉丝为之疯狂。据粗略统计,Android至少有如下8项制胜法宝。

开放性。Android平台是免费、开源的。而且Google公司通过与运营商、设备制造商、开发商等机构形成了战略联盟,希望通过共同制订标准使Android成为一个开放式的生态系统。

应用程序的权限由开发人员决定。编写过Symbian、Java ME程序的读者应该能体会到这些平台的程序在发布时有多麻烦。如果访问到某些限制级的API,不是出现各种各样的提示,就是根本无法运行。要想取消这些限制,就得向第三方的认证机构购买签名,而且价格不菲。而Android平台的应用程序就幸福得多。要使用限制级的API,只需要在自己的应用程序中配置一下即可,完全是DIY。这也在某种程度上降低了Android程序的开发成本。

我的平台我作主。Android上的所有应用程序都是可替换和扩展的,即使是拨号、Home这样的核心组件也是一样。只要我们有足够的想象力,就可以缔造出一个独一无二、完全属于自己的Android世界。

应用程序之间的无障碍沟通。应用程序之间的通信一直令人头痛,而在Android平台上无疑是一种享受。在Android平台上应用程序之间可以有多种通信方式,这些通信方式各有利弊,但正是这些通信方式使Android应用程序之间可以完美地在一起工作。

拥抱Web时代。如果想在Android应用程序中嵌入HTML、JavaScript,那真是再容易不过了。基于Webkit内核的WebView组件会完成一切。更值得一提的是,JavaScript还可以和Java无缝地整合在一起。

物理键盘和虚拟键盘双管齐下。从Android 1.5开始,Android同时支持物理键盘和虚拟键盘,从而使用户的输入方式多样化。尤其是虚拟键盘,已成为Android手机和平板电脑的主要输入方式。

个性的充分体现。21世纪是崇尚个性的时代。Android也紧随时代潮流提供了众多体现个性的功能。例如,Widget、Shortcut、Live WallPapers,无一不尽显手机的华丽与时尚。

舒适的开发环境。Android的主流开发环境是Eclipse + ADT+ Android SDK。它们可以非常容易地集成在一起,而且在开发环境中运行程序要比Symbian这样的传统手机操作系统更快,调试更方便。最新的ADT还支持功能更强大的可视化UI设计器,可以使界面布局的工作变得更轻松。

虽然Android的特点还有很多,但这已经不重要。重要的是现在Android已经成为万众瞩目的国际巨星,它的未来令人充满期望。1.3 Android的版本发展历程

自从Google公司在2007年11月5日发布Android的第一个版本(Android 1.0)以来,Android已经发布了17个版本,Android SDK进①行了16次升级。除了最初发布的两个版本(Android 1.0和 Android 1.1)没有用甜点来命名外,其他的主要版本都使用了相应的甜点来命名。本节会向读者展示Android的几个典型版本的发展演变。图1-1至图1-18是这些Android版本的标志性甜点的可爱造型。【注】①从Android 2.3.3升级到Android 2.3.4时,只是修正了一些Bug,Android SDK并未发生任何变化。所以Android 2.3.3和Android 2.3.4的API Level都是10。

1.3.1 Android 1.5(纸杯蛋糕)▲图1-1 Android 1.5(纸杯蛋糕,Cupcake)

Android 1.5的代号是Cupcake(纸杯蛋糕),发布时间为2009年4月30日。该系统主要的更新在于采用了WebKit内核的浏览器,可以在页面支持复制/粘贴以及搜索功能。系统支持立体蓝牙耳机连接(但Android SDK未提供蓝牙API),改善自动配备性能,使其更加稳定。主要的更新如下。

拍摄/播放影片,并支持将照片/视频上传到YouTube。

支持立体声蓝牙耳机,同时改善自动配对性能。

采用了WebKit内核的浏览器,支持复制/粘贴和在页面中搜索。

GPS性能大大提高。

提供屏幕虚拟键盘。

主屏幕增加音乐播放器和相框Widgets。

应用程序自动随着手机旋转(重力传感器)。

短信、Gmail、日历,浏览器的用户接口得到进一步地完善,如Gmail可以批量删除邮件。

相机启动速度更快,拍摄图片可以直接上传到Picasa。

来电照片显示。

1.3.2 Android 1.6(甜甜圈)

Google公司继发布Android 1.5的4个半月(2009年9月15日)后发布了Android 1.6,该版本的代号是Donut(甜甜圈),主要更新是支持更高的屏幕分辨率,支持OpenCore 2媒体引擎;支持CDMA网络以及优化拍照程序。具体更新内容如下。▲图1-2 Android 1.6(甜甜圈,Donut)

重新设计的Android Market。

支持CDMA网络。

支持文本转语音(Text-to-Speech)系统。

提供了快速搜索框。

全新的拍照接口。

可以查看应用程序的耗电情况。

支持虚拟专用网络(VPN)。

支持更高的屏幕分辨率。

支持OpenCore 2媒体引擎。

新增面向视觉或听觉困难人群的易用性插件。

1.3.3 Android 2.1(松饼)▲图1-3 Android 2.0/2.0.1/2.1(松饼,Eclair)

实际上Android 2.0、Android 2.0.1和Android 2.1均称为Eclair(松饼)。只是Android 2.1的用户最多,也是Android第一个比较稳定的版本,所以本小节以Android 2.1作为标题。

Google公司在2009年10月26日发布了Android 2.0,不久又升级到了Android 2.0.1和Android 2.1,到Android 2.1为止,Android已经得到了很大的完善。该版本优化了对硬件的支持;支持更高的屏幕分辨率;系统界面发生了明显变化;运行更流畅;支持HTML5。具体的更新如下。

优化硬件速度。①

添加了Car Home程序。【注】①一个车载导航(Car Home)应用程序,可以帮助Android用户将手机作为一个GPS导航设备使用。

支持更多的屏幕分辨率。

改良的用户界面。

新的浏览器的用户接口,并且支持HTML 5。

新型的联系人名单。

更好的白色/黑色背景比率。

改进Google Maps。

支持Microsoft Exchange。

支持内置相机闪光灯。

支持数码变焦。

改进的虚拟键盘。

支持蓝牙2.1,可以使用Android SDK开发基于蓝牙技术的程序。

支持动态桌面(动态壁纸)。

1.3.4 Android 2.2(冻酸奶)

在2010年5月20日,Google公司发布了Android 2.2操作系统,与随后的升级版Android 2.2.1统称为Froyo(冻酸奶)。该系统主要是对②系统进行了优化,增加了App2Sd功能。系统具体更新如下。【注】②App2Sd允许用户将软件安装到手机的SD卡上,这样就可以在手机内存有限的情况下安装更多的软件。▲图1-4 Android 2.2/2.2.1(冻酸奶,Froyo)

整体性能大幅度的提升。

增加了网络共享和便携式热点功能。

支持Flash。

增加了App2sd功能。

全新的软件商店。

提供了更多的WebAPI。

1.3.5 Android 2.3(姜饼)▲图1-5 Android 2.3(姜饼,Gingerbread)

在2010年12月7日,Google公司发布了Android 2.3,该版本代号为Gingerbread(姜饼),一直到2012年底,Android 2.3的市场占有率仍然很高。该系统优化了系统界面,使其操作更加流畅;支持前置摄像头以及NFC技术。系统具体更新如下。

增加了新的垃圾回收和优化处理事件。

新的管理窗口和生命周期的框架。

支持VP8和WebM视频格式,提供AAC和AMR宽频编码,提供了新的音频效果器。

支持前置摄像头、SIP/VOIP和NFC(近场通信)。

简化界面、速度提升。

更快、更直观的文字输入。

一键文字选择和复制/粘贴。

改进的电源管理系统。

新的应用程序管理方式。①

增加In-app purchases功能。【注】①In-app purchases技术可以使用户不用离开软件就可以购买附加项目,例如,购买游戏装备。这是除了“付费应用”、“移动广告”外的第3种赢利模式。

1.3.6 Android 3.0(蜂巢)

Google公司在2011年开始进入平板电脑市场,并在2011年发布了3个专门用于平板电脑的Android版本(3.0、3.1和3.2),这3个版本的代号统称为Honeycomb(蜂巢)。这一系列的更新主要是针对平板设备,让Android系统可以更好地支持平板。系统具体更新如下。▲图1-6 Android 3.0/3.1/3.2(蜂巢,Honeycomb)

全新设计的UI,用于增强网页浏览功能。

经过优化的Gmail电子邮箱。

全面支持GoogleMaps。

任务管理器可滚动,支持USB 输入设备(键盘、鼠标等)。

支持Google TV,可以支持XBOX 360无线手柄。

Widget更进一步完善,可以更加容易地定制屏幕Widget插件。

支持7英寸设备。

引入了应用显示缩放功能。

1.3.7 Android 4.0(冰激凌三明治)▲图1-7 Android 4.0(冰激凌三明治,Ice Cream Sandwich)

在2011年10月19日,Google公司发布了Android 4.0,代号为Ice Cream Sandwich(冰激凌三明治)。该系统将手机与平板设备进行整合,拥有全新的UI界面和Linux内核,支持虚拟按键。具体更新如下。

全新的UI界面。

全新的Chrome Lite浏览器,支持离线阅读、标签页、隐身浏览模式等功能。

截图功能。

更强大的图片编辑功能。

自带照片应用堪比Instagram,可以加滤镜、加相框,进行360°全景拍摄,照片还能根据地点来排序。

Gmail加入手势、离线搜索功能,UI更强大。

新增流量管理工具,可具体查看每个应用产生的流量。

正在运行的程序可以像电脑一样进行互相切换。

人脸识别功能,同时前置摄像头可以进行面部解锁。

系统优化、速度更快。

支持虚拟按键,手机可以不再拥有任何按键。

更直观的程序列表。

平板电脑和智能手机通用。

支持更大的分辨率。

专为双核处理器编写的优化驱动。

全新的Linux内核(Android 4.0已经采用的Linux内核版本是3.0)。

增强的复制粘贴功能。

全新的通知栏。

更加丰富的数据传输功能。

支持更多的传感器。

全新的3D驱动,游戏支持能力得到提升。

全新的谷歌电子市场(Google Play)。

增强了桌面插件自定义功能。

1.3.8 Android 4.1/4.2(果冻豆)▲图1-8 Android 4.1(果冻豆,Jelly Bean)

在2012年6月28日,Google公司发布了Android 4.1,系统代号为Jelly Bean(果冻豆),在几个月后,又发布了Android 4.2。系统代号仍然是Jelly Bean(估计是Google的甜点名不够用了,要省着点用)。Android 4.1引入了三重缓冲显示技术,让界面更加流畅,功能方面也有增加。系统具体改进如下。

UI更加流畅。

主界面图标自动排列等功能。

语音键盘,支持离线语音输入。

支持的语言增多。

盲文输入器。

拍照能力提升。

通知中心更加强大。

优化搜索。①

支持Google Now。【注】①Google Now是Google公司开发的语音搜索技术,类似于苹果的siri。但与siri不同的是,Google Now只专注于搜索,而且相应速度要比siri快。业界普遍认为Google Now要比siri的实用性更强。毕竟以目前的人工智能技术还无法实现像科幻电影那样完美的人机交互功能。

为Google Play增加新功能。

Android 4.2的改进如下。

支持第2个屏幕。

锁屏Widget。

多用户。②

RTL布局。【注】②一种从右到左的布局,详细介绍请阅读8.4.6小节的内容。

增强的Renderscript。1.4 Android的系统架构

通过前面的介绍,我们对Android的特点已经有了一个初步的了解。本节将介绍Android的系统构架。图1-9所示为从技术层面描述了Android系统架构中各层的关系。▲图1-9 Android系统架构中的层次关系

从图1-9所示可以看出Android系统架构分为4层,从高到低分别是应用层、应用框架层、系统运行库层和Linux内核层。下面将对这4层进行简单的介绍。

应用层。该层由运行在Dalvik虚拟机(Google公司为Android专门设计的基于寄存器的Java虚拟机,运行Java程序的速度比JVM更快)上的应用程序(主要由Java语言编写)组成。例如,日历、地图、浏览器、联系人管理。

应用框架层。该层主要由View、通知管理器(Notification Manager)、活动管理器(Activity Manager)等由开发人员直接调用的API组成(这些API主要也由Java语言编写)。

系统运行库层。Java本身是不能直接访问硬件的。要想让Java访问硬件,必须使用NDK才可以。NDK是一些由C/C++语言编写的库(主要是*.so文件)。这些程序也是该层的主要组成部分。该层主要包括C语言标准库、多媒体库、OpenGL ES、SQLite、Webkit、Dalvik虚拟机等。也就是说,该层是对应用框架层提供支持的层。

Linux内核层。该层主要包括驱动、内存管理、进程管理、网络协议栈等组件。目前Android 4.1的Linux内核版本是Linux 3.0.31。1.5 小结

本章从宏观的角度向读者介绍了Android的特点以及版本的发展历程。Android的发展基本上就是从丑小鸭到白天鹅的过程。Android刚问世时的两个版本(1.0和1.1)表现得非常糟糕。然而,Android经过了数年的发展和历练(这一点从1.3节的内容就可以看出来),功能、性能、稳定性、UI都得到了质的飞跃。最新版的Android 4.2在各方面足以和Apple的IOS 6抗衡。那么在未来的3年或5年,Android又会得到怎样的发展呢!也许那些喜欢吃甜点的“Android控”们会一边阅读本书的内容,一边憧憬着Android美好的未来!第2章 搭建Android开发和测试环境

本章讲解了如何搭建Android的开发和环境,这也是学习Android开发的第一步,毕竟,除了那些顶级的技术大师,很少有人会尝试用记事本来编写较复杂的Android程序。Android的开发环境分为两部分:Android应用程序和Android NDK。在最新的ADT插件中同时包含了这两部分的开发工具,这一点会在后面的章节中详细讨论。

如果只是安装了Android开发环境是无法测试Android程序的,因此还需要配置一下Android程序的测试环境,包括Android虚拟设备(AVD)和真机测试环境。如果读者顺利搭建完成了本章的开发和测试环境,就可以开始根据下一章的内容学习如何开发我们的第一个Android应用程序。当然,如果读者对Android已经入门了,可以跳过本章和下一章的内容,继续学习接下来的章节。

本章只介绍在Windows 7下如何配置Android的开发和测试环境。其他Windows版本仍可以使用本章提到的安装包,如果读者使用的是其他类型的操作系统,例如,Mac OS X、Linux,请下载相应操作系统的SDK。安装方法与Windows上的Android开发和测试环境类似。

为了方便读者,这些安装包都放到了随书光盘的sdk目录中。不仅如此,在随书光盘中还带了一个Ubuntu Linux12.04LTS的VMWare①虚拟机文件,该虚拟环境已经配置了最新的Android开发和测试环境,并包含了本书所有的源代码。读者可以完全在虚拟环境中运行本书的例子。【注】①由于版权原因,在随书光盘中只能带Linux的虚拟机文件。2.1 搭建Android开发环境需要些什么

Google公司推荐的Android开发环境是Eclipse + ADT。除了这两个工具外,还必须安装一些其他的SDK,并在Eclipse中进行设置。建议读者尽可能使用最新版本的SDK和开发工具。搭建Android开发环境必须的工具和SDK如下:

JDK(1.6及以上版本);②

Eclipse(3.4或以上版本);【注】②本书使用的是Eclipse 4.2。建议读者下载Eclipse IDE for Java EE Developers。

Android SDK;

ADT(Android Development Tools,开发Android程序的Eclipse插件);③

Android NDK。【注】③在老版本的Eclipse中不包含C/C++开发环境,所以要想在Eclipse中开发Android NDK程序,必须要安装CDT(C\C++ Development Toolkit)插件。而在新版本的Eclipse中已经包含了C/C++开发环境,所以不需要再安装CDT插件了。2.2 安装Java开发环境

开发Android应用程序主要使用Java开发环境,因此,搭建Android开发环境之前必须要搭建Java开发环境。主要包括JDK和Eclipse的安装和配置。

2.2.1 安装JDK

JDK原来是Sun公司开发的Java运行和开发环境,现在属于Oracle公司。读者可以到如下的网站地址下载JDK的最新版本。

http://www.oracle.com/technetwork/java/javase/downloads/index.html

开发Android应用程序只要下载Java SE即可。目前最新版本是①Java SE 7。当然,读者也可以下载Java SE 6。如果只开发Android应用程序,使用哪个版本都可以。但要编译Android源代码,就必须②使用Java SE 6了。【注】①JDK分为3类,分别用来开发企业级应用(包括Web、EJB等)、桌面应用和移动应用。分别对应Java EE、Java SE和Java ME。Java EE包含了Java SE。开发Android应用程序一般下载Java SE即可。【注】②Android源代码中的某些配置限制了只能使用Java SE 6进行编译。

不管读者下载哪个Java SE版本,进入下载页面后,都会出现如图2-1所示的下载页面。选择左上角的“Accept License Agreement”单选钮后即可下载相应平台上的JDK。

对于Java SE 6来说,并未直接提供Mac OS X下的安装包,因此,使用Mac OS X进行Android开发的读者需要使用Mac OS X本身的更新来安装JDK。但在Java SE 7的下载页面中直接提供了Mac OS X平台的JDK安装包(dmg文件)。读者直接下载该文件安装即可。

如果读者不想使用安装包来安装JDK,也可以将其他机器上安装好的JDK复制到自己的机器上,并设置PATH和JAVA_HOME环境变量。JAVA_HOME指向JDK的安装目录,PATH指向<JDK安装目录>/bin。如果在Windows控制台中执行java –version命令会显示如图2-2所示的信息,说明JDK已经安装成功。▲图2-1 下载Java SE 7的页面▲图2-2 显示JDK版本

2.2.2 安装和配置Eclipse

读者可以到http://www.eclipse.org/downloads下载Eclipse的最新版本。建议下载Eclipse IDE for Java EE Developers版本(下载列表的第一项)。

如果读者按着上一小节的步骤完成了JDK的安装和配置,只要直接将Eclipse压缩包解压,并执行eclipse.exe文件就可以运行Eclipse了。

为了使Eclipse更符合自己的要求,还可以对Eclipse进行一些配置。例如,常用的配置如下:

1.改变默认Java编辑器字体

由于Java编辑器用的频率最高,所以为了长时间看屏幕不至于很累,可以通过单击“Window”> “Preferences”菜单项打开“Preferences”对话框,在左侧的树形列表中选择“General”>“Appearance”> “Colors and Fonts”,在右侧的树形列表中选择“Java”>“Java Editor Text Font”,如图2-3所示。然后直接编辑文本字体即可。▲图2-3 设置Java编辑器的字体

2.显示行号

在“Preferences”对话框左侧的树形列表中选择“General”>“Editors”>“Text Editors”,并选中右侧的“Show line numbers”复选框后,Eclipse中所有的编辑器都会显示行号了。

3.修改Java的默认代码格式

在编写Java程序时经常会格式化代码(默认快捷键:Ctrl+Shift①+F)。但Eclipse默认的代码格式可能不符合一部分人的习惯,所以可以在“Preferences”对话框中进行设置。选择左侧树形列表的“Java”>“Code Style”>“Formatter”项,单击右侧的“New”按钮新建一个格式化配置,然后就可以设置各种代码格式了(如缩进、代码换行等)。还可以通过“Export All”按钮导出设置,以后再重新安装Eclipse时只需要导入该设置即可。【注】①Window和Linux下的Eclipse的格式化代码快捷键是Ctrl+Shift+F,Mac OS X下的格式化代码快捷键是Command+Shift+F。

4.使Java编辑器更智能

用过微软的Visual Studio的读者都可以体会到,在输入第1个字符时就会自动显示内容助手提示。而在Eclipse中需要输入“.”或按Content Assist快捷键(默认是Atl+/)才能显示内容助手提示。不过Eclipse也可以通过设置来实现和Visual Studio相同的效果。

打开“Preferences”对话框,在左侧树形列表中选择“Java”>“Editor”>“Content Assist”,在右侧的面板下方找到“Auto activation triggers for Java”文本框。默认该文本框中只有一个“.”。读者可以在“.”后面输入26个小写字母,26个大写字母,以及“@”等字符,如图2-4所示。这样在第1次键入小写字母、大写字母等字符时就会自动显示内容助手提示了。▲图2-4 输入触发内容助手提示的字符2.3 安装Android开发环境

Android开发环境包括Android SDK和ADT插件。如果想开发Android NDK程序,还需要安装和配置Android NDK。由于最新版本Eclipse已经自带C/C++开发环境,所以就不需要安装CDT了。

2.3.1 下载和安装Android SDK

读者可以从http://developer.android.com/sdk/index.html下载Android?SDK的最新版本。①

Android SDK是在线安装,所以从上面网站地址下载的安装包实际上只是一个空壳,下载后,在Android SDK安装目录有一个SDK Manager.exe文件,直接运行该文件就会运行该程序,主界面如图2-5所示。该程序会从Google公司官网获取Android SDK目前支持的Android版本安装包列表,因此在启动该程序之前需要有快速和稳定的Internet连接。读者可以从这个列表中选择相应的Android版本。然②后单击界面右下角的“Install packages”按钮进行安装,安装过程仍然需要Internet连接。在图2-5所示的列表中,Tools是必须安装的,其他的Android版本可选,但一般都会至少安装一个Android版本。如果读者选择了较多的Package,在线安装的时间就会比较长,需要耐心等待。如果读者不想花很长时间安装Android SDK,也可以从其他机器上复制已经安装好的Android SDK到本机。为了以后安装方便,在本机安装完Android SDK后,可以将其备份。再安装Android SDK,只需将备份复制到本机即可。【注】①Windows版的Android SDK安装包是一个可执行文件,直接安装即可。Mac OS X和Linux版的Android SDK安装包是压缩文件,直接解压即可。【注】②如果选择已经安装的Android版本或Tools,“Install packages”按钮是不可选的,但可以单击“Delete n packages”按钮卸载已安装的文件。其中n是已经安装的package数。

Android SDK安装成功后,会看到如图2-6所示的Android SDK根目录结构。platforms目录包含当前Android SDK支持的所有版本,如图2-7所示。▲图2-5 安装Android SDK

2.3.2 下载和安装Android NDK

Android NDK允许使用C/C++开发Linux平台的.so库文件,并将该文件嵌入到Android应用程序(APK文件)中。Android NDK采用了离线的方式安装,读者从下面的地址下载相应平台的压缩包,然后解压即可。

http://developer.android.com/tools/sdk/ndk/index.html

如果读者在Windows下使用Android NDK,还需要安装cygwin③。这方面的详细内容会在后面专门介绍开发Android NDK的章节详细讨论。【注】③一套在Windows平台模拟Linux开发环境的工具。使用cygwin可以在Windows平台编译出Linux平台下运行的程序,包括可执行文件和.so动态库。  ▲图2-6 Android SDK根目录结构▲图2-7 已经安装的所有Android SDK版本

2.3.3 安装和配置Eclipse插件:ADT

Eclipse需要安装ADT插件才能开发Android应用程序。读者可以从下面的网站地址获取在线安装ADT的Url或离线安装ADT的安装包下载地址。

http://developer.android.com/sdk/installing/installing-adt.html

如果要在线安装ADT,需要单击“Help”>“Install New Software”菜单项,打开“Install”对话框,单击右侧的“Add”按钮弹出“Add Repository”对话框,在“Name”文本框中输入adt(或其他名字,但不能和系统已有的名字重复),在“Location”文本框中输入如下的网站地址。

http://dl-ssl.google.com/android/eclipse

然后单击“OK”按钮关闭“Add Repository”对话框,就会在“Install”对话框显示ADT包含的安装列表,展开后如图2-8所示。然后单击“Next”按钮按着提示安装即可(安装的过程中需要访问Internet)。▲图2-8 在线安装ADT插件

如果读者下载的是ADT的离线安装包。需要单击“Add Repository”对话框中右侧的“Archive”按钮选择这个安装包,其他的步骤和在线安装类似。

如果成功安装ADT插件,会在Eclipse的工具栏出现两个按钮,如图2-9中黑框中所示。

其中带向下箭头的是Android SDK Manager,单击该按钮会弹出与2.3.1小节如图2-5所示相同的界面。另一个按钮是Android Virtual Device Manager。在2.4.1小节会详细介绍这个功能。

安装完ADT,还需要设置ADT。打开“Preferences”对话框,单击左侧的“Android”项目,在右侧的“SDK Location”文本框中输入Android SDK的安装目录,单击界面下方的“Apply”按钮(由于列表太长,需要滚动列表才能看到该按钮),就会显示当前Android SDK支持的所有Android版本(需要等一会才显示),如图2-10所示。▲图2-9 ADT带的两个按钮▲图2-10 设置Android SDK路径

然后选中“Android”>“NDK”,在右侧的“SDK Location”输入Android NDK的安装路径,然后单击“OK”按钮关闭“Preferences”对话框。2.4 配置Android测试环境

Android应用程序可以在Android模拟器或真机上测试,本节将介绍如何配置这两种测试环境。在下一章会给出一个简单的例子,并使用本节配置的环境进行测试。

2.4.1 建立Android虚拟设备(AVD)

由于Android 版本众多,而且手机的分辨率也有很大差异,所以在启动Android模拟器之前至少要指定一个Android版本和分辨率。指定了这些信息后,就成为了一个Android虚拟设备(AVD,Android Virtual Device)。所以在使用Android模拟器之前,需要先建立一个AVD。

在Android SDK安装目录找到并执行AVD Manager.exe文件或直接用ADT在Eclipse中的按钮启动AVD Manager。然后单击界面右侧的“New”按钮,在弹出的“Create new Android Virtual Device(AVD)”对话框中按图2-11所示输入相关内容。首先在Target列表中选择Android版本,然后在“Size”文本框中输入SD卡的尺寸(大于8MB),在内置(Built-in)列表中选择一个屏幕尺寸。最后单击“Create AVD”按钮建立AVD。

系统中所有已经建立的AVD会在如图2-12所示的界面中显示。▲图2-11 建立AVD▲图2-12 AVD列表

2.4.2 启动Android模拟器

如果不事先启动Android模拟器,在运行Android应用程序时会自动启动一个相应版本的Android模拟器,但最好事先启动一个Android模拟器实例,这样每次程序会直接在Android模拟器中运行,无需每次都启动Android模拟器。

现在打开“Android Virtual Device Manager”对话框,如图2-12所示。选择一个已经建立的AVD,然后单击右侧的“Start”按钮,会弹出一个“Launch Options”对话框,直接单击“Launch”按钮启动①Android模拟器。如果成功启动了Android模拟器,会显示如图2-13所示的模拟器界面。【注】①Android模拟器的启动时间较长(一般在30秒到1分钟之间),请耐心等待。▲图2-13 Android模拟器主界面

按住图2-13所示界面下方的小锁,并向右滑动将Android模拟器解锁。如果是第1次启动Android模拟器,解锁后会显示如图2-14所示的欢迎屏,单击下方的“OK”按钮关闭欢迎屏,就会显示如图2-15所示的Home界面。▲图2-14 Android模拟器的欢迎屏▲图2-15 Android模拟器的Home界面

如果运行Android模拟器的PC可以上网,那么Android模拟器同样可以上网。Android模拟器可以测试大多数功能,但一些与硬件相关的功能无法用Android模拟器测试,例如,蓝牙、传感器、NFC。要想测试这些功能,必须要使用真机才行。

注意

同一个AVD只能启动一个Android模拟器实例。如果要启动多个Android模拟器实例,需要建立多个AVD。

2.4.3 安装真机测试环境

尽管在Android模拟器中可以测试大多数Android应用程序,但在Android模拟器中运行的速度非常慢(与真机对比),而且将APK安装到Android模拟器上的过程也非常慢,最糟糕的是根本无法测试使用蓝牙、传感器、NFC等技术的程序。因此,如果条件允许,建议读者尽量使用真机进行测试。

使用真机进行测试首先要用USB线将手机与PC相连。经过笔者测试,Ubuntu Linux和Mac OS X在不用安装其他驱动的情况下可以检①②测到几乎所有的Android手机和平板电脑,但Windows就没那么幸运了。如果Windows中只安装了Android开发环境,基本上检测不到任何Android设备(Android模拟器除外),所以要为特定的Android手机安装相应的驱动程序。不过大多数读者并不知道上哪下载这些驱动。这里笔者介绍一个简单的方法,就是利用一些手机管理软件自带的驱动让Windows识别我们的Android手机或平板电脑。【注】①笔者测试了三星、HTC、摩托罗拉、LG、Dell、华为、小米科技生产的几十款手机或平板电脑,Mac OS X和Ubuntu Linux均可以检测到。【注】②这里主要指国内使用最多的Windows XP和Windows 7。③

现在这类的手机管理软件很多,笔者首推91手机助手,经过长时间测试,91手机助手带的驱动可以很好地与Android开发环境融合,没有出现过任何问题。【注】③官方网站:http://zs.91.com。

注意

笔者从事了多年Android培训,接触过的很多学员使用了其他手④机管理软件,发现有些手机管理软件会影响adb等工具的使用。读者在使用这些手机管理软件时应注意这一点,例如,发现adb服务总是启动不起来,或Android工程总是有错误,可能就是这个原因,一般将这些手机管理软件卸载就会恢复正常。【注】④Android SDK带了一个命令行工具,用于为Android设备服务(功能之一就是作为一个Service使用),也可以通过一系列命令操作Android设备(包括Android模拟器和真机)。

安装完91手机助手后,将手机用USB线与PC连接,并运行91手机助手。第一次运行会安装驱动程序,安装完后,如果91手机助手可以检测到手机,那么Android开发环境就可以检测到Android手机①。要想知道PC是否检测到Android设备,或有多少部Android设备连接到PC上,可以使用adb devices命令(adb在<Android SDK安装目录>/platform-tools目录中)。读者可以将该目录设置到PATH环境变量中。执行adb devices命令后,如果输出类似图2-16所示的信息,说明已经检测出连接到PC的Android手机了(第1项是Android手机,第2项是Android模拟器)。【注】①Android SDK通过adb检测连接到PC的Android设备(包括Android模拟器、Android手机和Android平板电脑)。▲图2-16 连接到PC 的Android 设备列表

多学一招:无法检测到Android手机的解决方案

如果按着前面的方法执行adb devices命令仍然没检测到自己的Android手机,可以进入Android手机的设置界面,并进入“开发者选项”列表项。找到并选中“USB调试”列表项后,会出现一个确认对话框,单击“确定”按钮即可,这样PC就可以检测到Android手机了。如果读者使用的是Android 4.2或以上版本,Google默认将“开发者选项”隐藏了,读者可以通过如下方法找回“开发者选项”。

第1步:进入设置中的“关于手机”或“关于平板电脑”,找到最下面一项“版本号”,如图2-17所示。

第2步:单击“版本号”7次,没错,是7次,就会提示已进入开发者模式,然后在设置的倒数第2项就看到了“开发者选项”,如图2-18所示。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载