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**就代表命令执行成功;
13 系统调试功能开关
adb shell setprop debug.layout true # 显示布局边界
adb shell setprop debug.layout false # 关闭显示布局边界
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
adb shell am start -n 包名/.Activity -d <displayid> # 指定新打开的activity所处的的displayid
adb shell am start -n 包名/.Activity -e pid 10 -e str "helloworld" # 传递key为pid数值为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 --user 0 -a com.android.test --es test_string "this is test string" --ei test_int 100 --ez test_boolean true
# --user 表示U0用户 --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 # 重置分辨率
adb shell settings get system user_rotation #获取屏幕的旋转角度
#,0:自然方向(竖屏)1:右旋转 90 度(横屏)2:倒转 180 度(反向竖屏)3:左旋转 270 (横屏)
adb shell settings put system user_rotation <value>
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 <tag>[: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数据库,区分用户
adb shell put global name xiaoming #更新global模块的name字段属性为xiaoming
adb shell settings delete global name #删除global模块的name字段属性
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 [<source>] <command> [<arg>...]
The sources are:
dpad
keyboard
mouse
touchpad
gamepad
touchnavigation
joystick
touchscreen
stylus
trackball
The commands and default sources are:
text <string> (Default: touchscreen)
keyevent [--longpress] <key code number or name> ... (Default: keyboard)
tap <x> <y> (Default: touchscreen)
swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
draganddrop <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
press (Default: trackball)
roll <dx> <dy> (Default: trackball)
更多推荐
已为社区贡献6条内容
所有评论(0)