答案1
有一个巧妙的方法可以让它即使在当前限制下也能工作。你需要从 cmd 启动 adb 服务器:
adb kill-server //if it is already running under bash shell
adb start-server
然后您可以从 bash shell 调用 adb,它将使用现有服务器并能够列出已连接的设备。
adb devices
注意:由于环境正在从 Windows PATH 变量加载路径,因此您可能也需要使用 .exe 扩展名运行(或将 adb 别名为 adb.exe 以保持命令相同)。
adb.exe devices
答案2
Windows 下的 bash shell 没有连接 USB 设备的功能。因此,除非有人添加此功能,否则 ADB 无法工作。
答案3
添加到Paul 的另一个回答,您可以从 Ubuntu 访问 Windows adb 服务器来解决这个问题,但只有当两个 adb 二进制文件使用相同的 TCP 协议版本时,它才有效。例如,Bionic 中的 adb 7.0.0+r33-2 将与 Windows 上的 platform-tools 24.0.4 一起使用。
如果您使用的是其他版本,我的第一步就是按照他的建议在 Windows 中运行 adb:
> adb kill-server //if it is already running under bash shell
> adb start-server
然后在 Ubuntu 中:
$ adb devices
如果二进制协议版本不匹配,则在 Ubuntu 中运行 adb 后会输出一个错误,该错误提供足够的信息来获取正确的二进制文件:
adb server version (40) doesn't match this client (36); killing...
在此示例中,服务器使用的是协议版本 40,而 Ubuntu 的软件包使用的是版本 36。因此,一种方法是获取 Windows 上的 adb 版本,该版本比您拥有的版本早 4 个主要版本。您可以查看平台工具发行说明查找所需主版本的最新次版本。在撰写本文时,平台工具的主版本号比 adb 的协议版本号低 12,因此对于本例中的协议版本 36,我们需要平台工具版本 24.0.4(比协议版本 40 的 28.0.1 少 4)。此版本号可用于手动制作所需版本的平台工具的下载 URL。
https://dl.google.com/android/repository/platform-tools_r24.0.4-windows.zip
change to correct version here----^
下载并解压此档案,然后从 cmd 重新运行 adb:
> adb kill-server
> adb start-server
现在 adb 可以在 Ubuntu 中运行。
答案4
sudo vim /etc/profile
,然后添加下面几行(fastboot 是可选的)并保存,请将 adb 和 fastboot 路径替换为你的实际路径,注意路径中带有空格的文件夹的翻译。导出 PATH=$PATH:/mnt/c/Program\ Files/platform-tools_r30.0.3-windows/platform-tools/
别名 adb='/mnt/c/Program\ Files/platform-tools_r30.0.3-windows/platform-tools/adb.exe'
别名 fastboot='/mnt/c/Program\ Files/platform-tools_r30.0.3-windows/platform-tools/fastboot.exe'
source /etc/profile
看看发生了什么。