如何设置 udev 规则以使用 Android Studio 调试物理 android 设备?
How do I set up udev rules for debugging a physical android device with Android Studio?
过去我从来不需要设置它,但我今天将 Android Studio 更新到 2.3.1 版并在单击调试时出现此错误:
05/03 17:19:19: Launching app
$ adb push app-debug.apk {path on my computer}
com.android.ddmlib.AdbCommandRejectedException: insufficient permissions for device: verify udev rules.
See [http://developer.android.com/tools/device.html] for more information.
Error while Installing APK
我去了他们指定的页面,他们告诉我在那里制作文件 /etc/udev/rules.d/51-android.rules
所以我做了,添加了这一行:
SUBSYSTEM=="usb", ATTR{idVendor}=="12d1", MODE="0666", GROUP="plugdev"
对于我的(华为)Nexus 6P。
我还按照他们的说明将 debug
部分添加到 build.grade
。
但是,我仍然遇到同样的错误。我尝试用我自己的 linux 用户组代替 plugdev
,但这也没有解决问题。有什么建议么?
您可能没有添加正确的 ATTR{idVendor}
属性。为此,请执行以下操作:
$ sudo adb devices
List of devices attached
adb server is out of date. killing...
* daemon started successfully *
XXXXyyyy device
在 运行 adb devices
之后你会看到上面的输出。
复制 device
输出的前 4 个字节(因此,XXXX
)。将 /etc/udev/rules.d/51-android.rules
中的那些替换为 ATTR{idVendor}=="XXXX"
并重新启动 udev
.
正如下面的评论所指出的那样,上述方法可能不起作用;另一种选择是使用 lsusb
或 tail dmesg
.
be aware that it might report different IDs, depending on the current USB mode of the device.
因此重要的是启用 USB 调试首先 ...
和然后使用lsusb
来获取供应商和产品ID ...
Bus 001 Device 070: ID 18d1:4ee7 Google Inc.
罪魁祸首可能是供应商 ID,其中 12d1
是华为 - 18d1
是 Google。
...无论 lsusb
输出到 udev
规则:
# angler (Nexus 6P)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee7", MODE="0600", OWNER="yourusername"
然后 运行:
sudo udevadm control --reload-rules
过去我从来不需要设置它,但我今天将 Android Studio 更新到 2.3.1 版并在单击调试时出现此错误:
05/03 17:19:19: Launching app
$ adb push app-debug.apk {path on my computer}
com.android.ddmlib.AdbCommandRejectedException: insufficient permissions for device: verify udev rules.
See [http://developer.android.com/tools/device.html] for more information.
Error while Installing APK
我去了他们指定的页面,他们告诉我在那里制作文件 /etc/udev/rules.d/51-android.rules
所以我做了,添加了这一行:
SUBSYSTEM=="usb", ATTR{idVendor}=="12d1", MODE="0666", GROUP="plugdev"
对于我的(华为)Nexus 6P。
我还按照他们的说明将 debug
部分添加到 build.grade
。
但是,我仍然遇到同样的错误。我尝试用我自己的 linux 用户组代替 plugdev
,但这也没有解决问题。有什么建议么?
您可能没有添加正确的 ATTR{idVendor}
属性。为此,请执行以下操作:
$ sudo adb devices
List of devices attached
adb server is out of date. killing...
* daemon started successfully *
XXXXyyyy device
在 运行
adb devices
之后你会看到上面的输出。复制
device
输出的前 4 个字节(因此,XXXX
)。将/etc/udev/rules.d/51-android.rules
中的那些替换为ATTR{idVendor}=="XXXX"
并重新启动udev
.
正如下面的评论所指出的那样,上述方法可能不起作用;另一种选择是使用 lsusb
或 tail dmesg
.
be aware that it might report different IDs, depending on the current USB mode of the device.
因此重要的是启用 USB 调试首先 ...
和然后使用lsusb
来获取供应商和产品ID ...
Bus 001 Device 070: ID 18d1:4ee7 Google Inc.
罪魁祸首可能是供应商 ID,其中 12d1
是华为 - 18d1
是 Google。
...无论 lsusb
输出到 udev
规则:
# angler (Nexus 6P)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee7", MODE="0600", OWNER="yourusername"
然后 运行:
sudo udevadm control --reload-rules