adb常用命令

Awesome-ADB

adb服务

启动服务

1
adb start-server

停止服务

1
adb stop-server

设备

1
adb devices

eg: adb -s 47dbxxxxxxxx

1
2
adb -s device_id
adb get-serialno

重启

正常重启

1
adb reboot

重启到bootloader(刷机模式)

1
adb reboot bootloader

重启到recovery(恢复模式)

1
adb reboot recovery

monkey测试

1
2
adb shell monkey -p packagename 1000
adb shell monkey -f /sdcard/xxx.script

查看进程

1
2
3
adb shell ps
adb shell kill pid
adb shell ps -x pid

查看service

1
adb shell service list

查看系统当前内存使用情况

1
2
adb shell cat /proc/meminfo
adb shell dumpsys meminfo package

查看CPU使用情况

1
2
3
4
5
6
7
adb shell top
adb shell top -m 3
adb shell top -m 3 -n 1
adb shell cat /proc/cpuinfo
adb shell cat /proc/stat
adb shell cat /proc/meminfo
adb shell cat /system/build.prop

Activity调试

启动应用

1
2
3
adb shell am start xxx.xxx.xxx/xxx.xxx.xxx.MainActivity
adb shell am start -n packagename/packagename.activity
adb shell am start -n com.android.camera/.Camera

停止目标应用

1
adb shell am start -S com.android.camera/.Camera

带参数传递

1
adb shell am start xxx.xxx.xxx/xxx.xxx.xxx.MainActivity -e argus_name value

启动隐式Intent

-a表示action,-c表示category,-d表示data_uri,-e表示添加额外key-value信息

1
am start -a "android.intent.action.VIEW" -d "https://www.baidu.com" 

启动拨号器拨打10086

1
am start -a android.intent.action.CALL -d tel:10086

播放音频文件

1
am start -a "android.intent.action.VIEW" -t "audio/mp3" -d "file:///storeage/sdcard0/1.mp3"

播放视频文件

1
am start -a android.intent.action.VIEW -d "file:///mnt/sdcard/test.3gp" -t "video/*" 

使用am发送广播

可以在后面添加-e来添加额外信息

1
adb shell am broadcast -a "our.specified.action"

恢复出厂设置

1
adb shell am broadcast -a android.intent.action.MASTER_CLEAR

重启手机

1
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED

启动一个服务

1
adb shell am startservice "xxx.xxx.xxx/xxx.xxx.xxx.MyService"

停止应用

1
adb shell am force-stop package

查看当前Activity名称

1
adb shell dumpsys activity | findstr "mFocusedActivity"

启动monitor

监控crash和ANR

1
am monitor

安装apk

安装

1
2
adb install xxx.apk
adb -s xxxx install xxx.apk

覆盖安装

1
adb uninstall -r xxx.apk

卸载应用

卸载

1
adb uninstall package

卸载时保留数据和缓存目录

1
adb uninstall -k package

查看设备应用

查看设备所有应用包名

1
adb shell pm list packages

列出指定包名对应的apk路径

1
adb shell pm path packagename

清空指定包名对应的应用的数据和缓存文件

1
adb shell pm clear packagename

文件管理

1
2
adb push 电脑文件路径 /sdcard
adb pull /sdcard/file 电脑文件路径

删除

-f 强制删除文件不需要确认

-r 递归删除文件夹内文件

-i 删除文件前需要确认

1
adb shell rm /sdcard/text.txt

创建目录

指定 -p递归创建目录

1
adb shell mkdir -p /sdcard/temp/test/

创建文件

1
adb shell touch /sdcard/text.txt

复制文件

1
adb shell cp /sdcard/text.txt /sdcard/test/

移动文件

移动同一目录下文件相当于重命令文件

1
adb shell mv /sdcard/1.txt /sdcard/2.text

input

向屏幕输入一些信息

其中%s表示空格

1
adb shell input text "insert%syour%stext%shere"

模拟屏幕点击事件

1
adb shell input tap 500 14500

模拟手势滑动事件

从屏幕坐标(100,500)开始,滑动到(100,1450)结束,整个过程耗时100ms

1
adb shell input swipe 100 500 100 1450 100

模拟长按操作

也就是两个坐标点相同,耗时超过500ms

1
adb shell input swipe 100 500 100 500 500

模拟点击实体按键的命令

该命令表示调低音量,数字25是KeyEvent类里面定义的一个事件常量,该类定义了将近300个事件常量

1
adb shell input keyevent 25

dumpsys

查看dumpsys能提供的查询服务

1
adb shell service list

常用服务名

activity

ActivityManagerService(AMS相关信息)

package

PackageManagerService(PMS相关信息)

window

WindowManagerService(WMS相关信息)

input

InputManagerService(IMS相关信息)

power

PowerManagerService(PMS相关信息)

prostats

ProcessStatsService(进程统计)

battery

BatteryService(电池信息)

alarm

AlarmManagerService(闹钟信息)

meminfo

MemBinder(内存)

查看电池信息

adb shell dumpsys battery

查看Activity信息

1
adb shell dumpsys activity

直接使用以上命令会得到非常长的信息,一般会选择下面八个命令进行查询

1
2
dumpsys activity intents
dumpsys activity broadcasts(广播)

可缩写成dumpsys activity prov

1
dumpsys activity providers

可缩写成dumpsys activity perm

1
dumpsys activity permissions

可缩写成dumpsys activity s

1
dumpsys activity services
1
dumpsys activity recents

可缩写成dumpsys activity a

1
dumpsys activity activities
1
dumpsys activity processes

如果内容还是太多,可以使用grep过滤

1
adb shell dumpsys activity | grep -i 'run'

查看App有哪些进程

1
adb shell dumpsys activity p com.quark.browser | grep -i 'ProcessRecord' | grep -i 'PID'

查看内存使用情况

1
adb shell dumpsys meminfo com.quark.browser

其他

申请root权限

1
2
adb shell
su

查看手机上所有的包名

1
2
adb shell
cd data/data ; ls

Linux多个命令行一起执行可以用“;”或者“&&” 进行分割

1
cd data/data ; ls

退出

1
exit

屏幕截图

1
adb shell screencap /sdcard/screen.png

录制视频

适用于4.4及以上的设备

1
adb shell screenrecord /sdcard/demo.mp4

bugreport

1
adb bugreport > d:/xxx.log

重定向

执行该命令后所有发往宿主机1314端口的消息、数据都会转发到Android设备的8888端口上,因为可以通过远程的方式控制Android设备

1
adb forward tcp:1314 tcp:8888

列出输入法

1
ime list -s

获取设备分辨率

1
adb shell wm size

查看Android设备的参数信息

1
adb shell getprop 

查看某信息

1
adb shell getprop ro.build.version.sdk

快速创建大文件

1
dd if=/dev/zero of=hello.txt bs=1024000 count=1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
if =输入文件(或设备名称)。

of =输出文件(或设备名称)。

ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。

skip = blocks 跳过读入缓冲区开头的ibs*blocks块。

obs = bytes 一次写入bytes字节,即写入缓冲区的字节数。

bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs)。

cbs = byte 一次转换bytes字节。

count=blocks 只拷贝输入的blocks块。

conv = ASCII 把EBCDIC码转换为ASCIl码。

conv = ebcdic 把ASCIl码转换为EBCDIC码。

conv = ibm 把ASCIl码转换为alternate EBCDIC码。

conv = block 把变动位转换成固定字符。

conv = ublock 把固定位转换成变动位。

conv = ucase 把字母由小写转换为大写。

conv = lcase 把字母由大写转换为小写。

conv = notrunc 不截短输出文件。

conv = swab 交换每一对输入字节。

conv = noerror 出错时不停止处理。

conv = sync 把每个输入记录的大小都调到ibs的大小(用NUL填充)。

查看磁盘使用情况

1
df

打开前置摄像头

1
adb shell am start -a android.media.action.IMAGE_CAPTURE --ei android.intent.extras.CAMERA_FACING 1

打开后置摄像头

1
adb shell am start -a android.media.action.IMAGE_CAPTURE --ei android.intent.extras.CAMERA_FACING 0

SVC命令

设置屏幕的常亮,true保持常亮,false不保持,usb当插入usb时常亮,ac当插入电源时常亮

1
svc power stayon [true|false|usb|ac]  

打开/关闭数据流量

1
svc data enable|disable

打开/关闭wifi

1
svc wifi enable|disable

修改系统配置

1
2
## 修改后,如果没在AndroidManifest做设置,会触发onConfigurationChanged事件
adb shell settings put system font_scale 2.0

开启【调试GPU过度绘制】

1
adb shell setprop debug.hwui.overdraw show

关闭【调试GPU过度绘制】

1
adb shell setprop debug.hwui.overdraw false
Author

jiangyao

Posted on

2021-06-12

Updated on

2022-10-31

Licensed under