[TOC]
0x00 adb 调试工具命令
描述:通过前面学习我们知道adb(Android Debug Bridge Tools)即安卓调试桥 ,它是一个C/S架构工具,主要用于电脑端于安卓系统手机设备或者模拟器设备进行交互,特别是在某些情况下进入不了系统的时候adb就派上用场了,本章节汇总了adb相关使用命令参数。
adb 命令工具帮助信息打印:
[TOC]
描述:通过前面学习我们知道adb(Android Debug Bridge Tools)即安卓调试桥 ,它是一个C/S架构工具,主要用于电脑端于安卓系统手机设备或者模拟器设备进行交互,特别是在某些情况下进入不了系统的时候adb就派上用场了,本章节汇总了adb相关使用命令参数。
adb 命令工具帮助信息打印:
[TOC]
描述:通过前面学习我们知道adb(Android Debug Bridge Tools)即安卓调试桥 ,它是一个C/S架构工具,主要用于电脑端于安卓系统手机设备或者模拟器设备进行交互,特别是在某些情况下进入不了系统的时候adb就派上用场了,本章节汇总了adb相关使用命令参数。
adb 命令工具帮助信息打印: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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158$ adb -h
# global options:
-a listen on all network interfaces, not just localhost
-d use USB device (error if multiple devices connected)
-e use TCP/IP device (error if multiple TCP/IP devices available)
-s SERIAL use device with given serial (overrides $ANDROID_SERIAL)
-t ID use device with given transport id
-H name of adb server host [default=localhost]
-P port of adb server [default=5037]
-L SOCKET listen on given socket for adb server [default=tcp:localhost:5037]
--one-device SERIAL|USB only allowed with 'start-server' or 'server nodaemon', server will only connect to one USB device, specified by a serial number or USB device address.
--exit-on-write-error exit if stdout is closed
# general commands:
devices [-l] list connected devices (-l for long output)
help show this help message
version show version num
# networking:
connect HOST[:PORT] connect to a device via TCP/IP [default port=5555]
disconnect [HOST[:PORT]]
disconnect from given TCP/IP device [default port=5555], or all
pair HOST[:PORT] [PAIRING CODE]
pair with a device for secure TCP/IP communication
forward --list list all forward socket connections
forward [--no-rebind] LOCAL REMOTE
forward socket connection using:
tcp:<port> (<local> may be "tcp:0" to pick any open port)
localabstract:<unix domain socket name>
localreserved:<unix domain socket name>
localfilesystem:<unix domain socket name>
dev:<character device name>
jdwp:<process pid> (remote only)
vsock:<CID>:<port> (remote only)
acceptfd:<fd> (listen only)
forward --remove LOCAL remove specific forward socket connection
forward --remove-all remove all forward socket connections
reverse --list list all reverse socket connections from device
reverse [--no-rebind] REMOTE LOCAL
reverse socket connection using:
tcp:<port> (<remote> may be "tcp:0" to pick any open port)
localabstract:<unix domain socket name>
localreserved:<unix domain socket name>
localfilesystem:<unix domain socket name>
reverse --remove REMOTE remove specific reverse socket connection
reverse --remove-all remove all reverse socket connections from device
mdns check check if mdns discovery is available
mdns services list all discovered services
# file transfer:
push [--sync] [-z ALGORITHM] [-Z] LOCAL... REMOTE
copy local files/directories to device
--sync: only push files that are newer on the host than the device
-n: dry run: push files to device without storing to the filesystem
-z: enable compression with a specified algorithm (any/none/brotli/lz4/zstd)
-Z: disable compression
pull [-a] [-z ALGORITHM] [-Z] REMOTE... LOCAL
copy files/dirs from device
-a: preserve file timestamp and mode
-z: enable compression with a specified algorithm (any/none/brotli/lz4/zstd)
-Z: disable compression
sync [-l] [-z ALGORITHM] [-Z] [all|data|odm|oem|product|system|system_ext|vendor]
sync a local build from $ANDROID_PRODUCT_OUT to the device (default all)
-n: dry run: push files to device without storing to the filesystem
-l: list files that would be copied, but dont copy them
-z: enable compression with a specified algorithm (any/none/brotli/lz4/zstd)
-Z: disable compression
# shell:
shell [-e ESCAPE] [-n] [-Tt] [-x] [COMMAND...]
run remote shell command (interactive shell if no command given)
-e: choose escape character, or "none"; default \'~\'
-n: don\'t read from stdin
-T: disable pty allocation
-t: allocate a pty if on a tty (-tt: force pty allocation)
-x: disable remote exit codes and stdout/stderr separation
emu COMMAND run emulator console command
# app installation (see also `adb shell cmd package help`):
install [-lrtsdg] [--instant] PACKAGE
push a single package to the device and install it
install-multiple [-lrtsdpg] [--instant] PACKAGE...
push multiple APKs to the device for a single package and install them
install-multi-package [-lrtsdpg] [--instant] PACKAGE...
push one or more packages to the device and install them atomically
-r: replace existing application
-t: allow test packages
-d: allow version code downgrade (debuggable packages only)
-p: partial application install (install-multiple only)
-g: grant all runtime permissions
--abi ABI: override platform's default ABI
--instant: cause the app to be installed as an ephemeral install app
--no-streaming: always push APK to device and invoke Package Manager as separate steps
--streaming: force streaming APK directly into Package Manager
--fastdeploy: use fast deploy
--no-fastdeploy: prevent use of fast deploy
--force-agent: force update of deployment agent when using fast deploy
--date-check-agent: update deployment agent when local version is newer and using fast deploy
--version-check-agent: update deployment agent when local version has different version code and using fast deploy
(See also `adb shell pm help` for more options.)
uninstall [-k] PACKAGE
remove this app package from the device '-k': keep the data and cache directories
# debugging:
bugreport [PATH]
write bugreport to given PATH [default=bugreport.zip];
if PATH is a directory, the bug report is saved in that directory.
devices that don't support zipped bug reports output to stdout.
jdwp list pids of processes hosting a JDWP transport
logcat show device log (logcat --help for more)
security:
disable-verity disable dm-verity checking on userdebug builds
enable-verity re-enable dm-verity checking on userdebug builds
keygen FILE
generate adb public/private key; private key stored in FILE,
scripting:
wait-for[-TRANSPORT]-STATE...
wait for device to be in a given state
STATE: device, recovery, rescue, sideload, bootloader, or disconnect
TRANSPORT: usb, local, or any [default=any]
get-state print offline | bootloader | device
get-serialno print <serial-number>
get-devpath print <device-path>
remount [-R]
remount partitions read-write. if a reboot is required, -R will will automatically reboot the device.
reboot [bootloader|recovery|sideload|sideload-auto-reboot]
reboot the device; defaults to booting system image but
supports bootloader and recovery too. sideload reboots
into recovery and automatically starts sideload mode,
sideload-auto-reboot is the same but reboots after sideloading.
sideload OTAPACKAGE sideload the given full OTA package
root restart adbd with root permissions
unroot restart adbd without root permissions
usb restart adbd listening on USB
tcpip PORT restart adbd listening on TCP on PORT
internal debugging:
start-server ensure that there is a server running
kill-server kill the server if it is running
reconnect kick connection from host side to force reconnect
reconnect device kick connection from device side to force reconnect
reconnect offline reset offline/unauthorized devices to force reconnect
usb:
attach attach a detached USB device
detach detach from a USB device to allow use by other processes
environment variables:
$ADB_TRACE
comma-separated list of debug info to log:
all,adb,sockets,packets,rwx,usb,sync,sysdeps,transport,jdwp
$ADB_VENDOR_KEYS colon-separated list of keys (files or directories)
$ANDROID_SERIAL serial number to connect to (see -s)
$ANDROID_LOG_TAGS tags to be used by logcat (see logcat --help)
$ADB_LOCAL_TRANSPORT_MAX_PORT max emulator scan port (default 5585, 16 emus)
$ADB_MDNS_AUTO_CONNECT comma-separated list of mdns services to allow auto-connect (default adb-tls-connect)
使用示例1
2
3
4
5
6
7# adb守护进程端口默认为 5037
.\adb start-server
* daemon not running; starting now at tcp:5037
* daemon started successfully
# kill掉adb守护进程
.\adb kill-tart-server
使用说明
adb 会针对每个设备输出以下状态信息:
offline
:设备未连接到 adb 或没有响应。device
:设备已连接到 adb 服务器。请注意,此状态并不表示 Android 系统已完全启动并可正常运行,因为在设备连接到 adb 时系统仍在启动。系统完成启动后,设备通常处于此运行状态。no device
:未连接任何设备。
使用示例1
2
3
4
5
6
7
8
9# 显示已连接的设备信息
> .\adb.exe devices
List of devices attached
PWHUT20423010562 device
# 显示已连接的设备详细信息
> .\adb.exe devices -l
List of devices attached
PWHUT20423010562 device product:GLK-AL00 model:GLK_AL00 device:HWGLK transport_id:2
温馨提示 如果您在多个设备可用时发出命令但未指定目标设备,adb 会显示错误,此时需要使用-s参数指定设备序列号。
a设备的三种状态:
使用示例1
2
3
4
5
6
7
8
9
10
11# 打印设备序列号信息
.\adb get-serialno
192.168.1.6:35399
# 打印设备信息
.\adb -s 192.168.1.6:35399 get-state
device
# 打印设备路径
.\adb -s PWHUT20423010562 get-devpath
unknown
1 | # 安装应用"weiyigeekapp.apk"安装包文件放在adb工具目录下 |
温馨提示: 如果您使用的是 Android Studio,则无需直接使用 adb 即可在模拟器或设备上安装您的应用, Android Studio 会为您执行应用的打包和安装操作。
1 | # 显示三行日志 |
1 | # 重启手机 |
温馨提示: 进入recovery模式后,adb工具将失去对手机的控制,我们可以通过手机重启退出recovery模式。
使用示例1
2# 重设移动设备上adbd监听端口
.\adb tcpip 5555
使用示例1
2
3
4
5
6
7
8
9
10
11
12# 客户端连接移动设备上adb监听端口
.\adb connect 192.168.31.196:5555
# 客户端断开移动设备上adbd监听端口
.\adb disconnect 192.168.31.196:5555
# 重连接离线设备
.\adb devices
# List of devices attached
# 192.168.1.6:35399 offline
.\adb reconnect offline
# reconnecting 192.168.1.6:35399
描述: 此命令在启动无线调试时,通过adbd用于链接到Android设备进行配对。
语法参数: pair HOST[:PORT] [PAIRING CODE]
使用示例1
2# 连接到 192.168.1.6:36666 设备其配对码为 668899
.\adb pair 192.168.1.6:36666 668899
使用示例1
2
3
4
5# 示例1.设置了主机端口 6100 到设备端口 7100 的转发
adb forward tcp:6100 tcp:7100
# 示例2.设置了主机端口 6100 到 local:logd 的转发
adb forward tcp:6100 local:logd
描述: 使用 push、pull、sync 命令可以快速针对安卓手机中的文件进行上传下载同步等操作。
语法参数:1
2
3
4
5
6
7
8# 如需从设备中复制某个文件或目录(及其子目录),请使用以下命令
adb pull remote local
# 如需将某个文件或目录(及其子目录)复制到设备,请使用以下命令
adb push local remote
# 同步更新all|data|odm|oem|product|system|system_ext|vendor下的数据
adb sync
示例演示1
2
3
4
5# 下载设置中/sdcard/sreen.png图片到D:\\sdcard/sreen.png
adb pull /sdcard/sreen.png D:\\sdcard\sreen.png
# 将 local 和 remote 替换为开发机器(本地)和设备(远程)上的目标文件/目录的路径。
adb push myfile.txt /sdcard/myfile.txt
扩展说明: adb shell sync 命令和adb sync命令的区别?
前者:在shell中执行,将内存缓冲区中的数据 写入到磁盘
后者:同步更新all|data|odm|oem|product|system|system_ext|vendor下的数据,如果不指定目录,将同步更新/data/和/system/
描述: 此命令在adb中占有主要地位,其可以帮助我们操作访问Android设备的相关资源,在讲解shell之前,我们先看看 root 与 remount 两个子命令其对于安卓手机shell中访问权限是非常重要的。
语法参数:1
2
3
4
5# 通过 adb 发出设备命令,下述为命令行模式
adb [-d |-e | -s serial_number] shell shell_command
# 若需启动交互式 shell,请使用如下所示命令
adb [-d | -e | -s serial_number] shell
adb 权限提升1
2
3
4
5
6
7
8
9
10# 使用root权限重新启动adbd
.\adb root
# adbd cannot run as root in production builds,显示此行意味着手机还未root
# 以读写方式重新装载分区,如果需要重新启动,-R将自动重新启动设备。
.\adb remount
# remount succeeded 意味着获取root成功
# 使用非root权限重新启动adbd
.\adb unroot
温馨提示: Android 提供了大多数常见的 Unix 命令行工具, 如需查看可用工具的列表,请使用以下命令:adb shell ls /system/bin
1 | # 查看当前设备型号 |
描述:tap 模拟点击事件,swipe 模拟滑动事件, 可以左右滑动,可以上下滑动。1
2
3
4
5
6
7
8
9# 模拟点击(x,y)坐标位置 : shell input tap x y
.\adb shell input tap 720 1080
# 模拟手机滑动 : shell input swipe x1 y1 x2 y2 [time]
# 从坐标点(720,1080)用100ms滑动到(480,1080)坐标点。
.\adb shell input swipe 720 1080 480 1080 100 # 👈 左划
.\adb shell input swipe 720 1080 920 1080 100 # → 右划
.\adb shell input swipe 720 480 480 1080 100 # 👇 下划
.\adb shell input swipe 720 1080 480 480 100 # 👆 上划
描述: input keyevent操作发送手机上常用的一些按键操作,KEYCODE和对应的数值在android源码中定义如下: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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276# 电话键
KEYCODE_UNKNOWN = 0
KEYCODE_SOFT_LEFT = 1
KEYCODE_SOFT_RIGHT = 2
KEYCODE_HOME = 3 // 首页
KEYCODE_BACK = 4 // 返回
KEYCODE_CALL = 5 // 拨号
KEYCODE_ENDCALL = 6 // 挂机(息屏)
KEYCODE_VOLUME_UP = 24 // 音量+
KEYCODE_VOLUME_DOWN = 25 // 音量-
# 控制键
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_POWER = 26 // 电源键
KEYCODE_CAMERA = 27 // 拍照键
KEYCODE_CLEAR = 28 // clear 键
# 基本 ASCII 字符按键
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_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 // 静音键
KEYCODE_PAGE_UP = 92
KEYCODE_PAGE_DOWN = 93
KEYCODE_PICTSYMBOLS = 94 // switch symbol-sets (Emoji,Kao-moji)
KEYCODE_SWITCH_CHARSET = 95 // switch char-sets (Kanji,Katakana)
KEYCODE_BUTTON_A = 96
KEYCODE_BUTTON_B = 97
KEYCODE_BUTTON_C = 98
KEYCODE_BUTTON_X = 99
KEYCODE_BUTTON_Y = 100
KEYCODE_BUTTON_Z = 101
KEYCODE_BUTTON_L1 = 102
KEYCODE_BUTTON_R1 = 103
KEYCODE_BUTTON_L2 = 104
KEYCODE_BUTTON_R2 = 105
KEYCODE_BUTTON_THUMBL = 106
KEYCODE_BUTTON_THUMBR = 107
KEYCODE_BUTTON_START = 108
KEYCODE_BUTTON_SELECT = 109
KEYCODE_BUTTON_MODE = 110
KEYCODE_ESCAPE = 111
KEYCODE_FORWARD_DEL = 112
KEYCODE_CTRL_LEFT = 113
KEYCODE_CTRL_RIGHT = 114
KEYCODE_CAPS_LOCK = 115
KEYCODE_SCROLL_LOCK = 116
KEYCODE_META_LEFT = 117
KEYCODE_META_RIGHT = 118
KEYCODE_FUNCTION = 119
KEYCODE_SYSRQ = 120
KEYCODE_BREAK = 121
KEYCODE_MOVE_HOME = 122
KEYCODE_MOVE_END = 123
KEYCODE_INSERT = 124
KEYCODE_FORWARD = 125
KEYCODE_MEDIA_PLAY = 126
KEYCODE_MEDIA_PAUSE = 127
KEYCODE_MEDIA_CLOSE = 128
KEYCODE_MEDIA_EJECT = 129
KEYCODE_MEDIA_RECORD = 130
KEYCODE_F1 = 131
KEYCODE_F2 = 132
KEYCODE_F3 = 133
KEYCODE_F4 = 134
KEYCODE_F5 = 135
KEYCODE_F6 = 136
KEYCODE_F7 = 137
KEYCODE_F8 = 138
KEYCODE_F9 = 139
KEYCODE_F10 = 140
KEYCODE_F11 = 141
KEYCODE_F12 = 142
KEYCODE_NUM_LOCK = 143
KEYCODE_NUMPAD_0 = 144
KEYCODE_NUMPAD_1 = 145
KEYCODE_NUMPAD_2 = 146
KEYCODE_NUMPAD_3 = 147
KEYCODE_NUMPAD_4 = 148
KEYCODE_NUMPAD_5 = 149
KEYCODE_NUMPAD_6 = 150
KEYCODE_NUMPAD_7 = 151
KEYCODE_NUMPAD_8 = 152
KEYCODE_NUMPAD_9 = 153
KEYCODE_NUMPAD_DIVIDE = 154
KEYCODE_NUMPAD_MULTIPLY = 155
KEYCODE_NUMPAD_SUBTRACT = 156
KEYCODE_NUMPAD_ADD = 157
KEYCODE_NUMPAD_DOT = 158
KEYCODE_NUMPAD_COMMA = 159
KEYCODE_NUMPAD_ENTER = 160
KEYCODE_NUMPAD_EQUALS = 161
KEYCODE_NUMPAD_LEFT_PAREN = 162
KEYCODE_NUMPAD_RIGHT_PAREN = 163
KEYCODE_VOLUME_MUTE = 164
KEYCODE_INFO = 165
KEYCODE_CHANNEL_UP = 166
KEYCODE_CHANNEL_DOWN = 167
KEYCODE_ZOOM_IN = 168
KEYCODE_ZOOM_OUT = 169
KEYCODE_TV = 170
KEYCODE_WINDOW = 171
KEYCODE_GUIDE = 172
KEYCODE_DVR = 173
KEYCODE_BOOKMARK = 174
KEYCODE_CAPTIONS = 175
KEYCODE_SETTINGS = 176
KEYCODE_TV_POWER = 177
KEYCODE_TV_INPUT = 178
KEYCODE_STB_POWER = 179
KEYCODE_STB_INPUT = 180
KEYCODE_AVR_POWER = 181
KEYCODE_AVR_INPUT = 182
KEYCODE_PROG_RED = 183
KEYCODE_PROG_GREEN = 184
KEYCODE_PROG_YELLOW = 185
KEYCODE_PROG_BLUE = 186
KEYCODE_APP_SWITCH = 187
KEYCODE_BUTTON_1 = 188
KEYCODE_BUTTON_2 = 189
KEYCODE_BUTTON_3 = 190
KEYCODE_BUTTON_4 = 191
KEYCODE_BUTTON_5 = 192
KEYCODE_BUTTON_6 = 193
KEYCODE_BUTTON_7 = 194
KEYCODE_BUTTON_8 = 195
KEYCODE_BUTTON_9 = 196
KEYCODE_BUTTON_10 = 197
KEYCODE_BUTTON_11 = 198
KEYCODE_BUTTON_12 = 199
KEYCODE_BUTTON_13 = 200
KEYCODE_BUTTON_14 = 201
KEYCODE_BUTTON_15 = 202
KEYCODE_BUTTON_16 = 203
KEYCODE_LANGUAGE_SWITCH = 204
KEYCODE_MANNER_MODE = 205
KEYCODE_3D_MODE = 206
KEYCODE_CONTACTS = 207
KEYCODE_CALENDAR = 208
KEYCODE_MUSIC = 209
KEYCODE_CALCULATOR = 210
KEYCODE_ZENKAKU_HANKAKU = 211
KEYCODE_EISU = 212
KEYCODE_MUHENKAN = 213
KEYCODE_HENKAN = 214
KEYCODE_KATAKANA_HIRAGANA = 215
KEYCODE_YEN = 216
KEYCODE_RO = 217
KEYCODE_KANA = 218
KEYCODE_ASSIST = 219
KEYCODE_BRIGHTNESS_DOWN = 220
KEYCODE_BRIGHTNESS_UP = 221
KEYCODE_MEDIA_AUDIO_TRACK = 222
KEYCODE_SLEEP = 223
KEYCODE_WAKEUP = 224
KEYCODE_PAIRING = 225
KEYCODE_MEDIA_TOP_MENU = 226
KEYCODE_11 = 227
KEYCODE_12 = 228
KEYCODE_LAST_CHANNEL = 229
KEYCODE_TV_DATA_SERVICE = 230
KEYCODE_VOICE_ASSIST = 231
KEYCODE_TV_RADIO_SERVICE = 232
KEYCODE_TV_TELETEXT = 233
KEYCODE_TV_NUMBER_ENTRY = 234
KEYCODE_TV_TERRESTRIAL_ANALOG = 235
KEYCODE_TV_TERRESTRIAL_DIGITAL = 236
KEYCODE_TV_SATELLITE = 237
KEYCODE_TV_SATELLITE_BS = 238
KEYCODE_TV_SATELLITE_CS = 239
KEYCODE_TV_SATELLITE_SERVICE = 240
KEYCODE_TV_NETWORK = 241
KEYCODE_TV_ANTENNA_CABLE = 242
KEYCODE_TV_INPUT_HDMI_1 = 243
KEYCODE_TV_INPUT_HDMI_2 = 244
KEYCODE_TV_INPUT_HDMI_3 = 245
KEYCODE_TV_INPUT_HDMI_4 = 246
KEYCODE_TV_INPUT_COMPOSITE_1 = 247
KEYCODE_TV_INPUT_COMPOSITE_2 = 248
KEYCODE_TV_INPUT_COMPONENT_1 = 249
KEYCODE_TV_INPUT_COMPONENT_2 = 250
KEYCODE_TV_INPUT_VGA_1 = 251
KEYCODE_TV_AUDIO_DESCRIPTION = 252
KEYCODE_TV_AUDIO_DESCRIPTION_MIX_UP = 253
KEYCODE_TV_AUDIO_DESCRIPTION_MIX_DOWN = 254
KEYCODE_TV_ZOOM_MODE = 255
KEYCODE_TV_CONTENTS_MENU = 256
KEYCODE_TV_MEDIA_CONTEXT_MENU = 257
KEYCODE_TV_TIMER_PROGRAMMING = 258
KEYCODE_HELP = 259
KEYCODE_NAVIGATE_PREVIOUS = 260
KEYCODE_NAVIGATE_NEXT = 261
KEYCODE_NAVIGATE_IN = 262
KEYCODE_NAVIGATE_OUT = 263
KEYCODE_MEDIA_SKIP_FORWARD = 272
KEYCODE_MEDIA_SKIP_BACKWARD = 273
KEYCODE_MEDIA_STEP_FORWARD = 274
KEYCODE_MEDIA_STEP_BACKWARD = 275
使用示例1
2
3
4
5
6
7
8
9
10
11# 方法1:
.\adb shell input keyevent KEYCODE_HOME
.\adb shell input keyevent KEYCODE_MENU
.\adb shell input keyevent KEYCODE_BACK
.\adb shell input keyevent KEYCODE_POWER # 关机
.\adb shell input keyevent KEYCODE_NOTIFICATION # 解锁
# 方式2
.\adb shell input keyevent 3 # 返回主页
.\adb shell input keyevent 4 # 返回上一级
.\adb shell input keyevent 6 # 挂机息屏
1 | # 创建截屏存放目录即截屏 |
描述:screenrecord是一个shell命令,支持Android4.4(API level 19)以上,视频格式为 mp4,值得注意的是不一定所有的安卓设备都有此命令。1
2
3
4
5
6
7
8
9
10
11
12# 1.录制屏幕(Android4.4以上可用), 按下ctrl+C停止录制
.\adb shell screenrecord /sdcard/pic/demo.mp4
# 2.指定录制时间、频分辨率大小,参数 --time-limit 默认 180 秒,--size 默认 1280*720 ,录制期间可以通过 Ctrl+C 结束录屏。
adb shell screenrecord --time-limit 20 --size 1280*720 /sdcard/screenrecord.mp4
# 3.指定视频的比特率(`增加比特率以提高视频质量或为了让文件更小而降低比特率`)以及旋转90度
adb shell screenrecord --bit-rate 6000000 --rotate /sdcard/screenrecord.mp4
# 将录制文件/sdcard/demo.mp4复制到电脑
.\adb.exe -s PWHUT20423010562 pull /sdcard/pic/demo.mp4 D:\\Study\Project\weiyigeek.mp4
描述: 在 adb shell 中,您可以使用软件包管理器 (pm) 工具发出命令,以对设备上安装的应用软件包执行操作和查询。1
2
3
4
5
6
7
8
9
10
11
12
13
14# // 查看所有应用
.\adb shell pm list packages
# package:com.ucmobile.lite
# package:com.huawei.camera
# // 查看系统应用
.\adb shell pm list packages -s
# com.android.phon
# // 查看三方应用
.\adb shell pm list packages -3
# package:com.ucmobile.lite
# package:com.eg.android.AlipayWidget
# package:com.sankuai.meituan
描述: 在 adb shell 中,您可以使用 activity 管理器 (am) 工具发出命令以执行各种系统操作,如启动 activity、强行停止进程、广播 intent、修改设备屏幕属性等等。
语法参数:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19start [options] intent 启动由 intent 指定的 Activity。
# -D:启用调试功能。
# -W:等待启动完成。
# --start-profiler file:启动性能分析器并将结果发送至 file。
# -P file:类似于 --start-profiler,但当应用进入空闲状态时剖析停止。
# -R count:重复启动 activity count 次。在每次重复前,将完成顶层 activity。
# -S:在启动 activity 前,强行停止目标应用。
# --opengl-trace:启用 OpenGL 函数的跟踪。
# --user user_id | current:指定要作为哪个用户运行;如果未指定,则作为当前用户运行。
startservice [options] intent # 启动由 intent 指定的 Service。
kill [options] package # 终止与 package 关联的所有进程。此命令仅终止可安全终止且不会影响用户体验的进程。
kill-all # 终止所有后台进程。
force-stop package # 强行停止与 package 关联的所有进程。
broadcast [options] intent # 发出广播 intent。
instrument [options] component # 使用 Instrumentation 实例启动监控,通常情况下,目标 component 采用 test_package/runner_class 格式。
profile start process file # 启动 process 的性能分析器,将结果写入 file。
profile stop process # 停止 process 的性能分析器。
dumpheap [options] process file # 转储 process 的堆,写入 file。
set-debug-app [options] package # 设置要调试的应用 package。
intent 参数的规范:对于采用 intent 参数的 activity 管理器命令,您可以使用以下常用选项指定 intent , 参考地址1
2
3
4
5
6-a action : 指定 intent 操作,如 android.intent.action.VIEW, 只能声明一次。
-d data_uri : 指定 intent 数据 URI,如 content://contacts/people/1,只能声明一次。
-t mime_type : 指定 intent MIME 类型,如 image/png, 只能声明一次。
-c category : 指定 intent 类别,如 android.intent.category.APP_CONTACTS。
-n component : 指定带有软件包名称前缀的组件名称,以创建显式 intent, 如 com.example.app/.ExampleActivity。
-f flags : 向 setFlags() 支持的 intent 添加标志。
基础示例:1
2
3
4
5
6# 启动应用
.\adb shell am start -a android.intent.action.VIEW
.\adb shell am start com.huawei.camera
# Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] pkg=com.huawei.camera }
# 启动应用使用 -n 包名/相对包名的类名
adb shell am start -n com.ucmobile.lite/.MainActivity
描述: 为便于您开发和测试设备管理应用,请向设备政策管理器 (dpm) 工具发出命令。
语法参数:1
2
3
4
5
6
7
8
9
10# syntax
adb shell dpm command
# command
set-active-admin [options] component # 将 component 设为活动管理。
set-profile-owner [options] component # 将 component 设为活跃管理员,并将其软件包设为现有用户的个人资料所有者。
set-device-owner [options] component # 将 component 设为活跃管理员,并将其软件包设为设备所有者。
remove-active-admin [options] component # 停用活跃管理员,应用必须在清单中声明 android:testOnly。此命令还会移除设备所有者和个人资料所有者。
clear-freeze-period-record # 清除设备之前设置的系统 OTA 更新冻结期记录,在开发管理冻结期的应用时,这有助于避免设备存在调度方面的限制。
force-network-logs # 强制系统让任何现有网络日志随时可供 DPC 检索,如果有可用的连接或 DNS 日志,DPC 会收到 onNetworkLogsAvailable() 回调。请参阅网络活动日志。
force-security-logs # 强制系统向 DPC 提供任何现有安全日志,如果有可用的日志,DPC 会收到 onSecurityLogsAvailable() 回调。请参阅记录企业设备活动。
cmd package - 读取应用的 ART 配置文件
从 Android 7.0(API 级别 24)开始,Android 运行时 (ART) 会收集已安装应用的执行配置文件,这些配置文件用于优化应用性能.1
2
3# 1.要生成文本格式的配置文件信息并拉取到本地
adb shell cmd package dump-profiles package
adb pull /data/misc/profman/package.prof.txt
温馨提示:您必须拥有对文件系统的 root 权限(例如在模拟器上),才能检索执行配置文件的文件名。
cmd testharness - 重置测试设备
如果您在多个测试设备上测试应用,则在两次测试之间重置设备可能很有用, 在使用 testharness 恢复设备时,设备会自动将允许通过当前工作站调试设备的 RSA 密钥备份在一个持久性位置。1
2# 例如,可以移除用户数据并重置测试环境。您可以使用 testharness adb shell 命令对搭载 Android 10(API 级别 29)或更高版本的测试设备恢复出厂设置.
adb shell cmd testharness enable
语法参数:1
2
3
4
5
6
7
8
9
10
11
12
13Usage: getevent [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-d] [-p] [-i] [-l] [-q] [-c count] [-r] [device]
-t: 显示时间戳
-n: 不打印换行符
-s: 打印给定位的开关状态
-S: 打印所有开关状态
-v: 详细掩码(错误=1,dev=2,名称=4,信息=8,错误=16,位置事件=32,道具=64)
-d: 显示HID描述符(如果可用)
-p: 显示可能的事件(错误、开发、名称、位置事件)
-i: 显示所有设备信息和可能的事件
-l: 用纯文本标记事件类型和名称
-q: 安静(清晰冗长的掩码)
-c: 打印给定数量的事件,然后退出
-r: 接收到打印速率事件
使用示例: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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52# 1.获取手机事件
.\adb.exe shell getevent
# could not get driver version for /dev/input/mice, Not a typewriter
# add device 1: /dev/input/event3
# name: "fingerprint"
# add device 2: /dev/input/event5
# name: "huawei,ts_kit"
# add device 3: /dev/input/event1
# name: "hisi_volume_down_key"
# add device 4: /dev/input/event4
# name: "DA_SEPARATE_MACHINE_CARD Headset Jack" # add device 5: /dev/input/event2
# name: "ponkey_on"
# add device 6: /dev/input/event0
# name: "hisi_volume_up_key"
# /dev/input/event5: 0003 0035 000001a2 # 按键信息
# /dev/input/event5: 0003 0036 000000ae
# /dev/input/event5: 0003 0039 00000000
# /dev/input/event5: 0000 0002 00000000
# 组合示例:记录操作与重放(模拟点击),使用dd命令将我们录制的动作文件 /sdcard/event3 替换至 /dev/input/event3 ,貌似需要取得root权限。
cat /dev/input/event5> /sdcard/event5
while :;do dd if=/sdcard/event5 of=/dev/input/event5;sleep 5; done
# 2.查看当前各input设备是否注册成功
.\adb shell getevent -i
......
add device 2: /dev/input/event5
bus: 001c
vendor 0000
product 0000
version 0000
name: "huawei,ts_kit"
location: ""
id: ""
version: 1.0.1
events:
KEY (0001): 014a
ABS (0003): 0030 : value 0, min 0, max 255, fuzz 0, flat 0, resolution 0 # 手指压力范围 ABS_MT_TOUCH_MAJOR
0031 : value 0, min 0, max 255, fuzz 0, flat 0, resolution 0
0032 : value 0, min 0, max 100, fuzz 0, flat 0, resolution 0 # 手指按压宽度 ABS_MT_WIDTH_MAJOR
0033 : value 0, min 0, max 100, fuzz 0, flat 0, resolution 0
0035 : value 0, min 0, max 1079, fuzz 0, flat 0, resolution 0 # X方向的最大触摸范围 ABS_MT_POSITION_X
0036 : value 0, min 0, max 2309, fuzz 0, flat 0, resolution 0 # Y方向的最大触摸范围 ABS_MT_POSITION_Y
0039 : value 0, min 0, max 10, fuzz 0, flat 0, resolution 0 # 最大支持手指数 ABS_MT_TRACKING_ID
.....
# 3.报点率决定了触摸的响应速度,报点率过低直接会影响到体验。
.\adb shell getevent -r /dev/input/event5
# 0003 0035 0000026b X
# 0003 0036 000003e4 Y
# 0003 0039 00000000 按压指数
# 0000 0002 00000000
# 0000 0000 00000000
扩展补充: Android 手机事件名词对应及格式,假设我手指连续在(0xd8, 16f)即(216, 367)坐标附近触摸三次得到的信息如下:
参考地址: https://developer.android.com/reference/android/view/KeyEvent.html
描述: 其作用与getevent相反,它可以往input设备中写入对应的格式值, 注意此操作需要root权限。
语法示例:1
2
3.\adb shell sendevent --help
usage: sendevent DEVICE TYPE CODE VALUE
# Sends a Linux input event.
使用示例1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19# 示例 0.dev/input/event0 对应的是电源键Power事件event // 一定要找准event
# KEY_POWER,Power键 Down事件
adb shell sendevent /dev/input/event0 1 116 1 && sendevent /dev/input/event0 0 0 0
# KEY_POWER,Power键 Up事件
adb shell sendevent /dev/input/event0 1 116 0 && sendevent /dev/input/event0 0 0 0
# 示例1.发送 KEY_VOLUMEUP 的 down 和 up 事件:
adb shell sendevent /dev/input/event2 1 115 0 // 十进制 DOWN 事件
adb shell sendevent /dev/input/event2 0 0 0 // SYNC 上报 DOWN 事件
adb shell sendevent /dev/input/event2 1 115 1 // UP 事件
adb shell sendevent /dev/input/event2 0 0 0 // SYNC 上报 UP 事件
# 示例2.发送 KEY_VOLUMEDOWN 的 down 和 up 事件
adb shell sendevent /dev/input/event2 1 114 0 // 十进制 DOWN 事件
adb shell sendevent /dev/input/event2 0 0 0 // SYNC 上报 DOWN 事件
adb shell sendevent /dev/input/event2 1 114 1 // UP 事件
adb shell sendevent /dev/input/event2 0 0 0 // SYNC 上报 UP 事件
温馨提示: 使用 sendevent 发送事件时,一定要先有Down事件,才能有Up事件。
描述: sqlite3 可启动用于检查 SQLite 数据库的 sqlite 命令行程序(需要ROOT权限哟
)。它包含用于输出表格内容的 .dump 以及用于输出现有表格的 SQL CREATE 语句的 .schema 等命令。
1 | # 方式1. |
使用示例1
2# 示例1.关闭usb调试
adb shell settings put global adb_enabled 0
示例示例1
2# 开启/关闭wifi
adb shell svc wifi enable|disable
温馨提示: 上述指令作者还在不断收集整理中,后续将会持续更新,请各位朋友多多关注。
你好看友,欢迎关注博主微信公众号哟! ❤
这将是我持续更新文章的动力源泉,谢谢支持!(๑′ᴗ‵๑)
温馨提示: 未解锁的用户不能粘贴复制文章内容哟!
方式1.请访问本博主的B站【WeiyiGeek】首页关注UP主,
将自动随机获取解锁验证码。
Method 2.Please visit 【My Twitter】. There is an article verification code in the homepage.
方式3.扫一扫下方二维码,关注本站官方公众号
回复:验证码
将获取解锁(有效期7天)本站所有技术文章哟!
@WeiyiGeek - 为了能到远方,脚下的每一步都不能少
欢迎各位志同道合的朋友一起学习交流,如文章有误请在下方留下您宝贵的经验知识,个人邮箱地址【master#weiyigeek.top】
或者个人公众号【WeiyiGeek】
联系我。
更多文章来源于【WeiyiGeek Blog - 为了能到远方,脚下的每一步都不能少】, 个人首页地址( https://weiyigeek.top )
专栏书写不易,如果您觉得这个专栏还不错的,请给这篇专栏 【点个赞、投个币、收个藏、关个注、转个发、赞个助】,这将对我的肯定,我将持续整理发布更多优质原创文章!。
最后更新时间:
文章原始路径:_posts/硬件物联/移动手持设备/Android/安卓设备adb调试工具命令归纳总结一览表.md
转载注明出处,原文地址:https://blog.weiyigeek.top/2019/4-17-73.html
本站文章内容遵循 知识共享 署名 - 非商业性 - 相同方式共享 4.0 国际协议