adb命令的使用
adb的全称为(Android Debug Bridge)就是调试桥的作用。Adb命令存放在SDK的Tools文件夹下,又称为手机和电脑连接的桥梁命令。
借助这个工具,我们可以管理设备或手机模拟器的状态。还可以进行以下的操作:
- 快速更新设备或手机模拟器中的代码,如应用或Android 系统升级;
- 在设备上运行shell命令;
- 管理设备或手机模拟器上的预定端口;
- 在设备或手机模拟器上复制或粘贴文件;
- 查看日志;
- 分析app内存。
常用的adb命令
- 连接到模拟器
adb connect 127.0.0.1:6555 - 显示当前运行的全部模拟器
adb devices - 安装应用程序: adb install 应用程序.apk
adb install E:\CalcTest.apk - 覆盖安装应用程序: adb install 应用程序.apk –r
adb install -r E:\CalcTest.apk - 获取当前运行程序的包名
adb shell dumpsys window | findstr mCurrentFocus - 缷载apk包:adb uninstall apk包的主包名
adb uninstall com.skv.jisuanji - 对某一模拟器执行命令: adb -s 模拟器编号 命令
adb -s 127.0.0.1:6555 install E:\CalcTest.apk - 进入手机的超级终端Terminal(登录到模拟器Linux操作系统)
adb shell - 向模拟器中写文件(上传): adb push
adb push E:\data.csv /cache - 从模拟器中复制文件到本地(下载):adb pull
adb pull /cache/data.csv D:\ - 以root权限重启adb
adb root - 命令行显示Log(查看日志):adb logcat
将日志保存到模拟器(-f:将日志输出到文件)
adb logcat -f /test/log.txt
将日志保存到本地
adb logcat>D:\a.txt
过滤(用adb shell进入Linux才可以使用)
logcat -v tag *:E | grep -i ZKOPCountUtil
利用正则表达式过滤
logcat -v tag *:E | grep -i "^..ZKO"
查看app相关所有信息
adb shell dumpsys package com.sky.jisuanji
利用反编译方式获取app的相关信息
aapt dump badging E:\CalcTest.apk(需要配置aapt的环境变量)
备注:在使用adb命令之前,手机要开启usb debug模式
使用adb shell命令时出错,如下图所示:
问题分析:出现此问题是由于端口占用引起,把占用端口的进程kill掉
解决方法:
adb nodaemon server
netstat -ano | findstr "5037”
然后去任务管理器关掉相应进程
命令行显示Log: adb logcat
adb logcat [选项] [过滤项], 其中 选项 和 过滤项 在 中括号 [] 中, 说明这是可选的。
-- "-s"选项 : 设置输出日志的标签, 只显示该标签的日志; 如想要输出 "System.out" 标签的信息, 就可以使用adb logcat -s System.out 命令
“-f”选项 : 将日志输出到文件, 默认输出到标准输出流中,该选项后面跟着输入日志的文件, 使用adb logcat -f /sdcard/log.txt 命令, 注意这个log文件是输出到手机上,需
要指定合适的路径。
"-c"选项 : 清空所有的日志缓存信息;
"-v"选项 :
adb logcat -v time :可以啥看日志的输出时间;
adb logcat -v threadtime :可以啥看日志的输出时间和线程信息;
adb logcat -v process:格式为“优先级 (进程ID) : 日志信息 "的日志;
adb logcat -v tag:格式为 " 优先级 / 标签 : 日志信息" 的日志;
adb logcat -v thread :格式为 "优先级 ( 进程ID : 线程ID) 标签 : 日志内容" 的日志;
adb logcat -v raw :只输出日志信息, 不附加任何其他信息;
adb logcat -v long:格式为 “ [ 日期 时间 进程ID : 线程ID 优先级 / 标签] 日志信息 ”的日志。
过滤项解析:
过滤项格式 :
- V : Verbose (明细);
- D : Debug (调试);
- I: Info (信息);
- W: Warn (警告);
- E: Error (错误);
- F: Fatal (严重错误);
- S : Silent(Super all output) (最高的优先级, 可能不会记载东西)
举例:
1、显示 Error 以上级别的日志:adb logcat *:E
2、可以同时设置多个过滤器,如:adb logcat WifiHW:D dalvikvm:I *:S
输出 WifiHW 标签 的 Debug 以上级别 和 dalvikvm 标签的 Info 以上级别的日志
- Logcat还支持过滤固定字符串、使用正则表达式匹配,如下:
adb logcat | grep -i wifi
adb logcat | grep "^..Activity" - 命令查看当前运行的包名和Activity,使用它前先要打开待测app:
adb shell dumpsys window | findstr mCurrentFocus - 查看app相关所有信息,包括action,codepath,version,需要的权限等等信息:
adb shell dumpsys package <package_name>
package_name可以通过上面的命令获取,也可以使用:
Aapt dump badging APK路径 反编译方式获取 - 查看app的路径:adb shell pm path <package_name>
adb shell pm path com.sky.jisuanji - 启动activity:adb shell am start -n <package_name>/.<activity_class_name>
adb shell am start -n com.sky.jisuanji/com.sky.jisuanji.JisuanjizixieActivity
- 删除与包相关的所有数据,清除数据和缓存:adb shell pm clear <package_name>
- 查看某个app的进程相关信息:adb shell ps | grep <package_name>
ps | grep com.sky.jisuanji
- 杀掉某个进程,一般用于模拟某个bug复现:
adb shell kill pidNumber - 查看某一个app的内存占用:adb shell dumpsys meminfo <package_name|PID>
dumpsys meminfo com.sky.jisuanji
- 利用adb命令按住按键:
adb shell input keyevent KEYCODE_POWER
KEYCODE_POWER为键值