Android 重启后 Linux 上的 adb 无法识别 6.0 设备
Android 6.0 device not recognized by adb on Linux after reboot
在 Android 6.0 的 Samsung Galaxy S6 Edge 中,当设备重新启动时,phone 抱怨连接的计算机无法识别 phone 并且设备不存在从连接的 Linux PC 通过 ADB 更容易访问。 phone 实际上指示用户为 Windows 或 Mac OS 安装适当的驱动程序,但是由于 phone 连接到 Linux 主机,这里没有帮助。
这意味着,为了继续通过 ADB 进行调试,必须手动将 USB 模式从 phone 从 MTP 切换到 PTP,然后 phone 再次通过 ADB 连接。这使得测试自动化变得不可能,因为测试调度程序需要在测试轮之间重新启动目标设备。
在以前的 Android 版本中,可以远程重启设备并恢复 ADB 连接,但是在 Android 6.0 中,这成为了一个问题。此特定设备较早 Android 5.1,远程重启没有问题。
由于手动切换 USB 模式可以解决问题,如果此模式可以在重启后自动切换,可能会有所帮助。到目前为止,只有我见过的解决方案需要设备生根,这是不可能的。
有人知道吗,Android 6.0 设备如何在重启后被 ADB 自动识别?
解决方案毕竟很简单:需要将启动 adb 服务器的 Linux 用户添加到 "plugdev" 组。该组在文件 /etc/udev/rules.d/51-android.rules 中定义,其中行:
SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", MODE="0666", GROUP="plugdev"
对于以前的 Android 版本,这似乎并不重要,因为我们在该组中没有任何用户并且一切正常。
在 Android 6.0 的 Samsung Galaxy S6 Edge 中,当设备重新启动时,phone 抱怨连接的计算机无法识别 phone 并且设备不存在从连接的 Linux PC 通过 ADB 更容易访问。 phone 实际上指示用户为 Windows 或 Mac OS 安装适当的驱动程序,但是由于 phone 连接到 Linux 主机,这里没有帮助。
这意味着,为了继续通过 ADB 进行调试,必须手动将 USB 模式从 phone 从 MTP 切换到 PTP,然后 phone 再次通过 ADB 连接。这使得测试自动化变得不可能,因为测试调度程序需要在测试轮之间重新启动目标设备。
在以前的 Android 版本中,可以远程重启设备并恢复 ADB 连接,但是在 Android 6.0 中,这成为了一个问题。此特定设备较早 Android 5.1,远程重启没有问题。
由于手动切换 USB 模式可以解决问题,如果此模式可以在重启后自动切换,可能会有所帮助。到目前为止,只有我见过的解决方案需要设备生根,这是不可能的。
有人知道吗,Android 6.0 设备如何在重启后被 ADB 自动识别?
解决方案毕竟很简单:需要将启动 adb 服务器的 Linux 用户添加到 "plugdev" 组。该组在文件 /etc/udev/rules.d/51-android.rules 中定义,其中行:
SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", MODE="0666", GROUP="plugdev"
对于以前的 Android 版本,这似乎并不重要,因为我们在该组中没有任何用户并且一切正常。