如何让 Windows 10 上的 Ubuntu shell 识别已连接的 Android 设备?

如何让 Windows 10 上的 Ubuntu shell 识别已连接的 Android 设备?

我正在尝试在 Windows 10 Ubuntu shell 中将 adb 连接到我的 Android 设备,但它似乎不起作用:

在 Ubuntu Bash Shell 中等待设备

adb 在 Windows 上确实可以正常工作,因此这不是手机或连接的问题。我是否必须执行诸如在 Ubuntu shell 中安装端口之类的操作?怎么做?(目标是传递logcatgrep,这显然在 Ubuntu 中效果更好。)

答案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 无法工作。

这是添加 USB 支持的建议

答案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

  1. 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'

  2. source /etc/profile

  3. 看看发生了什么。

相关内容