本文翻译android adb官网的说明与命令使用方法:
adb 使用socket进行PC与手机设备的通信。
Android调试桥(adb)是一个通用的命令行工具,可以让你与一个模拟器实例或连接安卓设备通信。它是一个客户机-服务器程序,包括三部分:
1. adb client,运行在你的开发机器上的服务,你可以从client发出一个adb的shell命令。其他的android 工具例如“adt”和“ddms”也创建于client端。adb为ddms工具
2. adb server,运行在开发机器的后台进程,server管理着client和daemon(虚拟机或者是实体机)的通讯。
3. adb daemon,运行在虚拟机或者是实体机的后台进行。用于移动机器与PC机器的通信。
adb的目录:
当你运行在pc机上运行adb服务时,adb服务先回查找adb server进程是否在运行,如果不在运行,则启动服务,如果服务在运行,它绑定了本地的5037端口并监听adbclients,adbclients使用5037端口与adb server进行通讯。
server与正在运行的emulator/device进行自动连接,他通过奇数范围的端口号进行连接端口号范围为“5555-5585”,用这个范围去识别emulators/devices。当一个server寻找一个adbdaemon时,他会连接这些端口,记录哪一个emulator/devices实例获得顺序的端口号,注意一个emulator/devices 会获取一个偶数端口号作为“控制台连接端口号”和一个奇数端口号作为“adb 连接端口号”例如:
Emulator1, console: 5554
Emulator 1, adb: 5555
Emulator 2, console: 5556
Emulator 2, adb: 5557
等等…
也就是说“:Emulator/Device占用两个(一组)端口,一个为偶数的5554,一个奇数的5555。
如果还开启其他的Emulator,则使用的另一组端口是5556,5557,一直到5585.”
其中,adbservers 与emulator/devices交互时使用了一组端口(2个端口),一个是偶数端口(5554)专门用于与emulator实例的连接,数据可以从emulator转发给ide控制台,一个是奇数端口(5555)专门与adb daemon连接为调试使用。
一旦服务器建立起连接你就可以使用adb命令去访问这些实例了,可以发送不同的adb命令因为服务管理连接emulator/devices,您可以控制任何模拟器/设备实例从任何客户端(或脚本)。
提示:当你连接的设备上运行Android4.2.2或更高的到你的电脑,系统显示一个对话框询问是否接受一个RSA密钥,允许调试通过这台电脑。这种安全机制保护用户设备,因为它确保了USB调试和其他adb client命令不能执行,除非你能解锁设备并承认对话框。这要求你有adb 1.0.31版本以便于在Android4.2.2或更高的版本上进行调试运行。
adb命令:
-d:只通过usb连接device
-e:只运行emulaor实例
devices:显示pc机上所有的android机器列表
help:帮助
version:版本
logcat [option] [filter-spects]:打印log到屏幕上(可以选择性打印)
bugreport:包含丰富的系统(内存/cpu等信息)和用户log信息,它是其他很多命令输出的结果的记录,非常有用。
jdwp: (java debug wireprotocol)是dalvikVM的一个线程,可以建立在adb或者tcp基础上,与DDMS或debugger进行通信。托管一个JDWP运输的列表进程的PID。
install:安装一个apk
pull :从设备中导出文件导pc机
adb pull
push:从PC机上导出文件t推送到emulator/devices上
adb push
forward:将socket 连接从一个指定的本地端口转发到指定的远程端口模拟器/设备实例。
adb forward tcp:6100 tcp:7100把6100端口转发到7100端口
例如:tcp:
local:
dev:
jdwp:
get-serialno:获取设备的名称
get-state:获取设备的属性(devices/emulator)
wait-for-devices:等待设备连接
可以跟别的命令同时运行如:adbwait-for-device install
adb shell getprop:获取系统属性
adb shell setprop:设置系统属性
start-server:开启adb服务
kill-servier:关闭adb服务
shell:在目标实例上运行shell的命令,进入shell模式
shell[shellCommand]:在目标实例上运行shell的命令