【问题标题】:Is there a way to disconnect USB device from ADB?有没有办法从 ADB 断开 USB 设备?
【发布时间】:2016-09-24 10:37:48
【问题描述】:

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

【问题讨论】:

    标签: android adb


    【解决方案1】:

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

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

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

    【讨论】:

    • 正如我在最初的帖子中所写,adb disconnect 不起作用。设备自动连接回来。尝试运行adb disconnectadb devices,USB 将在此处。
    • 在这种情况下,您需要从开发者选项中关闭 USB 调试,或者至少从开发者选项中撤消权限
    • 这是一个解决方案,但是我用我的手机调试其他项目;)每次我只想给手机充电时,启用或禁用调试模式是时间消磨时间。正如我在第一篇文章“我不需要变通办法”中所写的那样,实际上有很多变通办法,但我不明白为什么 Google 实施 ADB 的方式如此奇怪,以至于它无法在不重新配置的情况下断开特定设备。
    • 据我所知,没有任何东西可以现成地用于您想要的东西。你是开发者!编写一个小应用程序/服务来响应 USB 插入事件并执行您想要的操作。不可能那么难
    【解决方案2】:

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

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

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

    1.将文件推送到手机

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

    2.在推送过程中重新连接

    adb -s SERIAL reconnect
    

    SERIAL 表示在“adb devices”命令的输出中列出的序列号。

    重复第1步和第2步,一段时间后,您可以从“adb devices”的输出中发现该设备处于离线状态。

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

    【讨论】:

    • [serial] 到底是什么?我们最好查阅解释这些事情的官方文档。
    • Romaio,抱歉打错了,[serial] 是序列号,刚刚改成SERIAL。
    【解决方案3】:

    只需使用 adb kill-server 来终止连接
    adb disconnect 也可以 p>

    【讨论】:

      【解决方案4】:

      在设备本身上转到开发人员选项。有一个“USB调试”开关。当您不需要 adb 看到设备时,您可以简单地关闭“USB 调试”。 或者(例如,如果您希望“信任此设备?”窗口再次出现在设备上)您可以点击“撤销 USB 调试授权”选项(也在开发人员选项中。点击它将撤销所有授权,包括您的 PC 的授权. 这样做也会限制来自 adb 的访问。要重新启用设备的 adb 连接,请禁用并重新启用“USB 调试”开关。这将强制“信任此设备?”窗口出现在移动设备上(应该是为那个目的解锁)。说“好的”,你应该能够再次通过 adb 连接。

      【讨论】:

        【解决方案5】:

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

        adb -s{serial_number}
        

        例如:

        adb -s emulator-5556 install myApp.apk 
        

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

        adb -e install myApp.apk
        

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-08-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-21
          • 2013-09-20
          相关资源
          最近更新 更多