- 精通Android:网络开发
- 王东华编著
- 8字
- 2025-02-15 23:23:34
第1篇 基础知识篇
第1章 Android技术概述
Android是一种移动智能设备(手机、平板电脑等)操作系统,是建立在Linux开源系统基础之上的,能够为企业和开发人员迅速建立移动智能设备软件的解决方案。虽然Android外形比较简单,但是其功能十分强大,已经成为当前软件开发的一股新兴力量。从2011年开始到现在,Android一直占据全球智能手机操作系统市场占有率第一的宝座。本章将简单介绍Android的发展历程和背景,并介绍搭建Android应用开发环境的基本知识,为读者步入本书后面知识的学习打下基础。
1.1 智能手机系统介绍
在Android系统诞生之前,智能手机这个新鲜事物大大丰富了人们的生活,得到了广大手机用户的青睐。各大手机厂商在利益的驱动之下,纷纷建立了各种智能手机操作系统用以占领市场。Android系统就是在这个风起云涌的历史背景下诞生的。
1.1.1 何谓智能手机
智能手机是指具有像个人计算机(俗称个人电脑)那样强大的功能,拥有独立的操作系统,用户可以自行安装应用软件、游戏等第三方服务商提供的程序,并且可以通过移动通信网络接入到无线网络中。在Android系统诞生之前已经有很多优秀的智能手机产品,例如家喻户晓的Symbian系列和微软的Windows Mobile系列等。
一般来说,智能手机必须具备如下所示的功能:
(1)操作系统必须支持新应用的安装;
(2)芯片拥有高速度处理的能力;
(3)可以播放各种音频和视频文件;
(4)具有大存储芯片和存储扩展能力;
(5)支持GPS导航。
根据上述标准,手机联盟公布了智能手机的主要特点,具体说明如下所示:
(1)具备普通手机的所有功能,例如拨打、接听电话和收发短信等;
(2)是一个开放性的操作系统,在系统上可以安装第三方应用程序,从而实现功能的无限扩充;
(3)具备上网功能,如可以浏览网页;
(4)具备PDA的功能,例如能够实现个人信息管理、日程记事、任务安排、多媒体应用、浏览网页等功能;
(5)扩展性能强,可以根据个人需要扩展机器的功能。
1.1.2 Android 5.0的突出变化
2014年10月15日,谷歌发布Android 5.0版本,并在26日提供给开发者下载开发包,如图1-1所示。

图1-1 谷歌推出Android 5.0
和以往版本相比,Android 5.0版本的最突出特性如下所示。
(1)“Material”主题
Android工程负责人Dave Burke表示,开发者在开发新应用时可选择一个被称为“Material”的主题,该主题支持新的动画效果、实时3D阴影显示以及其他多项新功能;在Demo中,他使用了拨号界面做介绍,所有的操作都十分流畅;随后Dave Burke介绍了新的强化的通知中心,通过下滑操作,可以看到所有的通知;然后,其开始利用游戏介绍新的消息系统Heads Up,玩游戏时,如果有电话拨打进来,屏幕顶端会出现一个通知框,如果向左右滑动手指,则可以忽略来电,这样的设计能尽量保证不打断用户的当前操作。
(2)新Android Wear发布
Android工程部总监David Singleton介绍了穿戴设备相关开发。Singleton通过LG G Watch智能手表展示Android Wear系统,智能手表通过振动提醒穿戴者有消息、来电。用户可上下滑动屏幕来翻页通知内容。
完整的Android Wear SDK将会发布,其API与标准版Android API基本一致,开发人员移植应用不存在难度。Android Wear SDK会自动同步通知到Android,开发者可以开发语音回复和页面回复的应用程序。
(3)Android TV发布
Android TV是一套可用于电视机顶盒的系统,有相应的SDK。Android TV需要一个D Pad来进行语音控制,其支持HDMI和接收器等视频信号输入。系统本身是覆盖在视频之上的,如搜索菜单、控制菜单等。Android TV的核心优势是搜索(基于Google Now)。用户可以用Android Wear智能手表设备来控制Android TV。Android TV支持谷歌Cast技术,也就是说用户可以通过这个系统把电视当作Chromecast电视棒使用。谷歌Play也专门开辟了Android TV应用类别。
(4)Android Auto系统发布
谷歌发布Android Auto系统,面向未来汽车市场。Android Auto的核心将是导航、通信和音乐。当Android智能手机与Android Auto系统连接时,手机屏幕能投射到车载屏幕上。Android Auto可以进行环境感知和语音控制,它的主界面与谷歌Now并无二致。虽然Android Auto可以被看作是基于Android系统的车载GPS,但考虑到谷歌Now自然语言搜索的强大性能,“人车对话”则达到了一个新的高度。
(5)全新设计的通知系统
Android 5.0带来了全新的通知系统。除了界面有较大改变之外,谷歌还调整了通知中心的信息展示规则——最重要的信息将被显示出来,而次要信息则是会被隐藏。当然,如果需要查看全部信息,则继续向下滑动即可——有些类似展示一叠扑克牌的手法,也就是用户首先看到的是表面上的一张牌,然后滑动,这样一来隐藏在下方的扑克牌就会展示出来。
1.2 搭建Android应用开发环境
“工欲善其事,必先利其器”出自《论语》,意思是要想高效地完成一件事,需要有一个合适的工具。对于安卓开发人员来说,开发工具同样至关重要。作为一项新兴技术,在进行开发前首先要搭建一个对应的开发环境。而在搭建开发环境前,需要了解安装开发工具所需要的硬件和软件配置环境。
1.2.1 安装Android SDK的系统要求
在搭建开发环境之前,一定要先确定基于Android应用软件开发所需要的环境,具体如表1-1所示。
表1-1 开发系统所需环境参数

Android工具是由多个开发包组成的,具体说明如下所示。
· JDK:可以到网站http://java.sun.com/javase/downloads/index.jsp上下载。
· Eclipse(Europa):可以到网站http://www.eclipse.org/downloads/上下载Eclipse IDE for Java Developers。
· Android SDK:可以到网站http://developer.android.com上下载。
1.2.2 安装JDK
JDK(Java Development Kit)是整个Java的核心,包括了Java运行环境、Java工具和Java基础的类库。JDK是学好Java的第一步,是开发和运行Java环境的基础,当用户要对Java程序进行编译时,必须先获得对应操作系统的JDK,否则将无法编译Java程序。在安装JDK之前需要先获得JDK,获得JDK的操作流程如下所示。
(1)登录Oracle官方网站,网址为http://developers.sun.com/downloads/,如图1-2所示。

图1-2 Oracle官方下载页面
(2)在图1-2中可以看到有很多版本,如选择Java 7版本,下载页面如图1-3所示。

图1-3 JDK下载页面
(3)在图1-3中单击JDK下方的【Download】按钮,在弹出的新界面中选择将要下载的JDK,作者在此选择的是Windows X86版本,如图1-4所示。

图1-4 选择Windows X86版本
(4)下载完成后双击下载的“.exe”文件开始进行安装,将弹出“安装向导”对话框,在此单击【下一步】按钮,如图1-5所示。

图1-5 “安装向导”对话框
(5)弹出“自定义安装”对话框,在此选择文件的安装路径,如图1-6所示。

图1-6 “自定义安装”对话框
(6)在此设置安装路径是“C:\Program Files\Java\jdk1.7.0_01\”,然后单击【下一步】按钮开始在安装路径下解压缩下载的文件,如图1-7所示。

图1-7 解压缩下载的文件
(7)完成后弹出“目标文件夹”对话框,在此选择要安装的位置,如图1-8所示。

图1-8 “目标文件夹”对话框
(8)单击【下一步】按钮后开始正式安装,如图1-9所示。

图1-9 继续安装
(9)完成后弹出“完成”对话框,单击【完成】按钮后完成整个安装过程,如图1-10所示。

图1-10 完成安装
完成安装后可以检测是否安装成功,检测方法是依次单击【开始】|【运行】,在运行框中输入“cmd”并按下回车键,在打开的CMD窗口中输入“java -version”,如果显示图1-11所示的提示信息,则说明安装成功。

图1-11 CMD窗口
注意
完成安装后可以检测是否安装成功,方法是依次单击【开始】|【运行】,在运行框中输入“cmd”并按下回车键,在打开的CMD窗口中输入“java -version”,如果显示图1-12所示的提示信息,则说明安装成功。

图1-12 CMD窗口
如果检测没有安装成功,需要将其目录的绝对路径添加到系统的PATH中。具体做法如下所示。
(1)右键依次单击【我的电脑】|【属性】|【高级】,单击下面的【环境变量】按钮,在下面的“系统变量”处选择【新建】按钮,在变量名处输入“JAVA_HOME”,变量值中输入刚才的目录,如设置为“C:\Program Files\Java\jdk1.7.0_01”,如图1-13所示。

图1-13 设置系统变量
(2)再次新建一个变量名为classpath,其变量值如下所示。
.; %JAVA_HOME%/lib/rt.jar; %JAVA_HOME%/lib/tools.jar
单击【确定】按钮找到PATH的变量,双击或单击【编辑】按钮,在变量值最前面添加如下值。
%JAVA_HOME%/bin;
具体如图1-14所示。

图1-14 设置系统变量
(3)再依次单击【开始】|【运行】,在运行框中输入“cmd”并按下回车键,在打开的CMD窗口中输入“java -version”,如果显示图1-15所示的提示信息,则说明安装成功。

图1-15 CMD界面
注意
上述变量设置中,是按照作者本人的安装路径设置的,作者安装的JDK的路径是“C:\Program Files\Java\jdk1.7.0_01”。
1.2.3 获取并安装Eclipse和Android SDK
在安装好JDK后,接下来需要安装Eclipse和Android SDK。Eclipse是进行Android应用开发的一个集成工具,而Android SDK是开发Android应用程序必须具备的框架。在Android官方公布的最新版本中,已经将Eclipse和Android SDK这两个工具进行了集成,一次下载即可同时获得这两个工具。获取并安装Eclipse和Android SDK的具体步骤如下所示。
(1)登录Android的官方网站http://developer.android.com/index.html,如图1-16所示。

图1-16 Android的官方网站
(2)单击图1-16左上方“Developers”右边的符号,在弹出的界面中单击“Tools”链接,如图1-17所示。

图1-17 单击“Tools”链接
(3)在弹出的新页面中单击【Download the SDK】按钮,如图1-18所示。

图1-18 单击【Download the SDK】按钮
(4)在弹出的“Get the Android SDK”界面中勾选“I have read and agree with the above terms and conditions”前面的复选框,然后在下面的单选按钮中选择系统的位数,如作者的机器是32位的,所以选择“32-bit”前面的单选按钮,如图1-19所示。

图1-19 “Get the Android SDK”界面
(5)单击图1-19中的按钮后开始下载,下载的目标文件是一个压缩包,如图1-20所示。

图1-20 开始下载目标文件压缩包
(6)将下载得到的压缩包进行解压,解压后的目录结构如图1-21所示。

图1-21 解压后的目录结构
由此可见,Android官方已经将Eclipse和Android SDK实现了集成。双击“eclipse”目录中的“eclipse.exe”可以打开Eclipse,界面效果如图1-22所示。

图1-22 打开Eclipse后的界面效果
(7)打开Android SDK的方法有两种,第一种是双击下载目录中的“SDK Manager.exe”文件,第二种在是Eclipse工具栏中单击图标。打开后的效果如图1-23所示,此时会发现当前Android SDK的最新版本是Android 5.0(API 21)。

图1-23 打开Android SDK后的界面效果
1.2.4 安装ADT
Android为Eclipse定制了一个专用插件Android Development Tools(ADT),此插件为用户提供了一个强大的开发Android应用程序的综合环境。ADT扩展了Eclipse的功能,可以让用户快速地建立Android项目,创建应用程序界面。要安装Android Development Tools plug-in,需要先打开Eclipse IDE,然后进行以下操作。
(1)打开Eclipse后,依次单击菜单栏中的【Help】|【Install New Software...】选项,如图1-24所示。

图1-24 添加插件
(2)在弹出的对话框中单击【Add】按钮,如图1-25所示。

图1-25 添加插件
(3)在弹出的“Add Site”对话框中分别输入名字和地址,名字可以自己命名,如“123”,但是,在Location中必须输入插件的网络地址http://dl-ssl.google.com/Android/eclipse/,如图1-26所示。

图1-26 设置地址
(4)单击【OK】按钮,此时在“Install”界面将会显示系统中可用的插件,如图1-27所示。

图1-27 插件列表
(5)勾选“Android DDMS”和“Android Development Tools”,然后单击【Next】按钮来到安装详情界面,如图1-28所示。

图1-28 插件安装详情界面
(6)单击【Finish】按钮,开始进行安装,安装进度对话框如图1-29所示。

图1-29 开始安装
注意
在上个步骤中,可能会发生计算插件占用资源情况,过程有点慢,完成后会提示重启Eclipse来加载插件,等重启后就可以用了。并且不同版本的Eclipse安装插件的方法和步骤是不同的,但是都大同小异,读者可以根据操作提示自行解决。
1.2.5 设定Android SDK Home
当完成上述插件安装工作后,此时还不能使用Eclipse创建Android项目,还需要在Eclipse中设置Android SDK的主目录。
(1)打开Eclipse,在菜单中依次单击【Windows】|【Preferences】项,如图1-30所示。

图1-30 【Preferences】项
(2)在弹出的界面左侧可以看到“Android”项,选中Android后,在右侧设定Android SDK所在目录为SDK Location,单击【OK】按钮完成设置,如图1-31所示。

图1-31 【Preferences】项
1.2.6 验证开发环境
经过前面的步骤,一个基本的Android开发环境算是搭建完成了。都说实践是检验真理的唯一标准,下面通过新创建一个项目来验证当前的环境是否可以正常工作。
(1)打开Eclipse,在菜单中依次选择【File】|【New】|【Project】项,在弹出的对话框中可以看到Android类型的选项,如图1-32所示。

图1-32 新创建项目
(2)在图1-32中选择“Android”,单击【Next】按钮后打开“New Android Project”对话框,在对应的文本框中输入必要的信息,如图1-33所示。

图1-33 “New Android Application”对话框
(3)单击【Finish】按钮后Eclipse会自动完成项目的创建工作,最后会看到如图1-34所示的项目结构。

图1-34 项目结构
1.2.7 创建Android虚拟设备(AVD)
我们都知道程序开发需要调试,只有经过调试之后才能知道程序是否正确运行。作为一款手机操作系统,我们怎样能在电脑平台上调试Android程序呢?谷歌为我们提供了模拟器来解决这个问题。所谓模拟器,是指在电脑上模拟Android系统,可以用这个模拟器来调试并运行开发的Android程序。开发人员不需要一部真实的Android手机,只通过电脑可模拟运行一部手机,即可开发出在手机上面应用的程序。
AVD的中文名称为Android虚拟设备(Android Virtual Device),每个AVD模拟了一套虚拟设备来运行Android平台,这个平台至少要有自己的内核、系统图像和数据分区,还可以有自己的SD卡和用户数据以及外观显示等。创建AVD的基本步骤如下所示。
(1)单击Eclipse菜单中的图标,如图1-35所示。

图1-35 Eclipse
(2)在弹出的“Android Virtual Device(AVD)Manager”界面的左侧导航中选择“Android Virtual Devices”选项,如图1-36所示。

图1-36 “Android Virtual Device(AVD)Manager”界面
在“Android Virtual Devices”列表中列出了当前已经安装的AVD版本,我们可以通过右侧的按钮来创建、删除或修改AVD。主要按钮的具体说明如下所示。
· :创建新的AVD,单击此按钮在弹出的界面中可以创建一个新AVD,如图1-37所示。

图1-37 新建AVD界面
·:修改已经存在的AVD。
·:删除已经存在的AVD。
·:启动一个AVD模拟器。
· AVD Name:在此设置将要创建AVD的名字,可以用英文字符命名。
· Target Name:在此设置将要创建AVD的API版本,例如Android 2.3、Android 2.3、Android 4.0、Android 5.0等。
· Device:在此设置将要创建AVD的屏幕分辨率大小。
· CPU/ABI:用于设置当前机器的CPU。在开发低Android SDK版本应用程序时,使用的Android模拟器模拟的是ARM的体系结构(ARM-EABI),这个模拟器并不是运行在X86上,而是模拟的ARM,所以在调试程序时经常感觉到非常慢。针对这个问题,Intel推出了支持X86的Android模拟器,这将大大提高启动速度和程序的运行速度,这将允许Android模拟器能够以原始速度(真机运行速度)运行在使用Intel X86处理器的电脑中。所以,对于使用Intel X86电脑开发Android应用程序的开发者来说,建议在“CPU/ABI”中选择有“Intel”标识符的选项。
注意
我们可以在CMD中创建或删除AVD,如可以按照如下CMD命令创建一个AVD。
android create avd --name <your_avd_name> --target <targetID>
其中“your_avd_name”是需要创建的AVD的名字,CMD窗口界面如图1-38所示。

图1-38 CMD界面
1.2.8 启动AVD模拟器
对于Android程序的开发者来说,模拟器的推出给开发者在开发和测试上带来了很大的便利。无论在Windows下还是Linux下,Android模拟器都可以顺利运行。并且官方提供了Eclipse插件,可以将模拟器集成到Eclipse的IDE环境。Android SDK中包含的模拟器的功能非常齐全,电话本、通话等功能都可正常使用(当然你没办法真地从这里打电话)。甚至其内置的浏览器和Maps都可以联网。用户可以使用键盘输入,鼠标单击模拟器按键输入,甚至还可以使用鼠标单击、拖动屏幕进行操纵。模拟器在电脑上模拟运行的效果如图1-39所示。

图1-39 模拟器
注意
模拟器和真机究竟有何区别
当然Android模拟器不能完全替代真机,具体来说有如下差异:
· 模拟器不支持呼叫和接听实际来电,但可以通过控制台模拟电话呼叫(呼入和呼出);
· 模拟器不支持USB连接;
· 模拟器不支持相机/视频捕捉;
· 模拟器不支持音频输入(捕捉),但支持输出(重放);
· 模拟器不支持扩展耳机;
· 模拟器不能确定连接状态;
· 模拟器不能确定电池电量水平和交流充电状态;
· 模拟器不能确定SD卡的插入/弹出;
· 模拟器不支持蓝牙。
在调试的时候我们需要启动AVD模拟器,启动AVD模拟器的基本流程如下所示。
(1)选择图1-36列表中名为“first”的AVD,单击按钮后弹出“Launch Options”界面,如图1-40所示。

图1-40 “Launch”对话框
(2)单击【Launch】按钮后将会运行名为“first”的模拟器,运行界面效果如图1-41所示。

图1-41 Android模拟器运行成功
技巧——快速安装SDK的方法
通过Android SDK Manager在线安装的速度非常慢,而且有时容易掉线。其实我们可以先从网络中寻找到SDK资源,用迅雷等下载工具下载后,将其放到指定目录完成安装。具体方法是先下载android-sdk-windows,然后在android-sdk-windows下双击setup.exe,在更新的过程中会发现安装Android SDK的速度是1Kbit/s,此时打开迅雷,分别输入下面的地址:
https://dl-ssl.google.com/android/repository/platform-tools_r05-windows.zip https://dl-ssl.google.com/android/repository/docs-3.1_r01-linux.zip https://dl-ssl.google.com/android/repository/android-2.2_r02-windows.zip https://dl-ssl.google.com/android/repository/android-2.3.3_r01-linux.zip https://dl-ssl.google.com/android/repository/android-2.1_r02-windows.zip https://dl-ssl.google.com/android/repository/samples-2.3.3_r01-linux.zip https://dl-ssl.google.com/android/repository/samples-2.2_r01-linux.zip https://dl-ssl.google.com/android/repository/samples-2.1_r01-linux.zip https://dl-ssl.google.com/android/repository/compatibility_r02.zip https://dl-ssl.google.com/android/repository/tools_r11-windows.zip https://dl-ssl.google.com/android/repository/google_apis-10_r02.zip https://dl-ssl.google.com/android/repository/android-2.3.1_r02-linux.zip https://dl-ssl.google.com/android/repository/usb_driver_r04-windows.zip https://dl-ssl.google.com/android/repository/googleadmobadssdkandroid-4.1.0.zip https://dl-ssl.google.com/android/repository/market_licensing-r01.zip https://dl-ssl.google.com/android/repository/market_billing_r01.zip https://dl-ssl.google.com/android/repository/google_apis-8_r02.zip https://dl-ssl.google.com/android/repository/google_apis-7_r01.zip https://dl-ssl.google.com/android/repository/google_apis-9_r02.zip …… 可以继续根据开发要求选择不同版本的API
下载完后将它们复制到“android-sdk-windows/Temp”目录下,然后再运行setup.exe,勾选需要的API选项,会发现立刻就安装好了。记得把原始文件保留好,因为放在temp目录下的文件装好后立刻就没有了。
1.2.9 解决搭建环境过程中的常见问题
搭建完成开发环境后,下面将总结在搭建Android SDK环境时出现过的问题,希望对广大读者有用。
1.不能在线更新
在安装Android后,需要更新为最新的资源和配置,但是,在启动Android后,经常会不能更新,弹出如图1-42所示的错误提示。

图1-42 不能更新
Android默认的在线更新地址是 https://dl-ssl.google.com/android/eclipse/,但是经常会出现错误。如果此地址不能更新,可以自行设置更新地址,修改为 http://dl-ssl.google.com/android/repository/repository.xml。具体操作方法如下:
(1)单击Android左侧的“Available Packages”选项,然后单击下面的【Add Site…】按钮,如图1-43所示。

图1-43 “Available Packages”界面
(2)在弹出的“Add Site URL”对话框中输入下面修改后的地址,如图1-44所示。

图1-44 “Available Packages”界面
http://dl-ssl.google.com/android/repository/repository.xml
(3)单击【OK】按钮后完成设置工作,此时就可以使用更新功能了,如图1-45所示。

图1-45 “Available Packages”界面
2.显示“Project name must be specified”提示
很多初学者在Eclipse中新创建Android工程时,经常会遇到显示“Project name must be specified”提示的问题,如图1-46所示。

图1-46 “Available Packages”界面
造成上述问题的原因是Android没有更新完成,需要进行完全更新,具体方法如下所示。
(1)打开Android,选择左侧的“Installed Packages”选项,如图1-47所示。

图1-47 “Available Packages”界面
(2)右侧列表中选择“Android SDK Tools, revision 4”,在弹出窗口中选择“Accept”,最后单击【Install Accepted】按钮开始安装更新,如图1-48所示。

图1-48 “Available Packages”界面
3.Target列表中没有Target选项
通常来说,当Android开发环境搭建完毕后,在Eclipse工具栏中依次单击【Window】|【Preference】,单击左侧的“Android”项后会在“Preference”中显示存在的SDK Targets,如图1-49所示。

图1-49 SDK Targets列表
但是往往因为各种原因,会不显示SDK Targets列表,并且在图1-49界面中也不显示,并输出“Failed to find an AVD compatible with target”错误提示。
造成上述问题的原因是没有创建AVD成功,此时需要手工安装来解决这个问题,当然前提是Android更新完毕,具体解决方法如下所示。
(1)在运行框中键入“cmd”,打开CMD窗口,如图1-50所示。

图1-50 CMD界面
(2)使用如下Android命令创建一个AVD。
android create avd --name <your_avd_name> --target <targetID>
其中“your_avd_name”是需要创建的AVD的名字,CMD窗口界面如图1-51所示。

图1-51 CMD界面
图1-51的窗口中创建了一个名为aa, targetID为3的AVD,然后在CMD界面中输入“n”,即完成操作,如图1-52所示。

图1-52 CMD界面