adb

adb devices  查询模拟器/设备实例

adb -s <serialNumber> <command>  发送命令

adb install <path_to_apk>  安装软件

adb -s emulator-5556 install aaa.apk    给某设备安装软件

adb forward tcp:6100 tcp:7100    从主机端口转发到模拟器端口转发

adb  -s 192.168.246.101:5555 shell < sniffer 

 

adb pull <remote> <local>   从模拟器或者设备中复制文件或目录

dab push <local><remote>  将文件或目录复制到设备或模拟器

示例:dab push foo.txt /sdcard/foo.txt

 

adb 命令列表:

 

Category

Command

Description

Comments

Options

​-d​

仅仅通过USB接口来管理abd.

如果不只是用USB接口来管理则返回错误.

​-e​

仅仅通过模拟器实例来管理adb.

如果不是仅仅通过模拟器实例管理则返回错误.

​-s <serialNumber>​

通过模拟器/设备的允许的命令号码来发送命令来管理adb (比如: "emulator-5556").

如果没有指定号码,则会报错.

General

​devices​

查看所有连接模拟器/设备的设施的清单.

查看 Querying for Emulator/Device Instances获取更多相关信息.

​help​

查看adb所支持的所有命令。.

 

​version​

查看adb的版本序列号.

 

Debug

​logcat [<option>] [<filter-specs>]​

将日志数据输出到屏幕上.

 

​bugreport​

查看bug的报告,如​​dumpsys​​​ ,​​dumpstate​​​ ,和​​logcat​​ 信息。

 

​jdwp​

查看指定的设施的可用的JDWP信息.

可以用 ​​forward jdwp:<pid>​​ 端口映射信息来连接指定的JDWP进程.例如: 

​adb forward tcp:8000 jdwp:472​​ 

​jdb -attach localhost:8000​

Data

​install <path-to-apk>​

安装Android为(可以模拟器/设施的数据文件.apk指定完整的路径).

 

​pull <remote> <local>​

将指定的文件从模拟器/设施的拷贝到电脑上.

 

​push <local> <remote>​

将指定的文件从电脑上拷贝到模拟器/设备中.

 

Ports and Networking

​forward <local> <remote>​

用本地指定的端口通过socket方法远程连接模拟器/设施

端口需要描述下列信息:


  • ​tcp:<portnum>​
  • ​local:<UNIX domain socket name>​
  • ​dev:<character device name>​
  • ​jdwp:<pid>​

​ppp <tty> [parm]...​

通过USB运行ppp:


  • ​<tty>​​​ — the tty for PPP stream. For example​​dev:/dev/omap_csmi_ttyl​​.
  • ​[parm]... ​​​ &mdash zero or more PPP/PPPD options, such as​​defaultroute​​​ ,​​local​​​ ,​​notty​​ , etc.

需要提醒你的不能自动启动PDP连接.


 

Scripting

​get-serialno​

查看adb实例的序列号.

查看 Querying for Emulator/Device Instances可以获得更多信息.

​get-state​

查看模拟器/设施的当前状态.

​wait-for-device​

如果设备不联机就不让执行,--也就是实例状态是 ​​device​​ 时.

你可以提前把命令转载在adb的命令器中,在命令器中的命令在模拟器/设备连接之前是不会执行其它命令的. 示例如下:

adb wait-for-device shell getprop

需要提醒的是这些命令在所有的系统启动启动起来之前是不会启动adb的 所以在所有的系统启动起来之前你也不能执行其它的命令. 比如:运用​​install​​ 的时候就需要Android包,这些包只有系统完全启动。例如:

adb wait-for-device install <app>.apk

上面的命令只有连接上了模拟器/设备连接上了adb服务才会被执行,而在Android系统完全启动前执行就会有错误发生.

Server

​start-server​

选择服务是否启动adb服务进程.

 

​kill-server​

终止adb服务进程.

 

Shell

​shell​

通过远程shell命令来控制模拟器/设备实例.

查看 获取更多信息 for more information.

​shell [<shellCommand>]​

连接模拟器/设施执行shell命令,执行完毕后退出远程shell端l.

 

adb [-d|-e|-s{<serialNumber>}] shell <shellCommand>     使用shell执行一条命令

 

adb [-d|-e|-s{<serialNumber>}] shell   进入shell ,使用ctrl+D 或exit命令退出shell

kill-server 终止dab server

 

 

logcat


adb logcat --help 查看帮助 adb logcat [选项] [过滤项]

选项



--"-s"选项 : 设置输出日志的标签, 只显示该标签的日志;

--"-f"选项 : 将日志输出到文件, 默认输出到标准输出流中, -f 参数执行不成功;

--"-r"选项 : 按照每千字节输出日志, 需要 -f 参数, 不过这个命令没有执行成功;

--"-n"选项 : 设置日志输出的最大数目, 需要 -r 参数, 这个执行 感觉 跟 adb logcat 效果一样;

--"-v"选项 : 设置日志的输出格式, 注意只能设置一项;

--"-c"选项 : 清空所有的日志缓存信息;

--"-d"选项 : 将缓存的日志输出到屏幕上, 并且不会阻塞;

--"-t"选项 : 输出最近的几行日志, 输出完退出, 不阻塞;

--"-g"选项 : 查看日志缓冲区信息;

--"-b"选项 : 加载一个日志缓冲区, 默认是 main, 下面详解;

--"-B"选项 : 以二进制形式输出日志;


 

过滤项



-- V : Verbose (明细);

-- D : Debug (调试);

-- I : Info (信息);   默认

-- W : Warn (警告);

-- E : Error (错误);

-- F: Fatal (严重错误);

-- S : Silent(Super all output) (最高的优先级, 可能不会记载东西);



示例


adb logcat -s System.out   输出System.out标签的信息 adb logcat -f /sdcard/log.txt   输出到手机文件上,可以使用&后台运行 adb shell ps | grep logcat     查找进程 adb shell ps | findstr "logcat" 查找进程,windows平台命令   adb logcat > log ctrl C more log    使用more log 查看日志信息

 

adb logcat -d -v /sdcard/mylog.txt  日志保存在手机指定位置 adb logcat -v time   查看日志输出时间 adb logcat -v threadtime   日志输出时间和线程信息 adb logcat -v brief        默认的日志格式 adb logcat -v process      进程优先级日志信息 adb logcat -v tag           标签优先级日志信息 adb logcat -v raw          只输出日志不输出其它信息 adb logcat -v time         time格式输出   adb logcat -c               清空 adb logcat -d             缓存输出 adb logcat -t 5          最近5行 adb logcat -g           查看日志缓冲区 adb logcat -b         加载日志缓冲区 adb logcat -B         二进制形式输出日志   adb logcat  *:E    显示Error以上级别日志   adb logcat string:D *:S  标签为string,优先级为Debug级别以上的 adb logcat | grep string     管道过滤字符串,不管是不是标签 adb logcat | grep -i string   忽略大小写 adb logcat | grep "^..ABC"  正则表达式过滤