ADB命令

adb shell "logcat |grep Displayed" 查看当前运行app的日志
adb shell logcat|findstr Display

输入以下命令获取Package和Activity

adb shell dumpsys window |findstr mCurrent
adb shell dumpsys window|findstr "mFoc"
adb shell logcat |findstr START

adb get-state , 获取设备的状态
adb kill-server , adb start-server , 结束 adb 服务, 启动 adb 服务,通常两个命令一起用
am monitor , 监控 crash 与 ANR
adb shell ps 找pid
adb shell cat /proc/"+Pid+"/net/dev" 看流量

当有多个设备,需要指定某个设备进行操作时:

参数 含义
-d 指定当前唯一通过 USB 连接的 Android 设备为命令目标
-e 指定当前唯一运行的模拟器为命令目标
-s 指定相应 serialNumber 号的设备/模拟器为命令目标



window 下用findstr 代替 linux的 grep
adb shell中文显示乱码 chcp 65001


adb shell "logcat |grep Displayed" 查看当前运行app的日志
adb shell logcat|findstr Display

 
重启 Android 设备
adb reboot 

adb pull , 将 Android 设备上的文件或者文件夹复制到本地
  • 例如复制 Sdcard 下的 pull.txt 文件到 D 盘:

    adb pull sdcard/pull.txt d:

    如果需要重命名为 rename.txt:

    adb pull sdcard/pull.txt d:
    ename.txt

    注意权限,复制系统权限的目录下的文件,需要 root ,并且一般的 Android 机 root 之后并不能使用命令去复制,而需要在手机上使用类似于 RE 的文件浏览器,先对系统的文件系统进行挂载为可读写后,才能在手机上复制移动系统文件,这里推荐使用小米手机的开发版本,IUNI 也是不错滴~~

  • adb push , 推送本地文件至 Android 设备

    例如推送 D 盘下的 push.txt 至 Sdcard:

    adb push d:push.txt sdcard/

    sdcard 后面的斜杠不能少,否则会出现下面的错误:

    [xuxu:~]$ adb push push.txt sdcard
    failed to copy 'push.txt' to 'sdcard': Is a directory
 

安装APK
使用 adb install 后面可以加上参数来控制安装行为:

参数 含义
-l 将应用安装到保护目录 /mnt/asec
-r 允许覆盖安装
-t 允许安装 AndroidManifest.xml 里 application 指定 android:testOnly=“true” 的应用
-s 将应用安装到 sdcard
-d 允许降级覆盖安装
-g 授予所有运行时权限
// 安装一个应用
adb install D:工作文件Cccccccc-v1.1.9.apk

//示例输出状态,代表安装成功
327 KB/s (25896185 bytes in 77.157s)
Success

卸载应用
// 卸载应用的命令
adb uninstall com.hevc.hevcandroid
adb uninstall -k com.hevc.hevcandroid //-k参数可选,代表卸载应用但保留数据和缓存目录
//示例输出
Success

 

启动Activity

(通常一个app上面的界面就是一个Activity,下面将讲到如何获取activity),如

adb shell am start -W -S com.baidu.tieba/.tblauncher.MainTabActivity

启动浏览器访问百度

adb shell am start –a android.intent.action.VIEW –d http://www.baidu.com

adb shell am start -n com.android.camera/.Camera 启动相机
adb shell am start -S com.android.camera/.Camera 先停止目标再启动
adb shell am start -a android.intent.action.VIEW -d http://testerhome.com 启动浏览器打开网页
adb shell am start -a android.intent.action.CALL -d tel:10086 启动并拨号10086

 

关闭APP
adb shell am force-stop <包名>

 

**dumpsys命令**

adb shell dumpsys 查询系统服务信息(查看activity),包括系统服务和其他应用的服务,非常多,一般会添加参数过滤
 adb shell dumpsys activity |findstr “mFoc” 查找当前交互的界面(正在运行的应用的activity),如下图圈中部分,就是正在运行的百度贴吧的 activity

查看测试机cpu信息
// 命令
adb shell dumpsys cpuinfo


查看测试机内存信息
// 命令
adb shell dumpsys meminfo

查看测试机所有包信息
// 命令
adb shell dumpsys activity

查看电池状态
// 命令
adb shell dumpsys battery

查看系统GPU
adb shell dumpsys gfxinfo 包名

查看设备分辨率
// 命令
adb shell wm size


查看屏参数
// 命令
adb shell dumpsys window displays

查看android 系统版本
// 命令
adb shell getprop ro.build.version.release

 

**input命令**

  adb shell input text <text> 输入文本

  adb shell input keyevent <KEYCODE> 模拟按键操作,KEYCODE太多,下面会将相关参考贴上

部分常见按键对应值:
Key  | Constant Value
Back 4
Power 26
Menu 82
Home 3
Search 84
 
方向键:
上 19
下 20
左 21
右 22
确认(类似单击):23


  adb shell input tap <X,Y> 模拟点击,X,Y为坐标
  adb shell input swipe <X0,Y0,X1,Y1,TIME> 模拟滑动屏幕
PS:如何获取手机中某一位置的坐标:

  要获取手机的坐标位置,需要在开发者选项中打开指针位置,开发者选项中通过指针位置选项可以获取到坐标位置。

 

> adb shell input keyevent 3

 

> adb shell input tap 250 250

 

> adb shell input swipe 250 250 300 300

 

 


日志查看
控制台直接打印
// 命令,没有添加任何过滤,代表打印所有日志,测试意义不大
**adb logcat**

指定打印某个应用的日志

logcat 命令行参数
参数 描述
-b 加载一个可使用的日志缓冲区供查看,比如event和radio。默认值是main
-c 清除缓冲区中的全部日志并退出(清除完后可以使用-g查看缓冲区)
-d 将缓冲区的log转存到屏幕中然后退出
-f 将log输出到指定的文件中<文件名>.默认为标准输出(stdout)
-g 打印日志缓冲区的大小并退出
-n 设置日志的最大数目<count>,默认值是4,需要和-r选项一起使用
-r 没<kbytes>时输出日志,默认值是16,需要和-f选项一起使用
-s 设置过滤器
-v 设置输出格式的日志消息。默认是短暂的格式。支持的格式列表

//使用find或者grep来筛选应用日志,这里我拿微信来测试打印日志
adb logcat | grep com.tencent.mm
adb logcat | find "com.tencent.mm" //find后面需要加上“”引号

 

输出最近的日志 : 使用adb logcat -t 5 命令, 可以输出最近的5行日志,
并且不会阻塞;

 

打印dumpsys、dumpstate、logcat的输出,也是用于分析错误

adb shell  bugreport

输出比较多,建议重定向到一个文件中

adb shell dumpsys > d:ugreport.log

 

 

**Adb应用管理pm**

查看测试机所有包名
// 命令
adb shell pm list package

//示例输出:
package:com.miui.screenrecorder
package:com.android.cts.priv.ctsshim
package:com.qualcomm.qti.qms.service.telemetry

可在adb shell pm list package后面加参数,进行过滤查看:

参数 显示内容
无 查看所有应用
-f 显示应用关联的 apk 文件
-d 只显示 disabled 的应用
-e 只显示 enabled 的应用
-s 只显示系统应用
-3 只显示第三方应用
-i 显示应用的安装来源
-u 包含已卸载应用

**模糊查找应用**
// 命令
adb shell pm list packages hevc //查找带有hevc字符的应用
//示例输出
package:com.hevc.hevcandroid

清除应用缓存和数据
adb shell pm clear 包名



**截屏**
adb shell screencap -p /sdcard/screen.png ,保存至 sdcard 目录
adb shell screenrecord sdcard/record.mp4,执行命令后操作手机,ctrl + c 结束录制,录制结果保存至 sdcard


查看设备cpu和内存占用情况

adb shell top
参数:
查看设备cpu和内存占用情况
-m num
查看占用内存前num的app
-n num
刷新多少次退出
-d num
刷新时间间隔(单位秒,默认值 5)
-s col
按某列排序(可用 col 值:cpu, vss, rss, thr)
-t
显示线程信息
-h
显示帮助文档


运行在 Android 设备上的 adb 后台进程
db shell ps | grep adbd

adb shell ps | grep [process],找出对应的进程pid adb shell dumpsys meminfo [pid],根据进程pid查看进程占用的内存 或者 adb shell dumpsys meminfo<package_name>,package_name 也可以换成程序的pid,pid可以通过 adb shell top | grep app_name 来查找
adb shell ps, 查看当前终端中的进程信息

 

Adb Shell命令下使用的一些linux命令命令:
ls // 查看目录

date // 打印或设置当前系统时间

cat /proc/meminfo // 查看内存信息

cat /proc/cpuinfo // 查看CPU信息







原文地址:https://www.cnblogs.com/lexus168/p/13911680.html