持续更新中
1. adb概述
- adb全称为Android debug bridge
- 通俗来讲,adb是PC与安卓系统实现交互的桥梁,借助adb,我们可以实现PC电脑对安卓设备进行操作控制。比如实现各种点击事件、滑动事件、按键事件和拷贝log信息等功能。
2. adb环境配置
3. 连接设备
连接方式 | 注意事项 |
---|---|
有线连接 | 需要打开USB调试,需要装驱动 |
无线连接 | PC与设备处于同一局域网,需要打开USB调试 |
串口连接 | 使用串口指令 |
- 连接注意点
4. adb常用命令
4.1 基本命令
- 显示adb版本信息
adb version
- 查看命令帮助信息
adb help
# 注:帮助文档写得很详细,英文好的可以直接看help
- 显示当前已连接的设备列表
adb devices
- 全局参数
-a 监听所有网络接口,而非仅本地
-d 使用USB连接的设备 (若有多个则会报错)
-e 使用TCP/IP设备 (若有读个则会报错)
-s SERIAL 使用指定序列号的设备 (覆盖$ANDROID_SERIAL)
-t ID 使用指定transport id的设备
-H 指定adb server的host [默认localhost]
-P 指定adb server的端口 [默认5037]
-L SOCKET 指定adb server的监听socket[默认tcp:localhost:5037]
4.2 通信命令
- 连接设备
adb connect HOST[:PORT]
# PORT默认是5555
adb forward --list 列出设备所有正向套接字连接
- 断开设备
adb disconnect HOST[:PORT]
# PORT默认是5555
- 重连设备
adb reconnect offline
4.3 状态命令
- 获取当前连接状态
adb get-state
# device:连接正常
# Offline:连接退出
# Unauthorized:未授权
- 查看序列号
adb get-serialno
- 获取设备路径
adb get-devpath
- 获取Android管理员(root用户)的权限
adb root
# 注意:一般测试机可使用root权限。
# Android版本9以上,不支持商用机使用root权限,但可以修改底层一些配置
4.4 内部服务调试命令
- 杀死服务
adb kill-server
- 启用服务
adb start-server
# 确保至少有一个server在运行
4.5 shell命令
- 进入adb的shell界面
shell [-e ESCAPE] [-n] [-Tt] [-x] [等...]
-e: 使用转义字符, 或者使用 "none"; 默认是 '~'
-n: 忽略文件输入流
-T: 禁用pty分配
-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
5. 实现部分安卓端的控制操作
- 获取安卓端的包名
adb shell pm list packages {grepName} -{param}
:param param:
-a 列出所有包名
-s 系统应用
-3 三方应用
-f 包和包相关联的文件
-i 包相关的信息
更多参数参考:adb shell pm list packages 的一些用法
:param grepName:
你要查找的字符串,就是一个过滤器,可不填
- 获取当前活动页指令
在安卓端打开任意应用, 通过以下指令即可获取当前活动应用的包名详细信息
adb shell "dumpsys window | grep mCurrentFocus"
- 打开安卓下的应用
打开文件管理器实例:
com.skg.filemanager/com.skg.filemanager.FileBrowserActivity需要通过获取当前活动页的指令获取
adb shell am start com.skg.filemanager/com.skg.filemanager.FileBrowserActivity
- 获取安卓端的分辨率
adb shell wm size
- 控制安卓端重启
adb shell reboot
或
adb reboot
二者本质上有区别,adb shell 是调用安卓内核重启
- 开关wifi
adb shell svc wifi enable/disenable
只能关闭不能打开,因为关闭之后adb会丢失连接,但可通过串口发送打开wifi指令,解决方法博主正在探索中
- 点击事件
adb shell input tap {x} {y}
坐标的获取建议打开安卓原生设置菜单的开发者模式,打开触控位置
- 模拟文字输入
adb shell input text {text}
模拟文字输入事件,text输入字符串, 只支持unicode编码字符,不支持ASCII码,所以不支持中文, 解决方案:解决 adb shell input text 无法中文的问题
- 滑动事件
adb shell input swipe {x1} {y1} {x2} {y2} {t}
模拟滑动事件,x1,y1为起始坐标,x2,y2为终点坐标,t为滑动的时间
- 拖动事件
adb shell input draganddrop {x1} {y1} {x2} {y2} {t}
模拟拖动事件,x1,y1为起始坐标,x2,y2为终点坐标,t为拖动的时间
- 截图保存到电脑
adb exec-out screencap -p >C:\Users\***\Pictures\{picture_name}.png
截图保存到电脑,同名默认覆盖, 路径需要修改
- 内置按键事件
adb shell input keyevent {x}
x=3表是主页,x=4表示返回,可支持自定义, 更多内置按键