Skip to content

wenquan836/ADB_Command_List

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 

Repository files navigation

#ADB命令大全

11 列出当前连接的Android设备信息

adb devices # 获取当前连接的Android设备
adb -s <device_serial_number> shell #连接某个特定的Android设备
adb shell getprop # 查看android设备的参数信息
adb shell cat /proc/cpuinfo # 查看CPU架构信息
adb shell getprop ro.build.version.release # 查看系统Android版本信息
adb shell getprop ro.build.version.sdk # 查看系统API版本信息
adb shell df # 获取手机磁盘空间
adb shell dumpsys procstats # 获取当前内存使用信息
adb shell dumpsys gfxinfo # 获取当前的制图状态

12 获取设备root权限,修改设备磁盘权限

adb root # 获取root权限
adb remount # 挂载系统文件系统为可读写状态,显示remount succeeded就代表命令执行成功;

#21 安装apk文件
adb install <软件名> # 这个命令将指定的apk文件安装到设备上
adb install -r <软件名> # 替换已存在的应用程序,也就是说强制安装
adb install -l <软件名> # 锁定该应用程序
adb install -t <软件名> # 允许测试包
adb install -s <软件名> # 把应用程序安装到sd卡上
adb install -d <软件名> # 允许进行将见状,也就是安装的比手机上带的版本低
adb install -g <软件名> # 为应用程序授予所有运行时的权限

22 获取安装的应用包名信息

adb shell pm list package # 列出所有的应用的包名
adb shell pm list package -s # 列出系统应用
adb shell pm list package -3 # 列出第三方应用
adb shell pm list package -f # 列出项目包名及对应的apk名及存放位置
adb shell pm list package -i # 列出应用包名及其安装来源
adb shell pm path com.ztf.coaster # 列出对应包名的apk位置
adb shell pm dump com.ztf.coaster # 列出应用的转储信息

#23 卸载apk文件
adb uninstall <软件名> # 卸载软件
adb uninstall -k <软件名> # 卸载软件 但是保留配置和缓存文件
adb shell pm uninstall --user 0 包名 # 如果adb uninstall没有用,可以使用这个,表示删除用户空间0的应用。这跟卸载普通应用是同个方式


31 进程操作

adb shell ps -A //显示当前正在运行的所有进程信息
adb shell ps -A | grep ** # 使用正则进行过滤
adb shell kill 进程号 //结束某个进程
adb shell am force-stop 包名 //结束包名对应的进程,Android10以后的版本才可以

32 dumpsys 获取系统各个服务的信息

adb shell dumpsys activity //获取当前Activity的所有栈信息
adb shell dumpsys activity | grep ResumedActivity: #获取显示当前正在显示的Activity组件名称
adb shell dumpsys activity activities //只获取当前Activity显示层级的栈信息

adb shell dumpsys window //获取当前窗口的所有栈信息
adb shell dumpsys window |grep mFocusedApp //获取显示当前获取焦点的Window组件名称
adb shell dumpsys window windows //只获取当前窗口显示层级的栈信息

adb shell dumpsys package //获取系统中所有应用的包信息
adb shell dumpsys package 包名 //获取特定包名的包信息

33 Activity操作

adb shell am start 包名/.Activity (要启动的Activity) # 启动app
adb shell am start -W -n 包名/.Activity # 启动app
adb shell am start -a android.intent.action.MAIN -n --ei pid 10 --es str "helloworld"​​ # 传递key为pid数值为i整数类型0, 和key为str数值为字符串类型helloworld
adb shell am force-stop 包名 # 关闭app
adb shell pm clear 包名 #关闭app

34 服务操作

adb shell am startservice -n{包(package)名}/{包名}.{服务(service)名称}
adb shell am startservice -n com.android.traffic/com.android.traffic.maniservice
adb shell am start-foreground-service -n com.demo.screenrecorder/com.demo.screenrecorder.RecordService

35 广播操作

adb shell am broadcast -a android.intent.action.BOOT_COMPLETED # 发送系统启动完毕广播
adb shell am broadcast -a android.intent.action.MEDIA_MOUNTED # 发送外部SD卡挂载广播
adb shell am broadcast -a android.intent.action.MEDIA_UNMOUNTED # 发送外部SD卡拔出广播
adb shell am broadcast -a car.meter.share.BROADCAST # 自定义录制视频广播
adb shell am broadcast -a com.leapmotor.share.reload.BROADCAST # 自定义途记分享广播

adb shell am broadcast -a com.android.test --es test_string "this is test string" --ei test_int 100 --ez test_boolean true
--es 表示使用字符串类型参数 --ei 表示int类型参数 --ez 表示boolean类型参数 第一个为key,第二个为value


执行结果如下,则表示广播发送成功:

Broadcasting: Intent { act=android.intent.action.BOOT_COMPLETED }
Broadcast completed: result=0

# 41 获取设备屏幕分辨率
adb shell wm help # 可查看所有可用的wm指令
adb shell wm size # 获取当前分辨率
adb shell wm density # 获取当前像素密度(dpi)
adb shell wm size 720*1080 #将分辨率修改为720*1080
adb shell wm density 240 # 将dpi修改为240
adb shell wm size reset # 重置分辨率

# 42 抓取日志信息
adb logcat # 打印android的系统日志,使用ctrl+c 可停止打印
adb shell "logcat >/sdcard/log000.log" #把日志信息保存到sd卡根目录的log000.log目录
adb logcat | grep -E "^..MyApp\|^..MyActivity" # 使用 grep 配合正则表达式进行过滤,只显示需要的输出(白名单)
adb logcat | grep -vE "^..MyApp\|^..MyActivity" # 使用 grep 配合正则表达式进行过滤,过滤不需要的输出(黑名单)
adb logcat -c && adb logcat # logcat 有缓存,如果仅需要查看当前开始的 log,需要清空之前的缓存
cat myapp.log | grep -E "^..MyApp|^..MyActivity" > newmyapp.log # 例如 log 文件为 myapp.log,要匹配 tag 为 MyApp 和 MyActivity 的输出,然后输出到 newmyapp.log

adb logcat [:priority] tag表示标签,priority输出的级别
V —— Verbose(最低,输出得最多)
D —— Debug
I —— Info
W —— Warning
E —— Error
F —— Fatal
S —— Silent(最高,啥也不输出)

日志默认级别是V,如果错误日志我们选择E就可以。
//格式1:打印默认日志数据
adb logcat
//格式2:需要打印日志详细时间的简单数据
adb logcat -v time
//格式3:需要打印级别为Error的信息
adb logcat *:E
//格式4:需要打印时间和级别是Error的信息
adb logcat -v time *:E
//格式5:将日志保存到电脑固定的位置,比如D:\log.txt
adb logcat -v time >D:\log.txt


# 43 屏幕操作
adb shell screencap -p /sdcard/screen.jpg #对屏幕进行截屏
adb shell screenrecord sdcard/record.mp4 #对屏幕进行录像

# 44 文件拷贝
adb push <本地路径> <远程路径> # 从电脑上发送文件到设备 【adb push media /sdcard/ 把media文件夹整个拷贝到sd卡根目录】
adb pull <远程路径> <本地路径> # 从设备下载文件到电脑 【adb pull /system/media D:/ 把设备中的media目录整个拷贝到D盘】

# 45 获取设备中数据库字段信息
adb shell settings list global #global数据库,所有用户共用
adb shell settings list settings #settings数据库,区分用户

PM常用指令
pm即package manager,使用pm命令可以去模拟android行为或者查询设备上的应用信息等

命令 功能 实现方法
dump dump信息 AM.dumpPackageStateStatic
clear 清空App数据 AMS.clearApplicationUserData
uninstall [options] 卸载应用 IPackageInstaller.uninstall
force-dex-opt dex优化 PMS.forceDexOpt
trim-caches <目标size> 紧缩cache目标大小 PMS.freeStorageAndNotify
list packages 列举app包信息 PMS.getInstalledPackages
get-install-location 获取安装位置 PMS.getInstallLocation
path 查看App路径 PMS.getPackageInfo
install [options] 安装应用 PMS.installPackageAsUser
hide 隐藏应用 PMS.setApplicationHiddenSettingAsUser
unhide 显示应用 PMS.setApplicationHiddenSettingAsUser
enable <包名或组件名> 激活包名或组件 PMS.setEnabledSetting
disable <包名或组件名> 禁用包名或组件 PMS.setEnabledSetting
set-install-location 设置安装位置 PMS.setInstallLocation
get-max-users 最大用户数 UserManager.getMaxSupportedUsers

# 55 调试Android系统
adb shell setprop debug.layout true # 显示UI边界
adb shell setprop debug.hwui.overdraw show # 开启调试 GPU 过度绘制
adb shell setprop debug.hwui.overdraw false # 关闭调试 GPU 过度绘制
adb shell dumpsys package queryies # 查看设备中能直接访问的App

# 61 查询数据库
msm8953_64:/data/system # sqlite3 locksettings.db # 打开数据库,获取数据库版本信息
SQLite version 3.9.2 2017-07-21 07:45:23 # 数据库版本信息
Enter ".help" for usage hints.
sqlite> .tables # 显示所有的表信息
android_metadata locksettings
.mode column #列对齐命令
.header on #打开表头显示
sqlite> select * from locksettings; # 查询整个表的信息
1|lockscreen.disabled|0|1
2|migrated|0|true
3|migrated_user_specific|0|true
4|lockscreen.password_type_alternate|0|0
5|migrated_biometric_weak|0|true
6|migrated_lockscreen_disabled|0|true
7|lockscreen.enabledtrustagents|0|
8|lockscreen.password_salt|0|-970902998671653081
9|lockscreen.password_type|0|262144
10|lockscreen.profilechallenge|0|1
11|lockscreen.passwordhistory|0|
sqlite>


# 62 查看网络信息
adb shell ping -c 4 ww.baidu.com # 测试两个网络间的连接和延迟
adb shell netstat # 网络统计,用来查看网络当前状态。
tcpdump -p -vv -s 0 -w /data/data/capture.pcap # 网络抓包,将tcpdump文件push进设备(shell下)
tcpdump -i any -s 0 -w /data/data/capture.pcap # 网络抓包,将tcpdump文件push进设备(shell下)

100 监听手机事件

adb shell getevent


其中以003 0035和003 0036 开头的两条数据0x170和0x38E就是我们需要的x和y坐标了

101 模拟点击

模拟点击[x,y]坐标
adb shell input mouse tap x y

102 模拟滑动和模拟长按

从(x1,y1)滑动到(x2,y2)
adb shell input swipe x1 y1 x2 y2


因为没有专门模拟长按的动作,所以我们使用滑动来模拟长按
滑动初始位置与结束位置一致,且时间设置为500毫秒
adb shell input swipe 300 300 300 300 500

103 模拟输入

输入‘string’
adb shell input text 'string'

注:需要先定位到对应的输入框,才可输入成功

104 模拟按键

模拟back 按键
adb shell input keyevent 4

这里给出一个常用的keyevent code:

按键 按键Code码 描述
KEYCODE_UNKNOWN 0
KEYCODE_SOFT_LEFT 1
KEYCODE_SOFT_RIGHT 2
KEYCODE_HOME 3 home键
KEYCODE_BACK 4 back键
KEYCODE_CALL 5
KEYCODE_ENDCALL 6
KEYCODE_0 7
KEYCODE_1 8
KEYCODE_2 9
KEYCODE_3 10
KEYCODE_4 11
KEYCODE_5 12
KEYCODE_6 13
KEYCODE_7 14
KEYCODE_8 15
KEYCODE_9 16
KEYCODE_STAR 17
KEYCODE_POUND 18
KEYCODE_DPAD_UP 19
KEYCODE_DPAD_DOWN 20
KEYCODE_DPAD_LEFT 21
KEYCODE_DPAD_RIGHT 22
KEYCODE_DPAD_CENTER 23
KEYCODE_VOLUME_UP 24
KEYCODE_VOLUME_DOWN 25
KEYCODE_POWER 26 电源键
KEYCODE_CAMERA 27
KEYCODE_CLEAR 28
KEYCODE_A 29
KEYCODE_B 30
KEYCODE_C 31
KEYCODE_D 32
KEYCODE_E 33
KEYCODE_F 34
KEYCODE_G 35
KEYCODE_H 36
KEYCODE_I 37
KEYCODE_J 38
KEYCODE_K 39
KEYCODE_L 40
KEYCODE_M 41
KEYCODE_N 42
KEYCODE_O 43
KEYCODE_P 44
KEYCODE_Q 45
KEYCODE_R 46
KEYCODE_S 47
KEYCODE_T 48
KEYCODE_U 49
KEYCODE_V 50
KEYCODE_W 51
KEYCODE_X 52
KEYCODE_Y 53
KEYCODE_Z 54
KEYCODE_COMMA 55
KEYCODE_PERIOD 56
KEYCODE_ALT_LEFT 57
KEYCODE_ALT_RIGHT 58
KEYCODE_SHIFT_LEFT 59
KEYCODE_SHIFT_RIGHT 60
KEYCODE_TAB 61
KEYCODE_SPACE 62
KEYCODE_SYM 63
KEYCODE_EXPLORER 64
KEYCODE_ENVELOPE 65
KEYCODE_ENTER 66
KEYCODE_DEL 67
KEYCODE_GRAVE 68
KEYCODE_MINUS 69
KEYCODE_EQUALS 70
KEYCODE_LEFT_BRACKET 71
KEYCODE_RIGHT_BRACKET 72
KEYCODE_BACKSLASH 73
KEYCODE_SEMICOLON 74
KEYCODE_APOSTROPHE 75
KEYCODE_SLASH 76
KEYCODE_AT 77
KEYCODE_NUM 78
KEYCODE_HEADSETHOOK 79
KEYCODE_FOCUS 80 Camera*focus
KEYCODE_PLUS 81
KEYCODE_MENU 82
KEYCODE_NOTIFICATION 83
KEYCODE_SEARCH 84
KEYCODE_MEDIA_PLAY_PAUSE 85
KEYCODE_MEDIA_STOP 86
KEYCODE_MEDIA_NEXT 87
KEYCODE_MEDIA_PREVIOUS 88
KEYCODE_MEDIA_REWIND 89
KEYCODE_MEDIA_FAST_FORWARD 90
KEYCODE_MUTE 91

105 adb shell input

Usage: input [] [...]

The sources are:
dpad
keyboard
mouse
touchpad
gamepad
touchnavigation
joystick
touchscreen
stylus
trackball

The commands and default sources are:
text (Default: touchscreen)
keyevent [--longpress] ... (Default: keyboard)
tap (Default: touchscreen)
swipe [duration(ms)] (Default: touchscreen)
draganddrop [duration(ms)] (Default: touchscreen)
press (Default: trackball)
roll (Default: trackball)

About

ADB命令大全

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published