目录
1. adb
adb (Android Debug Bridge,调试桥)是一个debug工具,可将其他工具接入模拟器和设备,通过adb我们可以在Eclipse中通过DDMS来调试Android程序。除了可以让其他工具(ADT插件)功能生效以外,还可以使用命令行上传或下载文件、安装或卸载程序包、通过进入设备或模拟器的 shell 环境访问许多其他功能。当我们运行 Eclipse 时 adb 进程就会自动运行。
adb是一个客户端/服务器端程序,其中客户端是用米操作的电脑,服务器端是Android设备。adb 安装在 Android SDK的 platform-tools 目录下,它的常用命令如下。
1.1 查看设备
命令:adb devices
这个命令是查看当前连接的设备,连接到计算机的 Android 设备或者模拟器将会列出显示。如图 2-1 所示,在运行“adb devices”命令之后可以看到当前连接的一个设备 “emulator5554 device”
图 2-1 利用 adb 命令查看当前连接的 Android 设备
1.2 安装软件
命令: adb install <apk文件路径>
这个命令将指定的 apk 文件安装到设备上。
1.3 卸载软件
命令1: adb uninstall<软件名>
命令2: adb uninstall-k<软件名>
如果加 -k 参数,为卸载软件但是保留配置和缓存文件。
1.4 登录设备 shell
命令 1: adb shell
命令2: adb shell <command命令>
这个命令将登录设备的 shell。
后面加<command 命令>将是直接运行设备命令,相当于执行远程命令。
1.5 从计算机上发送文件到目标机
命令: adb push<本地路径><远程路径>
用push命令可以把计算机上的文件或者文件夹复制到Android目标机中
1.6 从目标机上下载文件到计算机
命令: adb pull <远程路径><本地路径>
用 pull命令可以把 Audivid日标机上的文件或者文件夹复制到计算机。
1.7 显示帮助信息
命令: adb help
2. AVD
AVD (Android Virtual Device,安卓虚拟设备) ,一般称其为Android模拟器,可以用来模拟一个Android手机或平板电脑,由于可以虚拟出来各个API版本、各种屏幕分辨率的Android设备,所以AVD在 Android开发中很常用。
AVD没有SIM卡,也没有WiFi网络,硬件资源受限,所以有部分Android 应用程序需要在真机(真实的Android设备)上调试,比如使用到3G和WiFi网络、使用3D渲染、使用到SIM卡等功能的应用程序
2.1 AVD 的创建
建立 AVD 的步骤如下。
第一步,在 Eclipse 中,打开菜单项 Windows->Android Virtual Device Manager.
第二步,在出现的 AVD 管理界面中,点击右上角的 New 按钮,就会出现新建 AVD 的界面,在此界面中可以配置 AVD,如图 2-2 所示。配置完成后,点击 OK 按钮,即可创建一个新的AVD.这个被创建的AVD,就相当于一个连接在计算机上的Android设备,可以用来运行和调试 Android 程序。
图 2-2 AVD 建立界面
图 2-2 中 AVD 的配置信息说明如下,
(1) AVD Name: AVD名称,作为标识,开发者自用,能识别不同的AVD即可。
(2) Device:要模拟的设备,一般为现在 Google 的 Nexus 系列手机,以及其他手机和平板,区别在于屏幕分辨率不同,可以建立多个 AVD 来做屏幕适配。
(3) Target:模拟器的API版本。
(4) Keyboard /Skin:键盘布局/皮肤设置,按默认选中即可。
(5) RAM:模拟器的内存大小,会共享宿主机的内存,一般为默认大小即可,太大会降低宿主机的速度,太小会降低模拟器的速度。
(6) VM Heap:模拟器堆栈大小,默认值即可。
(7) Internal Storage:模拟器 ROM 大小,存放安装到模拟器上的程序,占用计算机磁盘空间。
(8) SD Card Size:模拟器的 SD Card 大小,一般存放多媒体、照片等大文件,占用计算机的磁盘空间。与ROM占用计算机空间的机制不同,只要AVD建立好,就会占用这样大小的磁盘空间,所以这个值不宜设置太大,不够用时再设置大一些即可。
(9) Snapshot:快照功能,会保存上次的AVD显示界面,以加快下一次AVD的启动,但有时会影响程序调试,导致对代码的更改不能立即反映在AVD的界面上。
(10) Use Host GPU:使用宿主机的 GPU 加速,一般在调试 3D 游戏时开启,不过通常都使用真机做3D游戏的调试。
2.2 启动 AVD 模拟器
建好 AVD 后,就会出现如图 2-3 所示的界面,可以看到在列表中出现了刚才建立的AVD,选择它,然后点击右边的 Start 按钮,在之后出现的窗口中点击Launch 按钮,该 AVD就被启动了,如图 2-3 所示,它显示的就是Nexus_One这款手机在4.2 (API 17)版本下的界面,后续我们就可以把写好的Android程序运行在这个AVD上了。
图2-3 AVD选择界面
图 2-3 AVD 启动后的初始界面
3. DDMS
DDMS (Dalvik Debug Monitor Service)是Android开发环境中的Dalvik虚拟机调试监控服务。DDMS为我们提供了测试设备截屏,针对特定的进程查看正在运行的线程及堆信息、Logcat、广播状态信息、模拟电诂呼叫、接收 SMS、虚拟地埋坐标等功能。
3.1 DDMS的启动方法
(1) DDMS安装在Android SDK的tools目录下,可以在此目录下双击ddms.bat直接运行;
(2)在Eclipse中,打开菜单" Window--Open Perspective" ,双击菜单项"DDMS",也可启动DDMS, DDMS 界面如图 2-4所示。
图 2-4 DDMS 界面
3.2 DDMS 工作原理
DDMS将搭建起IDE与测试终端(Emulator或connected device)的链接。DDMS可以实时监测到测试终端的连接情况,当有新的测试终端连接后, DDMS将捕捉到终端的ID,并通过adb建立调试器,从而实现发送指令到测试终端的目的。
DDMS监听第一个终端应用程序进程的端口为8600,应用程序进程将分配8601,如果有更多终端或者更多应用程序进程将按照这个顺序依次类推。DDMS通过8700端口接收所有终端的指令。
3.3 DDMS 的功能
可以通过 DDMS 的图形界面了解到更多 DDMS 的功能。
3.3.1 Devices 面板
在这个面板可以看到所有与 DDMS 连接的终端的信息,以及每个终端正在运行的应用程序进程,每个进程的右边相对应的是与调试器链接的端口。因为Android是基于Linux内核开发的平台,同时也保留了Linux中特有的进程ID,它介于进程名和端口号之间。Devices面板如图 2-5 所示。
图 2-5 Devices 面板
3.3.2 Fmulator Contro 面板
通过这个面板的一些功能可以非常容易的使测试终端模拟真实手机所具备的一些交互功能。比如接听电话、根据选项模拟各种不同网络情况、模拟接受SMS消息和发送虚拟地址坐标用于测试 GPS 功能等。Emulator Contro 面板如图 2-6 所示。
Telephony Status 面板:通过选项模拟语音质量以及信号连接模式:
Telephony Actions面板:模拟电话接听和发送SMS到测试终端;
Location Control 面板:模拟地理坐标或者模拟动态的路线坐标变化并显示预设的地理标识。可以通过 Manual 面板手动为终端发送二维经纬坐标;或在 GPX 面板通过 GPX 文件导入序列动态变化地理坐标,从而模拟行进中 GPS 变化的数值:在KML 面板可以通过 KML 文件导入独特的地理标识,并以动态形式根据变化的地理坐标显示在测试终端。
图2-6 Emulator Contro面板
3.3.3 其他功能
Devices面板右边的窗口中还有Threads、Heap、Allocation Tracker、File Explorer、NetworkStatisties和System Information选项卡,如图2-7所示,可以显示线程统计信息、栈信息、内存分配跟踪情况、Android设备的文件系统、网络使用统计信息和Android设备的系统信息。
图 2-7 其他功能选项卡
在以上的这些选项卡中,最常使用的是File Explorer选项卡,它可以把文件上传到Android设备,或从Android设备下载文件,也可以进行文件删除操作。
3.3.4 LogCat 面板
在DDMS界面中的下面是LogCat面板,可以输出AVD或Android设备的一些运行和调试信息。LogCat是Android日志系统的名称,是一个日志记录工具,可以通过Eclipse、adh读取TogCat数据,它可以提供系统中相关事件的诊断信息。开发者可以由此将应用程序的调试和诊断信息发送到LogCat.这个工具很常用,可以理解为C或Java程序中的控制台输出,常被用来在手写代码的调试方式中,输出调试信息,使用时在代码中先使用 import关键字导入android.util.Log包,然后在代码中使用Log.d(String, String). Log.i(String, String)等方法输出调试信息。
LogCat 面板如图 2-8 所示,其右边窗格显示的是 LogCat 日志,左边窗格可以过滤一些调试信息。
图2-8 LogCat面板