本文为小编学习总结的一些adb的常用命令,可能一些命令有待验证,更多内容可以参考adb用法大全
adb 命令的基本语法如下:
adb [ -d| -e| -s <sericalNumber>] <command>
如果只有一个设备/模拟器连接时,可以省略掉[ -d| -e| -s] <sericalNumber>] 这一部分,直接使用adb <command>。
如果有多个设备/模拟器,则需要为命令指定目标设备
参数 | 含义 |
---|---|
-d | 指定当前唯一通过 USB 连接的 Android 设备为命令目标 |
-e | 指定当前唯一运行的模拟器为目标命令 |
-s<serialNumber> | 指定相应 serialNumber 号的设备/模拟器为命令目标 |
adb version
adb devices
adb get-serialno
如返回127.0.0.1:7555
adb logcat
adb logcat -c 清除日志
adb logcat | grep "tag" 过滤日志 这里的tag就是你打印日志的时候需要设置的第一个参数TAG,通过TAG我们可以很轻松的过滤出我们想要的日志,轻松高效。
adb install [apk文件的路径]
adb install douyin.apk
adb -s 127.0.0.1:7555 install douyin.apk
adb install -r douyin.apk
adb install后面可以跟一些可选参数来控制安装APK的行为,可选参数及含义如下
参数 | 含义 |
---|---|
-l | 将应用安装到保护目录 /mnt/asec |
-r | 允许覆盖安装 |
-t | 允许安装AndroidMainfest.xml里application指定android:testOnly="true" 的应用 |
-s | 应用安装到sdcard |
-d | 允许降级覆盖安装 |
-g | 授予所有运行时权限 |
--abi abi-identifier | 为特定ABI强制安装apk,abi-identifier可以是armeabi-v7a、arm64-v8a、v86、x86_64 等 |
adb uninstall douyin.apk
adb uninstall -k douyin.apk
adb的运行原理是PC端的adb server 与手机端的守护进程adbd 建立连接,然后PC端的adb client通过adb server转发命令,adbd接收命令后解析运行。
所以如果adbd以普通权限执行,有些需要root权限才能执行的命令无法直接用adb xxx
执行。这时可以adb shell
然后su
后执行命令,也可以让adbd以root权限执行,这个就能随意执行高权限命令了。
adb root
正常输出:restarting adbd as root
现在再运行 adb shell,看看命令行提示符是不是变成 # 了?
有些手机 root 后也无法通过 adb root 命令让 adbd 以 root 权限执行,比如三星的部分机型,会提示 adbd cannot run as root in production builds,此时可以先安装 adbd Insecure,然后 adb root 试试。
相应地,如果要恢复 adbd 为非 root 权限的话,可以使用 adb unroot 命令。
adb remount
如果我们下载了Android设备对应的系统更新包到电脑上,那么可以通过adb来完成更新 。
以Recovery模式下更新为例:
1.重启到Recovery模式。
命令:
adb reboot recovery
2.在设备的Recovery界面上操作进入Apply update-Apply from ADB
。
注:不同的 Recovery 菜单可能与此有差异,有的是一级菜单就有 Apply update from ADB
。
3.通过adb上传和更新系统。
命令:
adb sideload <path-to-update.zip>
adb kill -server
adb start -server
adb shell getprop ro.product.model
如返回MI 8
adb shell getprop ro.build.version.release
adb shell getprop ro.product.brand
如返回Xiaomi
adb shell getprop ro.build.version.sdk
adb shell wm size
adb shell wm density
修改屏幕密度
adb shell wm density 160
恢复原屏幕密度
adb shell wm density reset
adb shell cat /sys/class/net/wlan0/address
adb shell dumpsys battery
adb shell ps
adb shell top
adb shell cat /proc/cpuinfo
adb shell cat /proc/meminfo
adb shell pm path <packagename>
我手机QQ的安装路径
adb shell pm list packages
adb shell pm list packages -s 查看所有系统app的包名
adb shell pm list packages -3 查看所有第三方app的包名
adb shell pm list packages | grep [包名] 使用grep筛选所有满足要求的app包名
参数 | 显示列表 |
---|---|
无 | 所有应用 |
-f | 显示应用关联的apk文件 |
-d | 只显示disabled的应用 |
-e | 只显示enabled的应用 |
-s | 只显示系统应用 |
-3 | 只显示第三方应用 |
-i | 显示应用的installer |
-u | 包含已卸载应用 |
<FILTER> |
包名包含<FILTER> 字符串 |
adb shell dumpsys package <packagename>
adb shell pm clear <packagename>
当你只是想要清除一个apk的某些数据来复现某些操作的时候,这个命令就显得额外重要。它可以避免我们重装apk来完成这个操作。
adb shell dumpsys package com.ss.android29111 com.ss.android.ugc.aweme/com.ss.android.sdk.activity.BootstrapActivity
adb shell screencap [保存路径]
adb shell screencap /sdcard/screen.png
也可以使用(adb版本太老的话,需要更新adb)
adb exec-out screencap > sc.png
adb shell screenrecord [保存路径]
adb push [电脑文件路径] [手机文件保存路径]
adb push douyin.apk sdcard/douyin.apk
adb pull [手机上文件路径]
注意:此时没有指定上传到电脑的路径,会默认上传到adb程序所在的路径
adb pull sdcard/douyin.apk
指定上传路径:adb pull [手机上文件的路径] [电脑文件的路径]
adb pull /storage/emulated/0/app/txt.mp4 D:/ADB/tet.mp4
adb shell input tap x坐标轴 y坐标轴
adb shell input tap 500 1450
adb shell input swipe 开始x轴 开始y轴 结束x轴 结束y轴 过程持续时间
adb shell input swipe 100 500 100 1450 100
adb shell input keyevent [key值]
adb shell input keyevent 25
一些常用的keyevent键值信息
keyevent | 效果 |
---|---|
3 | Home键 |
4 | 返回键 |
5 | 拨号键 |
6 | 挂机键 |
19 | 向上 |
20 | 向下 |
21 | 向左 |
22 | 向右 |
24 | 音量加 |
25 | 音量减 |
26 | 电源 |
27 | 拍照(需要在相机应用里) |
64 | 打开浏览器 |
66 | 回车键 |
67 | 退格键 |
82 | 菜单键 |
84 | 搜索键 |
85 | 播放/暂停键 |
86 | 停止播放 |
87 | 播放上一首 |
88 | 播放下一首 |
92 | 向上翻页 |
93 | 向下翻页 |
112 | 删除键 |
115 | 大写锁定键 |
122 | 光标移动到开始键 |
123 | 光标移动到末尾键 |
164 | 静音 |
168 | 放大键 |
169 | 缩小键 |
176 | 打开系统设置 |
187 | 切换应用 |
220 | 降低屏幕亮度 |
221 | 提高屏幕亮度 |
223 | 系统休眠 |
224 | 点亮屏幕 |
231 | 打开语音助手 |
db shell input text "insert%stext%shere"
同时小编也是通过这种方式获取到应用包的入口
adb shell dumpsys activity activities | findstr mResumedActivity
获取到了QQ的启动入口
adb shell dumpsys activity services [<packagename>]
<packagename>
参数不是必须的,指定 <packagename>
表示查看与某个包名相关的 Services,不指定表示查看所有 Services。
<packagename>
不一定要给出完整的包名,比如运行 adb shell dumpsys activity services org.example
,那么包名 org.example.demo1、org.example.demo2
和 org.example123
等相关的 Services 都会列出来。
adb shell am start -n [包名]/[启动入口]
adb shel am start -n com.ss.android.ugc.aweme/com.ss.android.sdk.activity.BootstrapActivity
Strating:Intent{cmp=com.ss.android.ugc.aweme/com.ss.android.sdk.activity.BootstrapActivity}
启动qq
adb shell am start -n com.tencent.mobileqq/.activity.SplashActivity
启动有道词典
adb shell am broadcast -a "broadcastactionfilter"
adb shell am broadcast -a "broadcastactionfilter"
adb shell am start -a [浏览器包名] -d [网址]
adb shell am start -a "android.intent.action.VIEW" -d https://www.google.com
adb shell df /data
除了可以通过USB连接设备与电脑来使用adb,也可以通过无线连接——虽然连接过程中也有需要USB的步骤,但是连接成功之后你的设备就可以在一定范围内摆脱USB连接线的束缚了!
1.将 Android 设备与要运行 adb 的电脑连接到同一个局域网,比如连到同一个 WiFi。
2.将设备与电脑通过 USB 线连接。
应确保连接成功(可运行 adb devices 看是否能列出该设备)。
3.让设备在 5555 端口监听 TCP/IP 连接:
adb tcpip 5555
4.断开 USB 连接。
5.找到设备的 IP 地址。
一般能在「设置」-「关于手机」-「状态信息」-「IP地址」找到,也可以使用下文里 查看设备信息 - IP 地址 一节里的方法用 adb 命令来查看。
6.通过 IP 地址连接设备。
adb connect <device-ip-address>
device-ip-address>你设备的ip地址
7.确认连接状态
adb devices
如果能看到
<device-ip-address>:5555 device
说明连接成功
如果连接不了,请确认 Android 设备与电脑是连接到了同一个 WiFi,然后再次执行 adb connect <device-ip-address>
那一步;
如果还是不行的话,通过 adb kill-server
重新启动 adb 然后从头再来一次试试。
adb disconnect <device-ip-address>
AS插件ADB IDEA,装了这款插件可以直接在AS中快速操作一些ADB命令
1、双击shift -> 点击action ->搜索adb
2、Ctrl + Shift + A,快捷键直接调用
1.通过category
adb shell monkey -p <packagename> -c android.intent.category.LAUNCHER 1
adb shell input text不能输入中文的解决方案