Android开发:从0到1 (清华开发者书库)
上QQ阅读APP看书,第一时间看更新

4.3 使用ADB帮助调试程序

ADB(Android Debug Bridge)是强大的调试工具,它可以帮助管理模拟器实例和设备的方方面面。ADB可以做很多工作:查询模拟器实例和设备、进入shell、导入导出文件、应用程序打包和卸载、查看LogCat,等等。本节介绍查询模拟器实例和设备、进入shell、导入导出文件。在Windows平台下面的ADB是由Android SDK安装目录 \platform-tools\adb.exe指令实现。

4.3.1 查询模拟器实例和设备

在Android中,有时需要查询有哪些模拟器实例或者设备与开发电脑连接起来了。查询这些内容时,可以通过DDMS查看,如图4-14所示。

图4-14 查询模拟器实例

事实上,DDMS能够查询到这些模拟器实例或者设备信息是通过调用ADB指令实现的,下面看看直接调用ADB实现查询模拟器实例或者设备,首先通过DOS(MacOS或Linux终端)进入Android SDK安装目录platform-tools目录,运行adb指令如下:

        adb devices
        List of devices attached
        S3C6410 Android device
        emulator-5554  device

4.3.2 进入shell

通过ADB进入到模拟器实例或者设备的shell,可以运行一些常用Linux的指令,在<Android SDK安装目录> platform-tools下运行adb指令如下:

     adb shell

如果有多个模拟器实例或者设备上面的指令出现错误error:more than one device and emulator,如果进入shell,如图4-15所示,会出现Linux shell提示符$或#。

图4-15 Android Linux shell

     adb -s serialNumber shell

注意 退出Android Linux shell可以通过exit命令实现。

4.3.3 导入导出文件

有时,需要在开发机与模拟器实例或者设备中直接导入或导出文件,在DDMS中可以通过File Explorer实现文件导入或导出,如图4-16所示,工具栏中的按钮可以实现文件导入,按钮可以实现文件导出。

图4-16 导入导出文件

注意 DDMS实现文件导入导出时,可能会出现无法导入或导出的问题,读者可以使用adb指令导入或导出。

DDMS实现文件导入或导出也是通过adb实现的,下面通过adb命令实现开发机与模拟器实例或者设备信息文件的导入或导出。

1.导入指令

     adb push local remote

如果有多个模拟器实例或者设备,执行上面的指令会出现错误error:more than one device and emulator,它的完整命名如下:

     adb -s serialNumber push local remote

如果从开发机上把一个MP3导入到模拟器emulator-5554的SD卡中,可以使用如图4-17所示的指令,如果文件或文件目录有空格,就要用双引号括起来。

图4-17 导入指令

2.导出指令

     adb pull remote local

如果有多个模拟器实例或者设备,执行指令会出现错误error:more than one device and emulator,它的完整命名如下:

     adb -s serialNumber pull remote local

如果从模拟器实例emulator-5554中com.eorient.provider应用的数据库文件dbdemo1.db导出到开发机的C盘根目录下面,可以使用如图3-30所示的指令。

图4-18 导出指令