关于WSL以及docker连接adb的坑

结论

  1. WSL可以连接到adb,需要和主机保持一致的adb型号。
  2. 主机是windows还是macOS的docker没法直接连接到adb设备,只有主机为Linux才可以。其他平台只能通过TCP网络协议。

具体过程

关于WSL连接adb设备

windows安装adb工具(安装可以去官网下载最新的工具包)后,在搜索栏里,搜索命令行工具,然后选择用管理员模式打开才能adb devices查看到设备。

如果上面windows可以查看到adb的设备,但是wsl查看不到,这是因为wsl的adb版本要求和windows一样才可以!可以在windows安装adb的当天,也给Linux安装最新的版本,这样可以保证版本完全一样,不会因为各种小版本问题导致用不了。具体命令:

cd ~
mkdir software  # 存放路径自己设置
cd software
wget https://dl.google.com/android/repository/platform-tools-latest-linux.zip
unzip ./platform-tools-latest-linux.zip
echo "alias adb='~/softwares/platform-tools/adb'" >> ~/.zsh_aliases && source ~/.zsh_aliases  # 修改配置文件,如果是bash,要改成.bash_aliases
echo "alias fastboot='~/softwares/platform-tools/fastboot'" >> ~/.zsh_aliases && source 

~/.zsh_aliases # 修改配置文件,如果是bash,要改成.bash_aliases

也可以下载指定版本

wget https://dl.google.com/android/repository/platform-tools_r30.0.4-linux.zip && unzip platform-tools_r30.0.4-linux.zip

关于docker连接adb设备

  • window打开docker,尝试了很多方法都没法adb devices到设备,lsusb也是空的。网上各种方法,比如去adb kill-server主机的adb之类的,都没有用。
    使用的命令是:
`docker run -t -i --privileged -v /dev/bus/usb:/dev/bus/usb -v /local_path:/docker_test_path ubuntu_rknn:20.04` /bin/zsh  #这里zsh可以换成bash

尝试用macos的docker,然后发现,也不行!!
感觉问题都是因为-v /dev/bus/usb:/dev/bus/usb这个命令并不会生效。网上其他回答说这个只针对本机也是Linux的情况生效!难怪windows和Mac都没法找到adb设备。

  • 目前尝试下来,对于windows和macOS中的Linux docker,要想找到adb devices,可用的方法应该只有个用adb TCP的方法,也就是通过WI-FI网络来连接。参考网站来自docker staff的回答:

“Unfortunately, Docker for Mac does not support USB device pass-through at this time. Please see “Can I pass-through a USB device to a container?” at https://docs.docker.com/docker-for-mac/faqs/#/can-i-pass-through-a-usb-device-to-a-container 738. The recommended solution is to continue using Docker Toolbox if you require this feature. Sorry for the inconvenience.”

从上面给出的官方网站FAQ可以看到:

“Can I pass through a USB device to a container?
Unfortunately, it is not possible to pass through a USB device (or a serial port) to a container as it requires support at the hypervisor level.”

你可能感兴趣的:(docker,adb,容器)