关于我们
新书资讯
新书推荐

Android手机应用开发简明教程

Android手机应用开发简明教程

定     价:¥48

中 教 价:¥36.96  (7.70折)

库 存 数: 0

丛 书 名:高等学校应用型特色规划教材

  • 作者:董志鹏、张水波
  • 出版时间:2016/3/1
  • ISBN:9787302425403
  • 出 版 社:清华大学出版社
  • 中图法分类:TN929.53 
  • 页码:388
  • 纸张:胶版纸
  • 版次:1
  • 开本:16开
  • 商品库位:
9
7
4
8
2
7
5
3
4
0
0
2
3
购买数量:     
本书结合教学特点,以Android 4.4.2版本为例,由浅入深地讲述了Android应用程序的开发技术,涵盖了Amdroid技术人员成长道路上的众多知识。全书共分15章,主要内容包括Android的发展历史、特点和优势、系统架构与开发环境的配置,以及各种常见开发工具的安装和使用、各种Android应用程序的设计与开发等。本书在最后一章,以贪吃蛇小游戏为例介绍了游戏项目的完整实现。本书既可作为在校大学生学习使用Android进行课程设计的参考教材,也适合作为高等院校相关专业的教学参考用书,还可以作为非计算机专业学生学习Android数据库的参考书。

模拟器按键

键盘按键

Home

Home键

Menu

Page Up键或F2键

Start

Page Down键或Shift F2键

Back

Esc键

电话拨号

F3键

电话挂断

F4键

查询

F5键

锁屏幕

F7键


续表 

模拟器按键

键盘按键

音量放大

键(台式机数字键盘)或Ctrl F5键(笔记本)

音量缩小

-键(台式机数字键盘)或Ctrl F6键(笔记本)

全屏幕切换

Alt Enter键

轨道球模式

F6键

横竖屏切换

7键(台式机数字键盘)或Ctrl F11键(笔记本)

9键(台式机数字键盘)或Ctrl F12键(笔记本)

 

在运行游戏时,可将Android模拟器切换到横屏模式,其显示效果如图2-25所示。

 

图2-25  横屏显示的模拟器

2.3.4  使用模拟器控制台

每个运行中的模拟器实例都含有一个控制台,通过控制台可以查询和控制模拟器设备的运行环境。连接到模拟器实例控制台的命令如下:

 

telnet localhost <port> 

 

例如,第一个模拟器实例的控制台如果使用的端口是5554,那么用户连接到模拟器5554上的命令就要写为

 

telnet localhost 5554

 

连接上控制台后,用户可以输入“help [command]”来查看命令列表和某一命令的帮助文档。离开控制台时使用quit和exit命令即可。

下面介绍一些常用的控制台命令。

1.端口重定向命令

使用以下命令可以在模拟器运行期间重看、添加或删除重定向。

(1)  redir<list>

说明:redir list列出了当前的重定向,其最小值为150,最大值为550。

(2)  rediradd <protocol> : <host-port> : <guest-port>

说明:此命令用于添加新的端口重定向。 <protocol>必须是TCP或UDP,<host-port>是主机上打开的端口号,<guest-port>是向模拟器/设备发送数据的端口号。

(3)  redirdel<protocol> : <host-port>

说明:此命令用于删除端口重定向,<protocol>和<host-port>的含义同上。

2.网络状况查询命令

使用以下命令可以检测模拟器运行的网络状态。

 

network status 

 

执行后的输出结果类似如下:

 

Current network status: 

download speed:          0 bits/s (0.0 KB/s)

upload speed:            0 bits/s (0.0 KB/s)

minimum latency: 0 ms

maximum latency: 0 ms

 

3.电话功能模拟命令

与电话相关的是gsm命令,该命令有以下3种格式。

(1)  gsmcall <phonenumber>

说明:该命令用于模拟来自电话号码为<phonenumber>的呼叫。

(2)  gsmvoice <state>

说明:该命令用于修改GPRS语音连接的状态为<state>。State的可选值有:unregistered为无可用网络;home为处于本地网,无漫游;roaming为处于漫游网;searching为查找网络;denied为仅能用紧急呼叫;off同unregistered;on同home。

(3)  gsmdata <state>

说明:该命令用于修改GPRS数据连接的状态为<state>,可选值与Voice相同,此处不再介绍。

2.4  Android工具

在Android SDK中提供了一个名为Android的工具,该工具可用来查看Android的版本信息,以及创建、删除和查看AVD设备。

2.4.1  查看Android版本的ID信息

为了对Android程序进行全面的测试,在开发时用户通常会安装多个Android版本。每个Android版本都有一个唯一的ID标识。

【范例8】

要查看所有Android版本的ID信息,可使用如下命令:

 

android list targets

 

执行后将看到每个Android版本的ID信息、API版本、名称、类型和适用屏幕等,如图2-26所示。

 

图2-26  查看Android版本的ID信息

2.4.2  创建AVD设备

AVD表示一种Android设备的配置信息,例如一个AVD可以表示一个运行2.0版本SDK,且使用512MB作为SD卡的Android设备。AVD的使用理念是,首先创建将要支持的AVD,然后在开发和测试应用程序时,将模拟器指向其中一个AVD。

默认情况下,所有的AVD都存储在HOME\.android\AVD目录中。要创建一个AVD设备可以使用android命令的create avd选项,其语法格式如下:

 

android create avd <option>

 

其中,option参数有如下几个选项。

l   -t:新AVD设备的ID,可通过android list targets查看,必选项。

l   -c:指向一个共享SD卡的路径或者指定一个新的SD卡。

l   -p:指定AVD设备的存储路径。

l   -n:指定AVD设备的名称,必选项。

l   -f:此选项表示覆盖已存在的同名AVD。

l   -s:指定AVD设备使用的皮肤。

【范例9】

创建一个名为testAvd的AVD设备,要求SD卡容量为1024MB,并将其保存在G:\AVD目录下。其实现语句如下:

 

android create avd -n testAvd -t 1 -c 1024M -p G:\AVD\

 

语句中-t后面的1表示使用的是列表中编号为1的Android版本。执行该语句后会看到输出的信息,如图2-27所示。


 

图2-27  创建AVD设备

2.4.3  删除AVD设备

删除AVD设备的语法如下:

 

android delete avd -n <avd_name>

 

其中avd_name表示要删除的AVD设备的名称。

【范例10】

在删除之前可以先运行如下命令,查看当前所有的AVD设备信息,包含名称、存储路径、SD卡容量以及使用的皮肤等。

 

android list avds

 

如图2-28所示为运行结果,从中可以看出当前所包含的AVD设备有avd 4.4、myAvd、testAvd。

 

图2-28  查看所有AVD设备

【范例11】

假设要删除名为testAvd的AVD设备,可用以下语句:

 

android delete avd -n testAvd

 

执行该语句后再次使用android list avds命令,即可看到testAvd没有出现在列表中,如图2-29所示。


 

图2-29  删除AVD设备

2.5  Emulator工具

Emulator是一款命令行的模拟器管理工具,它可以控制模拟器实例的所有参数,例如是否允许使用视/音频、接收数据、使用调试和屏幕信息等。

Emulator的语法格式如下:

 

emulator [option] [-qemu args]

 

其中,option表示选项,args是选项的具体参数。

Emulator为Android模拟器工具提供了很多启动选项,可以在启动模拟器时指定,控制其外观和行为。下面从六个方面介绍Emulator工具的命令格式。

1.数据命令选项

数据命令选项主要有四个,下面分别介绍。

(1)  emulator-data <file>

说明:使用<file>当作用户数据的磁盘镜像,如果没有-data,模拟器会在~/.android
(Linux/Mac)或c:\Documentsand Settings\<user>\Local Settings\Android(Windows)中查找文件名为userdata.img的文件。如果使用了-data<file>但<file>不存在,模拟器会创建一个文件。

(2)  emulator-ramdisk <file>

说明:使用<file>作为RAM镜像,默认值为<system>/ramdisk.img。

(3)  emulator-sdcard<file>

说明:使用<file>作为SD卡镜像,默认值为<system>/sdcard.img。

(4)  emulator-wipe-data

说明:启动前清除用户磁盘镜像中的所有数据。

2.调试命令选项

调试命令选项主要有五个,下面分别介绍。

(1)  emulator-console

说明:允许当前中断使用控制台。

(2)  emulator-debug-kernel

说明:将内核输出发送到控制台。

(3)  emulator-logcat <logtags>

说明:允许根据给定的标签为输出分类。如果定义了环境变量ANDROID_LOG_TAGS,并且不为空,那么它的值将被作为logcat的默认值。

(4)  emulator-trace <name>

说明:允许代码剖析(按F9键开始)。

(5)  emulator-verbose

说明:允许详细信息输出。

3.媒体命令选项

媒体命令选项主要有四个,下面分别介绍。

(1)  emulator-mic <device or file>

说明:使用设备或者WAV文件作为音频输出。

(2)  emulator-noaudio

说明:禁用Android的音频支持,默认禁用。

(3)  emulator-radio <device>

说明:将无线调制解调器接口重定向到主机特征设备。

(4)  emulator-useaudio

说明:启用Android音频支持,默认不启用。

4.网络命令选项

网络命令选项主要有两个,分别是-netdelay和-netspeed。

(1)  emulator-netdelay <delay>

说明:设置网络延迟模拟的延迟时间为<delay>,默认值是none。具体参数说明如下。

l   gprs:min 150, max550。

l   edge:min 80, max400。

l   umts:min35, max200。

l   none:无延迟。

l   <num>:模拟一个准确的延迟(毫秒)。

l   <min>:<max>:模拟一个指定的延迟范围(毫秒)。

(2)  emulator-netspeed <speed>

说明:设置网速模拟的加速值为<speed>,默认值为full。具体参数说明如下。

l   gsm:up : 14.4,down 14.4。

l   hscsd:up : 14.4,down : 43.2。

l   gprs:up : 40.0,down : 80.0。

l   edge:up :118.4,down : 236.8。

l   umts:up : 128.0,down : 1920.0。

l   hsdpa:up : 348.0,down : 14400.0。

l   full:无限。

l   <num>:设置一个上行和下行公用的准确速度。

l   <up> : <down>:分别为上行和下行设置准确的速度。

5.系统命令选项

系统命令选项主要有五个,下面分别介绍。

(1)  emulator-image <file>

说明:使用<file>作为系统镜像。

(2)  emulator-kernel <file>

说明:使用<file>作为模拟器内核。

(3)  emulator-qemu

说明:传递qemu参数。

(4)  emulator-qemu -h

说明:显示qemu帮助信息。

(5)  emulator-system <dir>

说明:在<dir>目录下查找系统、RAM和用户数据镜像。

6.界面命令选项

界面命令选项主要有六个,下面分别介绍。

(1)  emulator-flashkeys

说明:在设备皮肤上闪烁按下的键。

(2)  emulator-noskin

说明:不使用任何模拟器皮肤。

(3)  emulator-onion <image>

说明:在屏幕上使用覆盖图,不支持JPEG格式图片,仅支持PNG格式。

(4)  emulator-onion-alpha <percent>

说明:指定onion皮肤的半透明值,默认值为50,单位为%。

(5)  emulator-skin <skinID>

说明:指定皮肤启动模拟器,SDK提供了以下四个可选皮肤。

l   QVGA-L(320*240,风景)默认。

l   QVGA-P(240*320,肖像)。

l   HVGA-L(480*320,风景)。

l   HVGA-P(320*480,肖像)。

(6)  emulator-skindir <dir>

说明:在<dir>目录下查找皮肤。


2.6  实验指导——管理SD卡

在Android模拟器实例上测试程序时经常需要使用SD卡。为此AndroidSDK提供了SD卡创建工具——Mksdcard,它位于Tools目录中。

Mksdcard工具的语法格式如下:

 

mksdcard [-l label] <size> <file>

 

语法中各个参数的含义如下:

l   -l:指定SD卡的卷标,可选参数。

l   size:指定SD卡的容量大小,默认单位是bytes,也可以使用K或者M作为单位。

l   file:指定SD卡镜像文件的路径。

【范例12】

创建一个卷标为myCard,大小为100MB的SD卡,将文件保存为D:\data\myCard.img。其语句如下:

 

mksdcard -l myCard 100MB d:\data\myCard.img

 

该语句执行成功后没有输出结果。此时打开D:\data会看到myCard.img镜像文件,如图2-30所示。

如果要管理myCard里面的内容,可通过以下步骤实现。

(1) 使用AVD Manager或者Emulator工具加载myCard的镜像文件myCard.img。Emulator工具的加载命令如下:

 

emulator -sdcard D:\data\myCard.img

(2) 使用ADB push上传文件或者目录,也可以使用ADT的File Explorer工具管理。

 

图2-30  创建SD卡镜像文件

2.7  Keytool工具和Jarsigner工具

要使编写的Android应用程序能在真实的Android设备上运行,必须对Android应用程序的APK文件进行签名。APK是Android Package的缩写,它可以直接在Android系统上运行,类似Windows系统下的EXE文件。

Android SDK提供了两个命令行工具对APK文件进行签名:keytool.exe和jarsigner.exe。其中Keytool用于生成一个Android程序使用的密钥文件(Private Key);Jarsigner则根据该密钥文件对Android程序进行打包并设置签名。

Keytool工具的语法如下:

 

keytool -genkey -v -keystore androidguy-release.keystore-alias androidguy -keyalg RSA -validity 3000

 

其中,各个参数的说明如下。

l   androidguy-realse.keystore:表示要生成的密钥文件名,可以是任意合法的文件名。

l   androidguy:表示密钥的别名,在签名时会用到。

l   RSA:表示密钥使用的算法。

l   3000:表示签名的有效时间,以“天”为单位。

进入命令行按照上述格式执行Keytool命令时,会要求用户输入一系列与密钥有关的信息,如图2-31所示。

在输入完密钥信息后,按回车键会自动创建指定的密钥文件,并设置签名信息。运行成功后会出现图2-32所示界面,提示已经创建密钥文件到当前目录中。

假设要对C:\MyApp.apk文件进行签名,则使用Jarsigner命令的语法格式如下:

 

jarsigner -verbose -keystoreandroidguy-release.keystore C:\MyApp.apk androidguy

 

图2-31  输入密钥信息                       图2-32  生成密钥文件

上述命令将指定的密钥文件androidguy-release.keystore对Android程序的APK文件MyApp.apk进行签名,执行后还需要输入密钥的密码,执行成功后的输出如图2-33所示。经过签名后的APK文件占用的内存会比原始文件大。


 

图2-33  对APK进行签名

2.8  实验指导——使用ADT签名程序

在使用命令对APK文件进行签名时,通常需要熟记各个命令参数,比较麻烦。为此ADT工具提供了一个图形化向导进行签名。向导的打开方法是:在ADT中右击项目名称,在弹出的菜单中选择Android Tools|Export Signed Application Package命令,具体操作步骤如下。

(1) 在打开的窗口中输入或选择要签名的项目名称,如图2-34所示。

(2) 单击“下一步”按钮,在打开的Keystore selection界面中选择Create new keystore选项创建一个新的密钥文件,并指定密钥文件的名称和输入密码,如图2-35所示。

(3) 单击“下一步”按钮,在进入的界面中输入密钥和签名信息,如图2-36所示。

(4) 单击“下一步”按钮,指定生成后APK文件的名称和位置,如图2-37所示。

(5) 单击“完成”按钮完成设置。打开目标位置,会看到除了生成的APK文件之外,还包括一个密钥文件。该密钥文件在给以后的程序签名时仍然可以继续使用。

 

图2-34  选择项目                       图2-35  指定密钥文件和密码

 

图2-36  指定密钥和签名信息                  图2-37  指定要生成的APK文件

2.9  ADB工具

ADB(Android Debug Bridge)实际上是一个“客户端—服务器端”程序,默认情况下它会监听TCP 5554端口,让客户端与服务器端通信。其中,客户端就是用来操作的计算机,服务器端是目标设备,例如Android设备、实体手机或虚拟机。

ADB是Android SDK中最常用的调试工具之一,下面详细介绍该工具的具体应用情况。

2.9.1  查看ADB版本

ADB工具位于Android SDK的platform-tools目录下,它的主要功能如下。

(1) 运行设备的shell命令行。

(2) 管理模拟或设备的端口映射。

(3) 在计算机与设备之间上传和下载文件。

(4) 将本地APK软件安装到模拟器或设备上,使应用或者系统升级。

【范例13】

假设要查看ADB的版本,则可运行以下命令:

 

adb version

 

执行后的结果如图2-38所示,从中可以看到当前版本为1.0.31

 

图2-38  查看ADB版本

2.9.2  查看设备信息

ADB启动时首先会在服务器开启5554~5585端口,等待客户端Android设备或者模拟器的接入。

【范例14】

要查看当前所有设备的信息可以使用以下命令:

 

adb devices

 

该命令返回的结果为Android设备或模拟器的序列号及其状态,运行效果如图2-39所示。

 

图2-39  查看设备信息

从输出结果中可以看出,当前ADB监听了两个端口的设备,它们的序列号分别是CoolPad8190和emulator-5554。其中,前者是一台真实的Android设备,后者是模拟器实例(5554表示ADB为该实例分配的端口号)。返回结果的第二列表示当前设备的状态,它有如下两个值。

l   offline:设备没有连接到ADB或者实例没有响应。

l   device:设备已经连接到ADB,并处于在线状态。

 

 注意:  device状态并不表示当前Android设备可用。因为当Android设备处于启动阶段时,若连接成功也会返回该状态。

 

2.9.3  管理软件

在使用ADB连接到Android设备之后便可以进行各种操作了。最常见的操作是在Android设备中安装新的软件,或者卸载已有的软件。在这里需要注意的是,Android设备中的软件都以.apk为扩展名。

1.安装软件

ADB安装软件的语法格式如下:

 

adb install <apk 文件路径>

 

命令执行后会将指定的apk文件安装到设备上。如果在install后面添加了-r选项,则表示重新(覆盖)安装此软件。


【范例15】

假设要安装d:\apk\popogame.apk软件包,安装命令如下。

 

adb install d:\apk\popogame.apk

 

命令执行后如果在窗口中出现Success字样,则说明安装成功,如图2-40所示。如图2-41所示为软件安装后,打开的运行效果。

 

图2-40  安装软件成功窗口                图2-41  Popogame软件运行效果

假设该软件出现问题无法正常打开,则可以用如下命令进行修复安装。

 

adb install -r d:\apk\popogame.apk

 

2.卸载软件

如果不需要该软件了,还可以使用ADB命令卸载,语法格式如下:

 

adb uninstall <软件名>

 

上述命令执行后将卸载指定的软件。卸载时需要指定完整的软件包名称,而不是安装包的名称,但软件包不需要写扩展名。如果在uninstall后面添加-k选项,则表示卸载软件时保留原配置和缓存文件。

【范例16】

假设安装完popogame.apk包后的应用程序包有误,其名称是com.android.popogame。若此时需要卸载该应用程序,则其卸载命令如下:

 

adb uninstall com.android.popogame

 

如果使用如下命令,则在删除该应用程序包时还可以保留原配置和缓存文件。

 

adb uninstall -k com.android.popogame

 

 提示:  使用ADB工具进入Shell命令状态可以卸载软件。


【范例17】

如果当前ADB有多个Android设备或者模拟器实例,那么就需要使用-s选项指定目标设备的序列号。

设备序列号可通过adb devices命令获取。例如,要在emulator-5554实例上安装软件,则其命令如下:

 

adb -s emulator-5554 install -r d:\apk\popogame.apk

 

若要在emulator-5554实例上卸载软件,则其命令如下:

 

adb -s emulator-5554 uninstall com.android.popogame

2.9.4  移动文件

既然ADB工具在本机与Android设备之间建立了连接,那么就可以使用该工具在两者之间传输文件。例如,上传一个本地软件包到Android设备,或者从Android设备下载一个配置文件。

1.上传文件

使用push命令可以把本地硬盘上的文件或者目录上传(复制)到远程的目标设备(模拟器实例)。其语法格式如下:

 

adb push <本地路径> <远程路径>

 

【范例18】

假设将d:\apk\popogame.apk复制到Android设备的data目录中。其命令如下:

 

adb push d:\apk\popogame.apk /data/

 

执行结果如图2-42所示。

 

 注意:  本地硬盘上的路径符号是\,而设备/模拟器上的路径符号则是/,两个路径符号所使用的斜杠的方向不同。

 

2.下载文件

使用pull命令可以将远程文件下载(复制)到本地硬盘上,其语法格式如下:

 

adb pull <远程路径>  <本地路径>

 

【范例:19】

假设将Android设备中data目录下的popogame.apk文件复制到C盘根目录,命令如下。

 

adb pull /data/ popogame.apk c:\

 

执行结果如图2-43所示。


 

图2-42  上传文件                           图2-43  下载文件

 

 提示:  在ADT的DDMS透视图中可以很方便地使用File Explorer来管理文件。

 

2.9.5  执行Shell命令

由于Android是基于Linux内核的操作系统,因此在Android上可以执行Shell命令。具体方法是执行如下命令进入Shell命令状态:

 

adb shell

 

上述命令执行后,如果窗口显示一个#符号,则说明当前是Shell控制台,可以执行各种Shell命令。例如执行ls命令查看所有的系统文件,执行结果如图2-44所示。

 

图2-44  执行ls命令窗口

 

 注意:  如果没有Android系统的root权限,Shell控制台的提示符将是一个$符号,而不是#符号。此时若想退出Shell控制台,则输入“exit”命令即可。

 

【范例20】

在Shell控制台可以查看Android系统和设备的全部参数信息,如硬件信息、ROM版本信息以及系统信息等。具体方法是在Shell提示符下执行getprop命令,执行结果如图2-45所示。

【范例21】

如果只想执行一条Shell命令,则可以使用如下语法格式:

 

adb shell <shell_command>

 

例如,执行adb shell dmesg语句可以查看Android内核的调试信息,执行结果如图2-46所示。

 

图2-45  执行getprop命令后的效果图

 

图2-46  查看调试信息窗口

执行pm命令可以在Shell中删除软件,例如删除com.android.popogame的命令如下:

 

adb shell pm uninstall com.android.popogame

 

2.9.6  查看Bug报告

在命令提示符中输入“adb bugreport”可以显示当前Android系统的运行状态,例如内存状态、CPU状态、内核输出信息、调试信息以及错误信息等。由于该命令返回的输出结果有很多,图2-47中仅显示了部分信息。

 

图2-47  查看bug报告

 你还可能感兴趣
 我要评论
您的姓名   验证码: 图片看不清?点击重新得到验证码
留言内容