adb的全称为AndroidDebugBridge,译为android调试桥,就是在android系统中起到调试桥的作用。通过adb我们可以在Eclipse中方便通过DDMS来调试Android程序,说白了就是debug工具。
adb是一个客户端-服务器端程序,其中客户端是你用来操作的电脑,服务器端是android设备。
下面详细介绍下adb的使用方法
在您的设备上启用adb调试
要在通过USB连接的设备上使用adb,您必须在设备系统设置中启用USBdebugging(位于Developeroptions下)。
在运行Android4.2及更高版本的设备上,Developeroptions屏幕默认情况下处于隐藏状态。如需将其显示出来,请转到Settings》Aboutphone并点按Buildnumber七次。返回上一屏幕,在底部可以找到Developeroptions。
在某些设备上,Developeroptions屏幕所在的位置或命名方式可能有所不同。
现在,您可以将设备与USB连接。可以从android_sdk/platform-tools/目录执行adbdevices来验证设备是否连接。如果已连接,您将看到设备名称以“设备”形式列示。
注:当您连接运行Android4.2.2或更高版本的设备时,系统将显示一个对话框,询问您是否接受允许在这台计算机上调试的RSA密钥。这种安全机制可以保护用户设备,因为它可以确保只有在您能够解锁设备并确认对话框的情况下才能执行USB调试和其他ADB命令。
如需了解有关通过USB连接到设备的详细信息,请参阅在硬件设备上运行应用。
通过WLAN连接到设备
一般情况下,通过USB使用adb。不过,也可以按照下面的说明通过WLAN使用它。
将Android设备和adb主计算机连接到这两者都可以访问的常用WLAN网络。请注意,并非所有访问点均适用;您可能需要使用已正确配置防火墙的访问点以支持adb的访问点。
注:如果您尝试连接到AndroidWear设备,则通过关闭与其连接的手机的蓝牙强制将它连接到WLAN。
使用USB电缆将设备连接到主计算机。
设置目标设备以侦听端口5555上的TCP/IP连接。
$adbtcpip5555
从目标设备断开USB电缆连接。
查找Android设备的IP地址。例如,在Nexus设备上,您可以通过访问Settings》Abouttablet(或Aboutphone)》Status》IPaddress查找IP地址。或者,在AndroidWear设备上,您可以通过访问Settings》Wi-FiSettings》Advanced》IPaddress查找IP地址。
连接至设备,通过IP地址识别此设备。
$adbconnectdevice_ip_address
请确认您的主计算机已连接至目标设备:
$adbdevices
Listofdevicesattached
device_ip_address:5555device
现在,您可以开始操作了!
如果adb连接丢失:
请确保您的主机仍与您的Android设备连接到同一个WLAN网络。
通过再次执行adbconnect步骤重新连接。
如果无法连接,则重置adb主机:
adbkill-server
然后,从头开始操作。
查询设备
在发出adb命令之前,知道哪些模拟器/设备实例已连接到adb服务器会很有帮助。您可以使用devices命令生成已连接的模拟器/设备的列表:
adbdevices
在响应时,adb针对每个实例输出此状态信息:
序列号—一个由adb创建的字符串,用于通过其控制台端口号唯一标识模拟器/设备实例。序列号的格式为type-console-port。下面是一个序列号示例:emulator-5554
状态—实例的连接状态可为下列状态之一:
offline—实例未连接到adb或不响应。
device—实例现在已连接到adb服务器。请注意,此状态并不表示Android系统已完全启动且可以运行,因为在此实例连接到adb时系统仍在启动。不过,在启动后,这将是模拟器/设备实例的正常运行状态。
nodevice—未连接模拟器/设备。
输出的格式类似如下:
Listofdevicesattached
serial_numberstate
以下示例向您展示了devices命令及其输出:
adbdevices
Listofdevicesattached
emulator-5554device
emulator-5556device
emulator-5558device
将命令发送至特定设备
如果多个模拟器/设备实例正在运行,在发出adb命令时您必须指定一个目标实例。为此,请在命令中使用-s选项。以下是-s选项的用法:
adb-sserial_numbercommand
如上所示,您使用由adb分配的序列号为命令指定目标实例。您可使用devices命令获取正在运行的模拟器/设备实例的序列号。例如:
adb-semulator-5556installhelloWorld.apk
注意,如果在多个设备可用时您未指定目标模拟器/设备实例就发出命令,那么adb将生成一个错误。
如果您有多个设备可用(硬件或模拟设备),但只有一个设备是模拟器,则使用-e选项将命令发送至该模拟器。同样,如果有多个设备,但只连接了一个硬件设备,则使用-d选项将命令发送至该硬件设备。
安装应用
您可以使用adb从开发计算机复制应用,并将其安装到模拟器/设备实例上。为此,请使用install命令。使用此命令,您必须指定您要安装的APK文件的路径:
adbinstallpath_to_apk
如需有关如何创建可在模拟器/设备实例上安装的APK文件的详细信息,请参阅构建和运行您的应用。
请注意,如果使用AndroidStudio,则无需直接使用adb(或aapt)在模拟器/设备上安装您的应用。而是由AndroidStudio为您处理应用的打包和安装。
设置端口转发
您可以使用forward命令设置任意端口转发—将对特定主机端口的请求转发到模拟器/设备实例上的其他端口。下面向您介绍如何设置主机端口6100到模拟器/设备端口7100的转发:
adbforwardtcp:6100tcp:7100
您也可以使用adb设置传输到指定的抽象UNIX网域套接字的转发,如下所示:
adbforwardtcp:6100local:logd
将文件复制到设备/从设备复制文件
您可以使用adb命令pull和push将文件复制到模拟器/设备实例或从其中复制文件。与install命令不同(其仅将APK文件复制到特定位置),pull和push命令允许您将任意目录和文件复制到模拟器/设备实例中的任意位置。
要从模拟器或设备复制文件或目录(及其子目录),请使用
adbpullremotelocal
要将文件文件或目录(及其子目录)复制到模拟器或设备,请使用
adbpushlocalremote
在上述命令中,local和remote指的是开发计算机(本地)和模拟器/设备实例(远程)上目标文件/目录的路径。例如:
adbpushfoo.txt/sdcard/foo.txt
停止adb服务器
在某些情况下,您可能需要终止adb服务器进程,然后重启它以解决问题(例如,如果adb不响应命令)。
要停止adb服务器,请使用adbkill-server命令。然后,您可以通过发出任意其他adb命令重启服务器。
adb命令参考
您可以在开发计算机上从命令行发出adb命令,或通过脚本发出。用法如下:
adb[-d|-e|-sserial_number]command
如果只有一个模拟器在运行或只连接了一个设备,则默认情况下将adb命令发送至该设备。如果有多个模拟器在运行和/或连接了多个设备,您需要使用-d、-e或-s选项指定应向其发送命令的目标设备。
发出shell命令
您可以使用shell命令通过adb发出设备命令,可以进入或不进入模拟器/设备实例上的adb远程shell。要在不进入远程shell的情况下发出一个命令,请使用如下shell命令:
adb[-d|-e|-sserial_number]shellshell_command
或者,使用如下命令进入模拟器/设备实例上的远程shell:
adb[-d|-e|-sserial_number]shell
当您准备退出远程shell时,按Control+D或输入exit。
shell命令二进制文件存储在模拟器或设备的文件系统中,其路径为/system/bin/。
调用ActivityManager(am)
在adbshell中,您可以使用ActivityManager(am)工具发出命令以执行各种系统操作,如启动Activity、强行停止进程、广播intent、修改设备屏幕属性及其他操作。在shell中,此语法为:
amcommand
您也可以直接从adb发出ActivityManager命令,无需进入远程shell。例如:
adbshellamstart-aandroid.intent.action.VIEW
调用软件包管理器(pm)
在adbshell中,您可以使用软件包管理器(pm)工具发出命令,以对设备上安装的应用软件包进行操作和查询。在shell中,此语法为:
pmcommand
您也可以直接从adb发出软件包管理器命令,无需进入远程shell。例如:
adbshellpmuninstallcom.example.MyApp
进行屏幕截图
screencap命令是一个用于对设备显示屏进行屏幕截图的shell实用程序。在shell中,此语法为:
screencapfilename
要从命令行使用screencap,请输入以下命令:
$adbshellscreencap/sdcard/screen.png
以下屏幕截图会话示例向您展示使用adbshell捕获屏幕截图,并使用pull命令从设备下载此文件:
$adbshell
shell@$screencap/sdcard/screen.png
shell@$exit
$adbpull/sdcard/screen.png
录制视频
screenrecord命令是一个用于录制设备(运行Android4.4(API级别19)及更高版本)显示屏的shell实用程序。此实用程序将屏幕Activity录制到MPEG-4文件。
注:音频不与视频文件一起录制。
开发者可以使用此文件创建宣传视频或培训视频。在shell中,此语法为:
screenrecord[options]filename
要从命令行使用screenrecord,请输入以下命令:
$adbshellscreenrecord/sdcard/demo.mp4
按Control+C停止屏幕录制,否则,到三分钟或--time-limit设置的时间限制时,录制将自动停止。
要开始录制设备屏幕,请运行screenrecord命令以录制视频。然后,运行pull命令从设备将此视频下载到主计算机。下面是一个录制会话示例:
$adbshell
shell@$screenrecord--verbose/sdcard/demo.mp4
(pressControl+Ctostop)
shell@$exit
$adbpull/sdcard/demo.mp4
screenrecord实用程序可以任何支持的分辨率和所需的比特率进行录制,同时保留设备显示屏的纵横比。默认情况下,此实用程序以原生显示分辨率和屏幕方向进行录制,最大时长为三分钟。
下面是screenrecord实用程序的一些已知限制,您在使用时应注意:
某些设备可能无法以它们的原生显示分辨率进行录制。如果在录制屏幕时出现问题,请尝试使用较低的屏幕分辨率。
不支持在录制时旋转屏幕。如果在录制期间屏幕旋转了,则部分屏幕的录制将被切断。
读取应用的ART配置文件
从Android7.0(API级别24)开始,AndroidRuntime(ART)会收集已安装应用的执行配置文件,其可用于优化应用性能。您可能想要检查收集的配置文件,以了解在应用启动期间,系统决定频繁执行哪些方法和使用哪些类。
要生成配置文件信息的文本表单,请使用以下命令:
$adbshellcmdpackagedump-profilespackage
要检索生成的文件,请使用:
$adbpull/data/misc/profman/package.txt
其他shell命令
如需所有可用shell程序的列表,请使用以下命令:
adbshellls/system/bin
大多数命令都提供帮助说明。
评论
查看更多