ADB原理与adb常用命令

本文翻译android adb官网的说明与命令使用方法:

adb 使用socket进行PC与手机设备的通信。

Android调试桥(adb)是一个通用的命令行工具,可以让你与一个模拟器实例或连接安卓设备通信。它是一个客户机-服务器程序,包括三部分:

1.      adb  client,运行在你的开发机器上的服务,你可以从client发出一个adbshell命令。其他的android 工具例如“adt”和“ddms”也创建于client端。adbddms工具

2.      adb server,运行在开发机器的后台进程,server管理着clientdaemon(虚拟机或者是实体机)的通讯。

3.      adb daemon,运行在虚拟机或者是实体机的后台进行。用于移动机器与PC机器的通信。

adb的目录:/platform-tools/.

当你运行在pc机上运行adb服务时,adb服务先回查找adb server进程是否在运行,如果不在运行,则启动服务,如果服务在运行,它绑定了本地的5037端口并监听adbclientsadbclients使用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基础上,与DDMSdebugger进行通信。托管一个JDWP运输的列表进程的PID

install:安装一个apk

pull :从设备中导出文件导pc

adb pull adb pull /sdcard/a.txt e:/a.txt:把android系统中的a.txt文件pullPCe盘下。

push:从PC机上导出文件t推送到emulator/devices

adb push adb push e:/a.txt /sdcard/ PC上的文件pushandroid机器上。

forwardsocket 连接从一个指定的本地端口转发到指定的远程端口模拟器/设备实例。

adb forward tcp6100 tcp:71006100端口转发到7100端口

例如:tcp:

local:

dev:

jdwp:

 

get-serialno:获取设备的名称

get-state:获取设备的属性(devices/emulator

wait-for-devices:等待设备连接

       可以跟别的命令同时运行如:adbwait-for-device install .apk

adb  shell getprop:获取系统属性

adb shell setprop:设置系统属性

start-server:开启adb服务

kill-servier:关闭adb服务

shell:在目标实例上运行shell的命令,进入shell模式

shell[shellCommand]:在目标实例上运行shell的命令


你可能感兴趣的:(测试理论,android)