哔哩哔哩:https://www.bilibili.com/video/BV1UPfWYeE4X/
1、adb调试工具简介
2、搭建adb调试环境
- adb软件下载到电脑
- 配置环境变量—-我的电脑—-高级系统配置—-环境变量—–系统变量——–path——复制进去adb的路径
- win+r——-cmd——adb
3、adb连接的手机如何配置
- 打开开发者模式
- usb调试
- usb安装
- 安全设置
4、adb基本用法
学习网址:https://www.wanandroid.com/blog/show/2310
adb 命令的基本语法如下:
adb [-d|-e|-s <serialNumber>] <command>
如果有多个设备/模拟器连接,则需要为命令指定目标设备。
参数 含义
-d 指定当前唯一通过USB 连接的Android 设备为命令目标
-e 指定当前唯一运行的模拟器为命令目标
-s <serialNumber> 指定相应serialNumber 号的设备/模拟器为命令目标
- 启动adb服务
adb start-server
- 停止adb server 命令:
adb kill-server
- 指定adb server 的网络端口
命令:
adb -P <port> start-server
默认端口为5037。
5、设备连接管理
- 查询已连接设备/模拟器
命令:
adb devices
输出示例:
List of devices attached
cf264b8f device
emulator-5554 device
10.129.164.6:5555 device
输出格式为[serialNumber] [state]
,serialNumber即我们常说的SN,state有如下几种:
offline
—— 表示设备未连接成功或无响应。device
—— 设备已连接。注意这个状态并不能标识Android 系统已经完全启动和可操作,在设备启动过程中设备实例就可连接到adb,但启动完毕后系统才处于可操作状态。no device
—— 没有设备/模拟器连接。
常见异常输出:
- 没有设备/模拟器连接成功。List of devices attached
- 设备/模拟器未连接到adb 或无响应。List of devices attached
cf264b8f offline
- 无线连接(需要借助USB 线)除了可以通过USB 连接设备与电脑来使用adb,也可以通过无线连接——虽然连接过程中也有需要使用USB 的步骤,但是连接成功之后你的设备就可以在一定范围内摆脱USB 连接线的限制啦!操作步骤:
- 将Android 设备与要运行adb 的电脑连接到同一个局域网,比如连到同一个WiFi。
- 将设备与电脑通过USB 线连接。应确保连接成功(可运行
adb devices
看是否能列出该设备)。 - 让设备在5555 端口监听TCP/IP 连接:adb tcpip 5555
- 断开USB 连接。
- 找到设备的IP 地址。一般能在 wifi信息 找到
- 通过IP 地址连接设备。adb connect <device-ip-address>这里的
<device-ip-address>
就是上一步中找到的设备IP地址。 - 确认连接状态。adb devices如果能看到<device-ip-address>:5555 device说明连接成功。
adb connect <device-ip-address>
那一步;如果还是不行的话,通过adb kill-server
重新启动adb然后从头再来一次试试。断开无线连接命令:adb disconnect <device-ip-address>
- 无线连接(无需借助USB 线)
注:需要root 权限。
上一节「无线连接(需要借助USB 线)」是官方文档里介绍的方法,需要借助于USB 数据线来实现无线连接。
既然我们想要实现无线连接,那能不能所有步骤下来都是无线的呢?答案是能的。
- 在Android 设备上安装一个终端模拟器。已经安装过的设备可以跳过此步。我使用的终端模拟器下载地址是:Terminal Emulator for Android Downloads
- 将Android 设备与要运行adb 的电脑连接到同一个局域网,比如连到同一个WiFi。
- 打开Android 设备上的终端模拟器,在里面依次运行命令:su
setprop service.adb.tcp.port 5555 - 找到Android 设备的IP 地址。一般能在「设置」-「关于手机」-「状态信息」-「IP地址」找到,也可以使用下文里查看设备信息- IP地址一节里的方法用adb命令来查看。
- 在电脑上通过adb 和IP 地址连接Android 设备。adb connect <device-ip-address>这里的
<device-ip-address>
就是上一步中找到的设备IP地址。如果能看到connected to <device-ip-address>:5555
这样的输出则表示连接成功。
节注一:
有的设备,比如小米5S + MIUI 8.0 + Android 6.0.1 MXB48T,可能在第5 步之前需要重启adbd 服务,在设备的终端模拟器上运行:
restart adbd
如果restart 无效,尝试以下命令:
stop adbd
start adbd
6、应用管理
6.1、查看应用列表
adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]
参数 | 显示列表 |
---|---|
无 | 所有应用 |
-f | 显示应用关联的apk 文件 |
-d | 只显示disabled 的应用 |
-e | 只显示enabled 的应用 |
-s | 只显示系统应用 |
-3 | 只显示第三方应用 |
-i | 显示应用的installer |
-u | 包含已卸载应用 |
<FILTER> | 包名包含<FILTER> 字符串 |
6.2、安装apk
adb install [-l -r -t -s -d -g] <path_to_apk>
参数 | 含义 |
---|---|
-l | 将应用安装到保护目录/mnt/asec |
-r | 允许覆盖安装 |
-t | 允许安装AndroidManifest.xml里application指定android:testOnly="true" 的应用 |
-s | 将应用安装到sdcard |
-d | 允许降级覆盖安装 |
-g | 授予所有运行时权限 |
Success 成功 Failure 失败
adb install
实际是分三步完成:
- push apk 文件到/data/local/tmp。
- 调用pm install 安装。
- 删除 /data/local/tmp 下的对应apk 文件。
所以,必要的时候也可以根据这个步骤,手动分步执行安装过程。
6.3、卸载应用
命令:
adb uninstall [-k] <packagename>
<packagename>
表示应用的包名,-k
参数可选,表示卸载应用但保留数据和缓存目录。
命令示例:
adb uninstall com.centent.mm
表示卸载微信。
6.4、清除应用数据与缓存
命令:
adb shell pm clear <packagename>
<packagename>
表示应用名包,这条命令的效果相当于在设置里的应用信息界面点击了「清除缓存」和「清除数据」。
命令示例:
adb shell pm clear com.qihoo360.mobilesafe
表示清除360 手机卫士的数据和缓存。
6.5、查看前台Activity
命令:
adb shell "dumpsys activity | grep mResumedActivity"
安卓版本不同使用的命令有所差异
输出示例:
mResumedActivity: ActivityRecord{331d51f u0 com.tencent.mm/.ui.LauncherUI t1769}
其中的com.tencent.mm/.ui.LauncherUI就是当前处于前台的Activity。
6.6、查看正在运行的Services
命令:
adb shell dumpsys activity services [<packagename>]
<packagename>
参数不是必须的,指定<packagename>
表示查看与某个包名相关的Services,不指定表示查看所有Services。
<packagename>
不一定要给出完整的包名,比如运行adb shell dumpsys activity services org.mazhuang
,那么包名org.mazhuang.demo1
、org.mazhuang.demo2
和org.mazhuang123
等相关的Services都会列出来。
6.7、查看应用详细信息
命令:
adb shell dumpsys package <packagename>
输出中包含很多信息,包括Activity Resolver Table、Registered ContentProviders、包名、userId、安装后的文件资源代码等路径、版本信息、权限信息和授予状态、签名版本信息等。
<packagename>
表示应用包名。
6.8、查看应用安装路径
命令:
adb shell pm path <packagename>
输出应用安装路径
输出示例:
adb shell pm path ecarx.weather
package:/data/app/ecarx.weather-1.apk
7、与应用交互
adb shell am <command>
- 启动应用/调起Activityadb shell am start -n Activity
- 调起Serviceadb shell am startservice -n Service
- 停止Serviceadb shell am stopservice [options] <INTENT>
- 发送广播
- 强制停止应用adb shell am force-stop 包名
- 收紧内存
8、文件管理
- 复制设备里的文件到电脑adb pull <设备里的文件路径> [电脑上的目录]
- 复制电脑里的文件到设备adb push <电脑上的文件路径> <设备里的文件名>
注意:后边的是设备上的文件名
9、模拟按键
keycode | 含义 |
---|---|
3 | HOME 键 |
4 | 返回键 |
5 | 打开拨号应用 |
6 | 挂断电话 |
24 | 增加音量 |
25 | 降低音量 |
26 | 电源键 |
27 | 拍照(需要在相机应用里) |
64 | 打开浏览器 |
82 | 菜单键 |
85 | 播放/暂停 |
86 | 停止播放 |
87 | 播放下一首 |
88 | 播放上一首 |
122 | 移动光标到行首或列表顶部 |
123 | 移动光标到行末或列表底部 |
126 | 恢复播放 |
127 | 暂停播放 |
164 | 静音 |
176 | 打开系统设置 |
187 | 切换应用 |
207 | 打开联系人 |
208 | 打开日历 |
209 | 打开音乐 |
210 | 打开计算器 |
220 | 降低屏幕亮度 |
221 | 提高屏幕亮度 |
223 | 系统休眠 |
224 | 点亮屏幕 |
231 | 打开语音助手 |
276 | 如果没有wakelock 则让系统休眠 |
adb shell input keyevent 键值
10、模拟输入文本
adb shell input text 英文文本
23 是确定键
66 是回车键
11、模拟滑动
adb shell input swipe x1 y1 x2 y2 time
12、模拟点击
adb shell input tap x y
13、查看设备信息
- 设备型号
adb shell getprop ro.product.model
- 电池状况
adb shell dumpsys battery
//这是输出信息
Current Battery Service state:
AC powered: false
USB powered: true
Wireless powered: false
Max charging current: 500000
Max charging voltage: 5000000
Charge counter: 3747750
status: 2
health: 2
present: true
level: 96
scale: 100
voltage: 4320
temperature: 347
technology: Li-poly
其中scale代表最大电量,level代表当前电量
- 屏幕分辨率
adb shell wm size
如果使用命令修改过:
Physical size: 1080x1920
Override size: 480x1024
- 屏幕密度(dpi)
adb shell wm density
- 显示屏参数
adb shell dumpsys window displays
- android_id
adb shell settings get secure android_id
- IMEI(设备id)
//需要root权限
adb shell dumpsys iphonesubinfo
- Android 系统版本
adb shell getprop ro.build.version.release
- IP 地址
adb shell ifconfig | grep Mask
//wifi
adb shell ifconfig wlan0
- Mac 地址
adb shell cat /sys/class/net/wlan0/address
- CPU 信息
adb shell cat /proc/cpuinfo
- 内存信息
adb shell cat /proc/meminfo
14、修改手机设置
- 分辨率
命令:
adb shell wm size 480x1024
表示将分辨率修改为480px * 1024px。
乘号是小写的 x
恢复原分辨率命令:
adb shell wm size reset
- 屏幕密度
命令:
adb shell wm density 160
表示将屏幕密度修改为160dpi。
恢复原屏幕密度命令:
adb shell wm density reset
- 显示区域
命令:
adb shell wm overscan 0,0,0,200
四个数字分别表示距离左、上、右、下边缘的留白像素,以上命令表示将屏幕底部200px 留白。
恢复原显示区域命令:
adb shell wm overscan reset
15、实用功能
- 屏幕截图adb exec-out screencap -p > sc.png
- 录制屏幕adb shell screenrecord /sdcard/filename.mp4
需要停止时按Ctrl-C,默认录制时间和最长录制时间都是180秒。
如果需要导出到电脑:
adb pull /sdcard/filename.mp4 - 重启手机adb reboot
- 检测手机是否rootadb shell
此时命令行提示符是$则表示没有root权限,是#则表示已root。