Mac 用 adb 远程操控 Android 手机

2023/11/09 Tools 共 2584 字,约 8 分钟

安装

brew install --cask android-platform-tools  # adb
brew install scrcpy                          # 屏幕镜像 + 控制

手机端准备

进 设置 → 关于本机 连续点击「版本号」7 次,开启「开发者选项」。

回到设置 → 开发者选项,打开:

  • USB 调试
  • 无线调试(Android 11+,可选)

小米手机

  1. 设置 → 我的设备 → 「全部参数」→ 连续点击「MIUI 版本」5-8 次
  2. 退到 更多设置 → 出现「开发者选项」
  3. 打开 USB 调试 和 USB 调试(安全模式)

有线连接

USB 接 Mac,首次会弹「允许 USB 调试吗?」,勾选始终允许 → 确定。

adb devices
# List of devices attached
# xxxxxxxx    device

无线 ADB

两种方式,效果一样。

方式一:USB 起步转无线(兼容所有版本)

# 1. USB 接上后,让 adb 在手机上监听 TCP 5555
adb tcpip 5555

# 2. 拔掉 USB,连 WiFi
adb connect <手机IP>:5555

# 3. 验证
adb devices

手机 IP 在 设置 → WLAN → 已连接网络详情 里看。

方式二:原生无线调试(Android 11+,免 USB)

手机端进入「无线调试」会显示 IP 地址 + 端口 + 配对码:

# 1. 配对(首次需要)
adb pair <IP>:<配对端口>     # 输入屏幕上的配对码

# 2. 连接(用调试端口,通常是 5555)
adb connect <IP>:5555

# 3. 验证
adb devices

配对端口和调试端口不是同一个。配对成功后重启 / 清数据前一般不用重配。

Scrcpy:屏幕镜像 + 控制

把手机画面搬到 Mac 上,键鼠实时操控。开源免费,scrcpy 2.x 开始音视频都能传。

启动

scrcpy                       # 默认启动
scrcpy -s <serial>           # 多设备时指定

常用选项

选项作用
--record=foo.mkv录屏(含音频)
--no-audio不传音频
--audio-source=micMac 麦克风投到手机(会议场景)
--audio-source=playback转发手机扬声器音频
--new-display虚拟第二屏(Android 12+)
--otgOTG 模式(Mac 当设备,手机当主机)
--no-control只镜像不控制
--max-size 1024限制分辨率
--bit-rate 8M限制码率

快捷键(macOS)

操作快捷键
全屏切换Cmd+f
1:1 窗口Cmd+g
黑色边框裁剪Cmd+x
HomeCtrl+h 或鼠标中键
BackCmd+b 或鼠标右键
任务管理Cmd+s
菜单Ctrl+m
音量 +/-Cmd+↑ / Cmd+↓
电源Cmd+p
关屏(保镜像)Cmd+o
通知面板展开/折叠Cmd+n / Cmd+Shift+n
剪贴板:手机 → MacCmd+c
剪贴板:Mac → 手机Cmd+v
安装 APK拖入窗口
传文件到手机拖入窗口

想用 GUI:可选 scrcpy-GUI(社区维护),给 scrcpy 加图形界面。命令行够用的话不用装。

常用 adb 命令

# 文件传输
adb push local.txt /sdcard/Download/
adb pull /sdcard/Download/remote.txt ./

# 安装 / 卸载
adb install app.apk           # 安装
adb install -r app.apk        # 覆盖安装(保留数据)
adb install -t test.apk       # 允许 test-only APK
adb uninstall com.example.app

# 应用管理
adb shell pm list packages | grep com.example
adb shell pm clear com.example.app             # 清数据
adb shell pm grant com.example.app android.permission.CAMERA  # 授权限

# 截屏
adb exec-out screencap -p > screenshot.png

# 录屏(最长 3 分钟)
adb shell screenrecord /sdcard/video.mp4
# Ctrl+C 后拉回 Mac
adb pull /sdcard/video.mp4

# 模拟按键 / 输入
adb shell input keyevent KEYCODE_WAKEUP       # 唤醒
adb shell input keyevent KEYCODE_SLEEP        # 熄屏
adb shell input keyevent KEYCODE_HOME
adb shell input text "hello"
adb shell input tap 500 1000                  # x y
adb shell input swipe 100 500 100 100 300     # x1 y1 x2 y2 duration_ms

# 启动 / 打开
adb shell am start -a android.intent.action.VIEW -d "https://example.com"
adb shell monkey -p com.example.app -c android.intent.category.LAUNCHER 1

# 当前 Activity
adb shell dumpsys activity activities | grep ResumedActivity

# 系统信息
adb shell dumpsys battery
adb shell dumpsys wifi | head -20

# logcat
adb logcat
adb logcat *:E                                # 只看 ERROR
adb logcat -d > log.txt                       # dump buffer

UI 自动化定位

adb shell uiautomator dump /sdcard/window_dump.xml
adb pull /sdcard/window_dump.xml .

XML 里每个节点的 resource-id、text、content-desc、bounds 都可作为定位依据。XPath 调试可以用 xpather.com。

常见问题

Q: adb devices 显示 unauthorized

拔数据线 → 开发者选项里「撤销 USB 调试授权」→ 重插,重新弹授权框。

Q: 无线连接断开

手机锁屏 / WiFi 切换 / 路由器省电策略都会断。adb disconnect <ip> 后重连。

Q: scrcpy 黑屏 / 音画不同步

升级到最新版本(brew upgrade scrcpy)。旧 Intel Mac 可能要加 --video-codec=h264 之类的兼容选项。

Search

    Table of Contents