docker 容器上的 ADB 无法读取连接到主机的 Android 设备

ADB on docker container does not read Android device connected to host

提问人:Youssef Ehab 提问时间:11/15/2023 最后编辑:Youssef Ehab 更新时间:11/20/2023 访问量:26

问:

长话短说,我想将我的 Appium android 自动化测试容器化。我已经在容器上下载了所有必需的工具:

  • NVM公司
  • 节点
  • 阿普西姆
  • uiautomator2
  • 安卓SDK开发工具包
  • android-工具-adb
  • USB端子

路径已全部设置,环境变量也已设置。ANDROID_SDK_ROOT


这里唯一缺少的是让容器访问我的主机 USB 端口。我不知道该怎么做!我试图遵循 https://github.com/boot2docker/boot2docker/issues/707 但它没有用,正如你所看到的,这是 8 年前的,已被弃用!我还尝试使用参数运行容器。ABD 在运行 时找不到 Android 设备。我读了另一篇博客,说确保杀死主机上的 ADB 服务器,以便容器上的 ADB 服务器可以访问它,也没有工作。我认为一个非常好的选择,如这里 https://github.com/boot2docker/boot2docker/issues/707 所述,肯定会起作用,是将 usb 目录挂载到容器中。但是,我在我的主机上找不到这个目录。它现在在不同的目录下吗?--privilegedabd devices/dev/dev/bus/usb


我怎样才能做到这一点?在 Docker 容器上使 ADB 服务器能够访问和读取在 MacOS 主机上的 USB 端口上连接的所有 Android 设备?

docker 容器 usb adb portforwarding

评论

0赞 Robert 11/15/2023
您是否尝试过在主机操作系统上运行并将其 TCP 端口 5037 转发到 docker 容器中?adb start-server
0赞 Youssef Ehab 11/16/2023
@Robert 是的,如果没有弄错的话,我试图使用参数将端口从主机转发到容器,但它不起作用。例如-pdocker run -d -p 5037:5037 {IMAGE_NAME}

答:

0赞 Youssef Ehab 11/25/2023 #1

我能够通过在 docker 文件中设置一个 env 变量来实现这一点。这样,它将连接到我的主机 ADB 服务器,而不是在容器中创建新的服务器。ENV ANDROID_ADB_SERVER_ADDRESS "host.docker.internal"