常用的ADB命令

前言

其实关于adb命令的博文已经很多而且有些写的很全面的,但我之所以自己也写一遍[而且内容不全]并不是想“狗尾续貂”,只是最近有一次忽然发现,以前用过的很多命令有些忘记了,平时想不起来直接度娘了。现在忽然感觉有必要记一下,虽然有点晚,但总比停下来强一些,写一遍也让自己对adb命令有个新的认识。以下所有的adb命令全部是本人在工作中使用过或者自己平时使用过的,如有记录出错或者错误望诸位指正。

一、adb环境与前期准备

(一).环境与连接方式
1.常见的有3种配置方式:

a.Android开发者:直接配置adb命令环境变量;
b.偶尔使用者:Google Chrome浏览器添加adb插件:adb插件下载地址
c.应急:直接下载adb命令工具包 :adb命令工具包

2.连接方式

a. USB一类的数据线,最为常见的连接方式;

b. 网络连接,网络连接的前提是Android设备和pc在同一局域网下,常见有:
(1)、Ethernet以太网(直接插个网线);
(2)、WIFI
网络连接方式在确认设备连上网之后,还需要执行adb connect HOST[:PORT]命令之后才是可以使用;其中host是Android设备IP地址。

3.断开连接

a. 暴力型:直接拔掉USB、断开WIFI、拔掉网线;
b. adb命令:adb disconnect [HOST[:PORT]],这条命令只是针对Ethernet和WIFI的连接方式;

(二)、Help命令与基本语法:
1.Help命令

一个开发人员在面对任何一种命令或者语言时,很难做到记住全部的知识点和技巧的,所以首先需学会的就是如何查找资料 解决问题,在adb命令中同样有帮助命令;Android基于Linux发展而来的,所以很多Linux命令和adb命令是通用的。

编号命令帮助
1adb helpadb帮助命令,提示部分adb命令的使用方法
2< command > -helpcommand 帮助命令,适用于部分命令
3< command > -hcommand 帮助信息,例:cat -h ,备注:适用于部分命令
2. 基本语法

adb [-d|-e|-s < serialNumber>] < command>
符号含义:
[]:表示可以省略;| :表示或即“|”左右命令是同一级别两种操作类型;< >:表示是命令的一部分,必须存在不可省略的;
其中;
d:这条命令目标对象时usb连接的设备(use USB device );
e: 命令的对象为网络连接设备包括WIFI和以太网(use TCP/IP device);
s < serialNumber> : 命令的对象的serialNumber编号[use device with given serial ];

二、开发中的adb命令

菜鸟基本命令

1. adb基本命令

挂载设备
adb remount
shell模式
adb shell
adb版本号
adb version
adb状态
adb get-state
开启adb Server
adb start-server;
关闭adb Server
adb kill-server
查看当前已连设备
adb devices
USB模式下重新启动
adb usb
网络连接设备
adb connect < host > [: < port > ]
断开连接
adb disconnect [< host> [:< port>]
重定向连接
adb forward < local> < remote>

  • adb froward –no-rebind < local> < remote>
  • adb forward –remove < local>
  • adb forward –remove-all

安装apk
adb install path/xxx.apk
强制安装
adb install -r path/xxx.apk
卸载apk
adb uninstall <包名>
将文件push进设备
adb push < local files directories > [directories to device]
将设备中文件pull到PC
adb pull < device files directories > [local files directories]
重启
adb reboot
获取设备ID
adb get-product
获取设备序列号
adb get-serialno

Logcat命令

adb logcat -h

log日志

logcat [options] [filterspecs]

log等级过滤:

adb logcat * :[debug level]

debug level
  • adb logcat *: V lowest level
  • **adb logcat *: D Debug **
  • **adb logcat *: I Info **
  • **adb logcat *: W Warning **
  • **adb logcat *: E Error **
  • **adb logcat *: F Fatal **
  • **adb logcat *: S| nothing is ever printed **
TAG 、Log级别过滤日志

adb logcat < filter-spec>
其中 < filter-spec>可以由多个 < tag>[:priority] 组成
例: adb logcat MainActivity:D HomeFragemt:I *:S
只输出TAG为MainActivity的Debug以上和 TAG为HomeFragemt的Info 以上的log日志,屏蔽其他的log日志;

清空日志

adb logcat -c

内核日志

adb shell dmesg

文件操作命令

进入目录

adb shell cd< directory >

返回上一级的目录

adb shell cd …

返回上一次的目录

adb shell cd -

列出目录内容

adb shell ls [-a] [-i] [-l] [-n] [-s]

打印当前目录

adb shell pwd

创建空文件夹

adb shell touch
adb shell touch /storage/emulated/0/temp.text |

创建目录

adb shell mkdir | [-vp] [-m mode] [dirname…]
参数:
-m, -mode 模式,设定权限

-p,--parents 递归创建目录

-v,-verbose 创建新目录都显示信息
例:
mkdir /storage/emulated/0/tmp
mkdir -m 777 /storage/emulated/0/tmp
mkdir -p /storage/emulated/0/tmp

复制文件夹

adb shel cp [options] < source> < dest>

移动/重命名文件夹move or rename files

adb shell mv[-fiv]t[options] < source> < dest>

-f:强制移动,若文件已经存在目标则直接覆盖
-i:若目标文件已经存在,会询问是否覆盖
例:
move :adb shell mv /sdcard/tmp /system/tmp
rename :adb shell mv /sdcard/tmp /sdcard/test

修改文件夹名字

adb shell mv [options] < source> < dest>
例: adb shell mv storage/emulated/0/test storage/emulated/0/temp_test

删除文件夹:

adb shell rm [-f|-i][options] [-dPRrvWx] < files or directory>

-f:强制删除文件,系统不提示
-r:强制删除文件夹包括里面的文件

删除目录

adb shell rmdir[-p] directory
-p:递归删除目录,只能删除空目录

复制文件

adb shell dd [operand…]
dd if =source of=targe

查看文件内容

adb shell cat [-beflnstuv] [-B bsize] [file…]

列出分区列表

adb shell df

查询文件或目录的磁盘使用空间

adb shell du [-H] [-L] [-P] [-a] [-d depth] [-s] [-cghikmnrx] [file…]

Package管理命令

NetWork网络命令

设备网络统计

adb shell netstat [-pWrxwutneal]

ping命令测试网络

adb shell ping [-aAbBdDfhLnOqrRUvV]
例:adb shell ping www.baidu.com

查看网络状态

adb shell netcfg

查看设置IP路由

adb shell ip [ OPTIONS ] OBJECT

查看WIFI的IP地址:

adb shell
ip -f inet addr show wlan0

dumpsys信息日志

adb shell dumpsys [options]

系统服务列表

adb shell dumpsys -l
adb shell serverce list

查看具体的系统服务

adb shell dumpsys [servicename]
windows服务为例:
adb shell dumpsys window

内存使用信息

adb shell dumpsys meminfo
详细使用:
adb shell dumpsys meminfo -h

cpu使用信息

adb shell dumpsys cpuinfo

电池使用信息Current Battery Service state

adb shell dumpsys battery

安装包信息

adb shell dumpsys package [-h] [-f] [—checkin] [cmd]…
adb shell dumpsys package <apk包名>可获取
apk基本信息,包括四大组件、Intent-flag 、版本号、权限、apk状态等信息;
备注:adb shell dumpsys package -h 查看具体参数和更多使用技巧:

Activity信息

adb shell dumpsys activity [options] [-a] [-c] [-p PACKAGE] [-h] [WHAT] …
备注:adb shell dumpsys activity -h 查看具体参数和更多使用技巧:
adb shell dumpsys activity | grep -i run

网络连接

adb shell dumpsys connectivity
查看当前网络状况

网络策略

adb shell dumpsys netpolicy

网络策略

adb shell dumpsys netpolicy

网络状态

adb shell dumpsys netstats

kernel休眠 【root权限拒绝Permission denied】

echo mem > /sys/power/state

kernel唤醒

echo on > /sys/power/state

停止APK,在终端直接输入:

adb shell am force-stop 包名

模拟输入命令

adb shell中的input 输入命令

input [<source>] <command> [<arg>...]

参数:
source:input数据的来源【同样的数据不同的来源,Android输出不同结果】
command:具体的命令【每种source都用各自不同的command】;
arg:command的参数;

根据帮助信息【adb shell input help:】可知,输入命令可以模拟以下几种类型的输入:

The commands and default sources are:
      text < string> (Default: touchscreen)//1.触摸屏幕输入文本 text
      keyevent [--longpress] < key code number or name> ... (Default: keyboard)//2.keyevent 键盘输入
      tap < x> < y> (Default: touchscreen)//tap 事件
      swipe < x1> < y1> < x2> < y2> [duration(ms)] (Default: touchscreen)//4.swipe 滑动事件
      press (Default: trackball)//5.press按压事件`
      roll < dx> < dy> (Default: trackball)//6.roll 滚动事件
输入文本 【input text

adb shell input text 例: adb shell input text hello word
用于向屏幕中获得焦点的EditText控件输入内容,可以用于输入解开屏锁是输入密码。

模拟键盘按键【input keyevent

adb shell input keyevent < key code number or name>

**例:**返回键 adb shell input keyevent 4

######常见的模拟按键ADB命令

  • reboot 重启
  • **input keyevent 3 Home键 **
  • **input keyevent 4 返回键 **
  • **input keyevent 5 呼叫键 **
  • **input keyevent 6 挂断键 **
  • input keyevent 24 音量+键
  • input keyevent 25 音量-键
  • input keyevent 26 电源键
  • **input keyevent 28 Clera键键 **
  • **input keyevent 61 Tab键 **
  • **input keyevent 66 回车键键 **
  • input keyevent 82 菜单锁
  • input keyevent 224 息屏
  • input keyevent 223 亮屏

备注: 除了常用的几个键值以外,其他的完全没有必死记硬背在 android.view.KeyEvent 这个类中有Android系统所有的按键常量的定义和键值,需要时可以再查看;

linux:
adb shell dumpsys activity | grep “mFocusedActivity”
windows:
adb shell dumpsys activity | findstr “mFocusedActivity”

滑动/长按事件【input swipe

adb shell input [touchscreen|touchpad|touchnavigation] swipe [duration(ms)]
参数:
touchscreen:触摸屏;
touchpad:触摸版;
touchnavigation:导航栏;
duration:时间;

操作命令
滑动事件adb shell input touchscreen swipe < x1> < y1> < x2> < y2> [duration(ms)]
例: 从10 10经500毫秒滑动到500 500adb shell input touchscreen swipe 10 10 500 500 500
长按事件adb shell input touchscreen swipe < x1> < y1> < x1> < y1> [duration(ms)]
例: 在 100 100 位置长按1000毫秒adb shell input touchscreen swipe 100 100 100 100 1000
滚动命令【input roll

adb shell input trackball roll
模拟轨迹球发送滚动命令;
adb shell input roll 可以对屏幕滚动操作

Press 命令【input press

adb shell input trackball press
这个命令是模拟轨迹球发送点击命令 ;
目前没发现其他用处;

旋转命令【input rotationevent

input rotationevent 0 1->90 2->180 3->270
将屏幕顺时针旋转到0°、90°、180°、270°
例如adb shell input rotationevent 2 就是把屏幕反过来

更多input事件信息

系统属性命令

查看系统信息 getprop
获取指定prop
adb shell getprop prop名称
修改 adb shell setprop prop名称 修改值
若只记住了名称的部分,可这样查
查看 adb shell getprop | grep 关键词
发布端口:

你可以设置任意的端口号,做为主机向模拟器或设备的请求端口。如:

adb forward tcp:5555 tcp:8000

访问数据库SQLite3

adb shell

sqlite3

getprop

getprop命令的作用就是从系统的各种配置文件中读取一些设备的信息;
/init.rc
/default.prop
/system/build.prop

usage:getprop [NAME [DEFAULT]];
配合grep 管道命令:getprop | grep heap;

setprop

setprop [key] [value]
设置指定key的属性值

watchprops

watchprops
监听系统属性的变化,如果期间系统的属性发生变化则把变化的值显示出来

其实这三个命令都是toolbox的子命令,如果有兴趣的可以看在android源码中看到其对应的源码:
system/core/toolbox/
部分参数说明
dalvik.vm.heapgrowthlimit:默认给进程分配的可使用堆内存
dalvik.vm.heapsize:设置了android:largeHeap以后可使用的内存大小
ro.product.brand:手机品牌
ro.product.device:设备名称
ro.product.model:设备内部代号
ro.product.name:设备名称
ro.product.manufacturer:设备制造商
ro.serialno:设备序列号
ro.sf.lcd_density:设备屏幕密度
ro.config.ringtone:默认来电铃声
ro.config.notification_sound:默认通知铃声
ro.config.alarm_alert:默认闹钟铃声
dalvik.vm.stack-trace-file:trace文件放置目录
ro.build.version.sdk SDK 版本
ro.build.version.release Android 系统版本
ro.build.version.security_patch Android 安全补丁程序级别
ro.product.model 型号
ro.product.brand 品牌
ro.product.name 设备名
ro.product.board 处理器型号
ro.product.cpu.abilist CPU 支持的 abi 列表
persist.sys.isUsbOtgEnabled 是否支持 OTG
dalvik.vm.heapsize 每个应用程序的内存上限
ro.sf.lcd_density 屏幕密度

一般而言,我们在串口中输入adb shell getprop 指令,会出现很多类似键值对的系统变量值

获取系统版本:adb shell getprop ro.build.version.release
获取系统api版本:adb shell getprop ro.build.version.sdk

cat命令

cat /proc/meminfo // 查看内存信息
cat /proc/cpuinfo // 查看CPU信息
cat /etc/camera.cfg
cat /sys/class/net/wlan0/address
cat(“concatenate”的缩写)命令用于连接并显示指定的一个和多个文件的有关信息,它的使用权限是所有用户

1.检测手机中途是否有重启现象
adb shell ps | find “system_server”
adb shell getprop dev.bootcomplete 得到的值为1代表重启完成

2.检测手机的内存情况
adb shell busybox df -k | find “/data”

3.检测手机运行的时间
adb shell uptime

adb shell kill [PID] //杀死进程
adb 命令查看程序进程方便简洁高效
adb shell ps //查看所有进程列表,Process Status
adb shell ps|grep <package_name> //查看package_name程序进程
adb shell ps -x [PID] //查看PID进程状态
adb shell top|grep < package_name> //实时监听程序进程的变化

录屏命令

截屏[图片]

adb shell screencap < filename>
adb shell screencap /sdcard/screen.png

录制屏幕[Video]

adb shell screenrecord [options] < filename>
options:
size < WIDTH*HEIGHT> defalt : 设备分辨率;
bit-rate < RATE> defalt:4Mbps,可以增加比例提升视频清晰度,但是也会增大文件大小
ime-limit < TIME> defalt:180秒(3分钟)
rotate 旋转输出90度。实验性功能
verbose 控制台显示日志信息,如果没有设置该参数,不会在录屏是显示任何信息

备注:adb shell screenrecord命令在android4.4(api 19)以上才可用

am命令

adb shell am
am命令即**activity manager**(工具来执行不同的系统操作,如开启一个action,开启一个activity、强制停止一个线程、修改设备屏幕属性等等,adb shell命令格式如下:

am <command>
启动Activity

start [options] < INTENT>
启动activity通过指定的intent参数。具体intent参数参照官方表。

am参数Intent说明
-ncomponent组件名称 格式为:包名/类名
-aaction指定Intent的执行动作,比如调用拨打电话组件
-ddata_url表示与动作要操纵的数据
-ccategorycategary是一个字符串,提供了额外的信息,有关于能够处理这个Intent对象的组件种类
-eextra传递给Intent的额外数据,以Bundle的形式定义,就是一些键值对
-tmime_typeMIME类型
-fflags各种类型的flag,很多是用来指定Android系统如何启动activity,还有启动了activity后如何对待他
-ppackage包名

options参数:

-D:开启debug模式
-W:等待启动完成
–start-profiler:将profiler中的结果输出到指定文件中
-P:和–start-profiler一样,区别在于,在app进入idle状态时profiler结束
-R : 重复启动Activity,但每次重复启动都会关闭掉最上面的Activity
-S:关闭Activity所属的App进程后再启动Activity
–opengl-trace:开启OpenGL tracing
–user <USER_ID> :使用指定的用户来启动activity,如果不输入,则使用当前用户执行

//使用Action方式打开系统设置-输入法设置
adb shell am start -a android.settings.INPUT_METHOD_SETTINGS

//使用组件名方式启动照相机功能
adb shell am start -n com.android.camera/.Camera

//打开拨号界面,并传递一个DATA_URI数据给拨号界面
am start -a android.intent.action.CALL -d tel:10086
启动和停止服务

启动服务
adb shell am startservice [参数] < INTENT>
停止服务
adb shell am stopservice [参数] < INTENT>

参数 --user < USER_ID> | current 指定哪些用户运行,如果不指定则使用当前用户

启动广播

adb shell am broadcast [参数] < INTENT>

参数 --user < USER_ID> | current 指定哪些用户运行,如果不指定则使用当前用户

杀死应用程序

adb shell am force-stop < PACKAGE>

杀死应用程序所有进程

adb shell am kill [options] < PACKAGE>

options参数如下:–user <USER_ID> :使用指定的用户来启动activity,如果不输入,则使用当前用户执行
杀死与应用程序的包名称相关联的所有进程。该命令只会杀死安全的进程,不会影响用户体验。

杀死后台进程

adb shell am kill-all
杀死全部的后台进程

instrument监视

adb shell am instrument [options] < COMPONENT>

options参数如下:
-r: 以原始形式输出测试结果。该选项通常是在性能测试时与-e perf true一起使用。
-e < NAME> < VALUE>: 提供了以键值对形式存在的测试选项。格式一般为 -e < testrunner_flag> < value>[,< value>…].
-p < FILE>: 将profiling数据写入制定的文件
-w: 保持adb shell打开直至测试完成
–no-window-animation:关闭运行时window动画
–user < USER_ID> :使用指定的用户来启动activity,如果不输入,则使用当前用户执行

命令样例:

adb shell am instrument -w com.android.phone.tests/com.android.phone.runners.FunctionalTestRunner
####查看当前设备CPU状态监视
top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序况
adb shell top [ -m max_procs ] [ -n iterations ] [ -d delay ] [ -s sort_column ] [ -t ] [ -h ]
-m num Maximum number of processes to display.默认很多
-n num Updates to show before exiting.
-d num Seconds to wait between updates.
-s col Column to sort by (cpu,vss,rss,thr).
-H Show threads instead of processes.
-h Display this help screen.
adb shell top -m 15 -n 5 -d 5 -s cpu

这里写图片描述
参数:
PID : progress identification,应用程序ID
S : 进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数
THR : 程序当前所用的线程数
VSS : Virtual Set Size虚拟耗用内存(包含共享库占用的内存)
RSS : Resident Set Size实际使用物理内存(包含共享库占用的内存)
PCY : 前台(fg)和后台(bg)进程
UID : User Identification,用户身份ID
Name : 应用程序名称

User 处于用户态的运行时间,不包含优先值为负进程
Nice 优先值为负的进程所占用的CPU时间
Sys 处于核心态的运行时间
Idle 除IO等待时间以外的其它等待时间
IOW IO等待时间
IRQ 硬中断时间
SIRQ 软中断时间

PID 进程id
PR 优先级
CPU% 当前瞬时CPU占用率
S 进程状态:D=不可中断的睡眠状态, R=运行, S=睡眠, T=跟踪/停止, Z=僵尸进程
#THR 程序当前所用的线程数
VSS Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
RSS Resident Set Size 实际使用物理内存(包含共享库占用的内存)
PCY 调度策略优先级,SP_BACKGROUND/SP_FOREGROUND
UID 进程所有者的用户id
Name 进程的名称
备注:
adb shell top -m 15 -n 15 -d 3 -s cpu | findstr system >>C:\Users\yuzhu\Desktop\system_cpu.txt
将每三秒刷新一下,连续刷新15次,将这期间的系统进程信息记录在桌面system_cpu.txt中;
top -s cpu | grep <包名/pid>
grep 过滤;grep 一版不要和adb shell 一次直接执行,先adb shll ,然后再执行grep 命令;
Ctrl+C:停止检测; cls: 清除屏幕;color 0A:设置背景颜色和字体颜色;

查看指定APP内存使用情况:

adb shell dumpsys meminfo < pid/packageName >
以微信APP为例:微信包名:com.tencent.mm
adb shell dumpsys meminfo com.tencent.mm

参考资料:
ADB Usage Complete / ADB 用法大全
ADB Shell
Jian_Android命令篇

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值