adb 和 shell、Logcat 常用命令

来源:互联网 发布:福建祥游网络 编辑:程序博客网 时间:2024/04/28 23:48

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 命令列表:

CategoryCommandDescriptionCommentsOptions-d仅仅通过USB接口来管理abd.如果不只是用USB接口来管理则返回错误.-e仅仅通过模拟器实例来管理adb.如果不是仅仅通过模拟器实例管理则返回错误.-s <serialNumber>通过模拟器/设备的允许的命令号码来发送命令来管理adb (比如: "emulator-5556").如果没有指定号码,则会报错.Generaldevices查看所有连接模拟器/设备的设施的清单.查看 Querying for Emulator/Device Instances获取更多相关信息.help查看adb所支持的所有命令。. version查看adb的版本序列号. Debuglogcat [<option>] [<filter-specs>]将日志数据输出到屏幕上. bugreport查看bug的报告,如dumpsys ,dumpstate ,和logcat 信息。 jdwp查看指定的设施的可用的JDWP信息.可以用 forward jdwp:<pid> 端口映射信息来连接指定的JDWP进程.例如: 
adb forward tcp:8000 jdwp:472 
jdb -attach localhost:8000Datainstall <path-to-apk>安装Android为(可以模拟器/设施的数据文件.apk指定完整的路径). pull <remote> <local>将指定的文件从模拟器/设施的拷贝到电脑上. push <local> <remote>将指定的文件从电脑上拷贝到模拟器/设备中. Ports and Networkingforward <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 exampledev:/dev/omap_csmi_ttyl.
  • [parm]...  &mdash zero or more PPP/PPPD options, such as defaultroute ,local , notty , etc.

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

 Scriptingget-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系统完全启动前执行就会有错误发生.Serverstart-server选择服务是否启动adb服务进程. kill-server终止adb服务进程. Shellshell通过远程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"  正则表达式过滤




1 0
原创粉丝点击