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 优先级 / 标签] 日志信息 ”的日志。

过滤项解析:
过滤项格式 : [:priority] , 标签:日志等级, 默认的日志过滤项是 " *:I " ;

  • 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为键值
posted @ 2019-12-24 09:49  心脏鼓点  阅读(1104)  评论(0编辑  收藏  举报