在设备上启用USB调试
这可以在设置›开发中完成。如果您的设置菜单中没有该条目,请转到设置›关于,滚动到“内部版本号”,然后像猴子一样锤打它,直到您的设备祝贺您成为开发人员。返回“ 设置”菜单的主页,并靠近底部,您现在应该会看到“开发”(或“开发人员”)设置。输入它,然后在此处启用USB调试。
识别设备
首先,我们需要知道设备如何在USB总线上进行识别。对于这一点,与Android设备NOT连接,抓住外壳和运行命令lsusb
。然后连接设备并再次运行命令。发现新行。对于Wileyfox Swift,这是一个“无名设备”:
Bus 004 Device 003: ID 2970:2282
制定亚行规则
现在,我们需要上述行末的数字:2970:2282
。这些指定供应商(2970)和设备本身(2282)。有了这些细节,我们需要Linux机器上的根 shell来编辑(或创建,如果尚不存在)/etc/udev/rules.d/51-android.rules
文件。在其中,为您的设备添加一行。以下示例行显示了Wileyfox Swift的外观:¹
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2970", ATTRS{idProduct}=="2282", MODE="0666" GROUP="androiddev", SYMLINK+="android%n"
如果您使用的是其他设备,请在运行时将供应商和产品ID替换为上面找到的ID lsusb
。该行的简短说明:
SUBSYSTEMS=="usb"
:显然,此规则仅适用于USB;)
ATTRS{idVendor}=="2970"
:此规则适用于的设备的供应商ID
ATTRS{idProduct}=="2282"
:设备ID
MODE="0666"
:设备节点应获得的权限。0666
松懈,给系统上的每个用户读写权限–因此,如果您担心的话,可以尝试将其替换为0660
(仅授予所有者和组读写权限,并拒绝其他任何人使用)。
GROUP="androiddev"
:设备节点应属于哪个组。这应该是打算使用该设备的用户所属的组。
SYMLINK+="android%n"
:只是给节点起一个好名字,这样您就可以轻松找到它/dev
(在我的情况下,它稍后显示为/dev/android5
)
输入的规则/etc/udev/rules.d/51-android.rules
,我们必须告知udev
要使用它。最安全的方法(在重新启动之后;)是重新启动udev
服务。根据您的Linux发行版,可以通过service udev restart
或来完成/etc/init.d/udev restart
。
做到这一点,离开根壳。断开并重新连接您的Android设备,然后重试adb devices
。现在,大多数设备都出现了,但Wileyfox Swift却没有出现,它显然想要一些额外的拥抱。如果遇到这种情况,请打开(或创建不存在的文件)文件,~/.android/adb_usb.ini
并在其中添加一行,并在lsusb
上面找到您所找到的供应商。对于将会是Swift的0x2970
(yupp,在这里您需要给它加上前缀0x
以指出它是一个十六进制数)。然后重新启动ADB服务器:adb kill-server && adb start-server
。再次断开并重新连接设备。现在adb devices
应该看到它。
连接设备
您可能已经注意到adb devices
告诉过您类似的内容0123456789ABCDEF unauthorized
。没关系,而且为了您(设备)的安全:必须首先授权您的计算机才能访问该设备。因此,adb shell
现在就简单地发布-将通过error: device unauthorized. Please check the confirmation dialog on your device.
遵循该建议(可选地选中复选框以永久授权您的计算机)退出,然后完成:现在,您可以使用adb访问设备了。
更新:
¹请注意,在更高的Linux版本中,UDEV规则的语法略有变化,例如jcomeau_ictx在其评论中指出。对于我们在上面发现的值,将是:
SUBSYSTEM=="usb", ATTR{idVendor}=="2970", ATTR{idProduct}=="2282", MODE="0666", GROUP="plugdev", SYMLINK+="android%n"
有两个区别:现在SUBSYSTEM
(没有复数),并且组已从更改androiddev
为plugdev
(在最近的系统上不存在前者,后者通常至少已分配给第一个用户)。
此外,您可能需要将vendorID添加到您的~/.android/adb_usb.ini
(每行一个ID,以十六进制表示):
# ANDROID 3RD PARTY USB VENDOR ID LIST
# 1 USB VENDOR ID PER LINE.
0x2970