有没有办法断开 USB 设备与 ADB 的连接?

Is there a way to disconnect USB device from ADB?

我有很多脚本使用 ADB 通过 Wi-Fi 和模拟器调试 Android 应用程序。当我从我的计算机通过 USB 为我的 Android phone 充电时出现问题:ADB 看到它并向我的 phone 而不是模拟器发送命令。 有没有办法将 ADB 与通过 USB 充电的 phone 断开连接? 我知道我只能通过 -e 开关向模拟器发送命令,以及发送它们通过 -s 开关到特定设备。但是,这对我来说是不行的,因为如果我想实现这个设备选择功能,我必须重写很多脚本来添加更多的参数。我不需要解决方法,我只是好奇 Google force ADB 是否调试任何通过 USB 连接的 phone 并在设置中启用了 USB 调试,或者它是可以从 ADB 端的设备列表中删除特定的 USB 连接 phone 吗? 当我运行adb disconnect时,USB设备保持连接。

用于内部存储的 USB 连接和用于调试的 adb 连接是两个独立的东西。

要禁用 adb - 您可以使用 adb disconnect 或直接在 developer options 下关闭 usb debugging

对于断开内部存储的 USB 连接,某些 ROM 具有该选项。例如我目前拥有的 CM 13 仅允许连接 USB 进行充电。通常在其他 ROM 和 Stock ROM 上我没有看到这个选项,但你可以试试这个。 -> 如果您在锁定时通过 USB 连接设备,除非您解锁设备一次,否则内部存储将不可用。

更新您的脚本以使用模拟器的 ID,以便您可以将 adb 命令定向到模拟器:

adb -s{serial_number}

例如:

adb -s emulator-5556 install myApp.apk 

如果您只有一个模拟器,您也可以使用“-e”将 adb 命令定向到模拟器。

adb -e install myApp.apk

同样可以使用“-d”将命令强制发送到您的手机。

ADB 现在不支持断开 USB 连接(版本 1.0.39)。

“adb disconnect”只能断开“adb connect”建立的TCP连接,不能断开USB连接。

您可以使用推送和重新连接命令“断开”连接作为解决方法:

1.push一个文件到phone

adb -s SERIAL push somefile /data/local/tmp

2.reconnect 推送仍在进行中

adb -s SERIAL reconnect

SERIAL 表示 'adb devices' 命令输出中列出的序列号。

重复步骤1和2,稍等片刻,从“adb devices”的输出中可以发现该设备处于离线状态。

在您 kill-server 和 start-server 之前,没有任何 adb 命令可以操作这个离线设备。

只需使用 adb kill-server 终止连接
adb 断开连接 也有效

在设备上转到开发者选项。有一个 "USB debugging" 开关。当您不需要设备被 adb 看到时,您可以简单地关闭 "USB debugging"。 或者(例如,如果您希望 "Trust this device?" window 再次出现在设备上),您可以点击 "Revoke USB debugging authorizations" 选项(也在开发人员选项中。点击它将撤销所有授权,包括你的电脑。这样做也会限制来自 adb 的访问。要为设备重新启用 adb 连接,请禁用并重新启用 "USB debugging" 开关。这将强制 "Trust this device?" window 出现在移动设备(应该为此解锁)。说 "ok" 你应该可以再次通过 adb 连接。