buz*_*ypi 22 android adb docker
我创建了一个包含Android SDK的Docker镜像,并试图在运行此图像的容器中公开我的Android手机.所以我使用了--privileged旗帜并安装了USB设备,如下所示:
$ docker run --privileged -v /dev/bus/usb:/dev/bus/usb -d -P my-android:0.0.1
Run Code Online (Sandbox Code Playgroud)
但是,当我运行ADB设备时,它没有显示USB设备:
ubuntu@d56b666be455:~/Android/Sdk/platform-tools$ ./adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached
ubuntu@d56b666be455:~/Android/Sdk/platform-tools$
Run Code Online (Sandbox Code Playgroud)
容器内的lsusb列出了设备:
ubuntu@d56b666be455:~$ lsusb
...
Bus 002 Device 017: ID 04e8:6866 Samsung Electronics Co., Ltd GT-I9300 Phone [Galaxy S III] (debugging mode)
Run Code Online (Sandbox Code Playgroud)
但是,该设备在主机上可见:
? ./adb devices
List of devices attached
4d11abcd65b74045 device
Run Code Online (Sandbox Code Playgroud)
主机操作系统
$ uname -a
Linux ananya 3.16.0-33-generic #44~14.04.1-Ubuntu SMP Fri Mar 13 10:33:29 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
Docker版本
$ docker --version
Docker version 1.5.0, build a8a31ef
Run Code Online (Sandbox Code Playgroud)
可能是什么问题?
jlh*_*ora 15
我不认为设备上运行的ADB守护程序可以连接到两个ADB服务器.尝试将其与主机的ADB断开连接,然后将其连接到Docker容器的ADB.
在尝试相同操作时,我遇到了与此相关的其他一些问题,我希望与他人分享,以便其他人可以节省时间:
问题1:容器中未安装lsusb
在我的情况下,没有安装lsusb,所以我使用以下命令安装了它:
apt-get update
apt-get install usbutils
Run Code Online (Sandbox Code Playgroud)
问题2:即使在安装lsusb和ADB SDK之后也看不到设备
您需要使用该-v选项重新启动容器,是的,别忘了按照答案之一中的说明杀死ADB服务器。
在主机上:
adb-kill server
docker run -ti -d --privileged -v /dev/bus/usb:/dev/bus/usb container_name
Run Code Online (Sandbox Code Playgroud)
万一有人想从头开始,我在上面写了一篇博客文章:
这并没有回答您提出的确切问题,但确实解决了您要完成的任务 - 从在 docker 容器内运行的 adb 客户端连接到连接到 docker 主机的 android 设备。我为任何试图完成同样事情的人(就像我一样)包含了这个。
adb 客户端支持一个-H选项,告诉它在哪里可以找到要连接的 adb 服务器。Docker 支持主机名“host.docker.internal”,它总是映射到 docker 主机的 IP 地址。假设您的设备已连接到 docker 主机,您可以执行以下操作来让容器化 adb 客户端连接到在 docker 主机上运行的 adb 服务器:
adb -H host.docker.internal devices
无需安装 USB 端口即可实现目标。
参考:https : //developer.android.com/studio/command-line/adb
更新:我最近了解到 host.docker.internal 仅在 Docker for Mac 版本 18.0 及更高版本上受支持。
| 归档时间: |
|
| 查看次数: |
13312 次 |
| 最近记录: |