You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Docker容器内的ADB识别Mac主机USB连接的Android设备

解决Mac Docker容器访问USB安卓设备的方案

核心思路:利用ADB网络连接模式

Mac主机的Docker基于HyperKit虚拟机运行,无法直接挂载Linux风格的/dev/bus/usb目录,因此换用主机ADB服务器转发设备连接的方式,让容器内的ADB通过网络连接主机ADB服务,间接访问USB设备。

步骤1:确保主机ADB能识别设备

  1. 在Mac主机终端执行以下命令,确认ADB已识别连接的安卓设备(设备状态需为device,若显示unauthorized,需在设备上授权主机连接):
    adb devices
    
  2. 重启主机ADB服务器并切换到网络监听模式:
    adb kill-server
    adb -a -P 5037 nodaemon server
    
    参数说明:-a允许所有IP地址连接,-P 5037指定ADB默认端口,nodaemon让服务器前台运行(需保持终端窗口打开,或加&后台运行)。

步骤2:启动Docker容器时配置网络与环境变量

启动容器时,需让容器能访问主机ADB服务,并指定容器内ADB指向主机的ADB服务器:

方式一:Host网络模式(Docker Desktop 4.13+兼容Mac)

若你的Docker Desktop版本为4.13及以上,可直接使用host网络模式:

docker run -it \
  --network host \
  -e ADB_SERVER_SOCKET=tcp:host.docker.internal:5037 \
  <你的镜像名称>

host.docker.internal是Mac Docker内置的主机域名,容器通过此地址访问主机的5037端口。

方式二:端口映射(兼容旧版本Docker)

若host网络不可用,通过端口映射将主机5037端口映射到容器内:

docker run -it \
  -p 5037:5037 \
  -e ADB_SERVER_SOCKET=tcp:host.docker.internal:5037 \
  <你的镜像名称>

步骤3:验证容器内ADB访问设备

进入容器后执行以下命令,应能看到与主机一致的设备列表:

adb devices

额外注意事项

  • 确保安卓设备已开启USB调试模式,并完成主机连接授权。
  • 容器内ADB版本需与主机ADB版本尽量一致,版本差异过大可能导致连接失败。
  • 若使用Appium,需确保容器内Appium配置的ADB路径正确,且Appium会复用容器内ADB连接主机ADB服务的配置。

内容的提问来源于stack exchange,提问作者Youssef Ehab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 12:47:14