Я получаю следующий журнал ошибок, если подключаю свой телефон Android с ОС Android Oreo к ПК с Linux.
$ adb devices
List of devices attached
xxxxxxxx no permissions (user in plugdev group; are your udev rules wrong?);
see [http://developer.android.com/tools/device.html]
Я попытался использовать ссылку, указанную в сообщении об ошибке, но все равно получаю ту же ошибку.




Я не знаю причины этой проблемы. Но временным решением было бы установить телефон на Режим передачи файлов или Режим MTP.
Проблема с этим исправлением заключается в том, что вам нужно будет переключать режим из режима зарядки в режим передачи файлов или режим MTP при каждом подключении кабеля.
почему-то эта работа. Перейдите в режим передачи файлов, и устройство запросит разрешение. Затем adb kill-server adb start server, и теперь мое устройство распознается. спасибо
Самый простой ответ, который сработал
Причина, по которой это работает, заключается в том, что он меняет pid в lsusb на тот, который находится в ваших правилах udev.
android 10 заработало !!! спасибо
Это работает, если вам нужен только adb, но чтобы fastboot также работал, вам нужно использовать другой ответ.
Это все еще отлично работает
Проверьте идентификатор поставщика устройства и идентификатор продукта:
$ lsusb
Bus 001 Device 002: ID 8087:8000 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 078: ID 138a:0011 Validity Sensors, Inc. VFS5011 Fingerprint Reader
Bus 002 Device 003: ID 8087:07dc Intel Corp.
Bus 002 Device 002: ID 5986:0652 Acer, Inc
Bus 002 Device 081: ID 22b8:2e81 Motorola PCS
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Вот мое устройство Android - Motorola PCS. Итак, мои vid=22b8 и pid=2e81.
Теперь создайте правило udev:
$ sudo vi /etc/udev/rules.d/51-android.rules
SUBSYSTEM= = "usb", ATTR{idVendor}= = "22b8", ATTR{idProduct}= = "2e81", MODE = "0666", GROUP = "plugdev"
Теперь устройство можно обнаружить после перезагрузки правила udev. Итак, приступим:
$ sudo udevadm control --reload-rules
После этого еще раз проверьте, определяется ли ваше устройство по adb:
$ adb devices
List of devices attached
ZF6222Q9D9 device
Итак, все готово.
Если по-прежнему не работает, отключите / снова подключите устройство.
Если по-прежнему не работает, перезагрузите ОС.
Этот ответ является более надежным решением, поскольку обходной путь передачи файлов (MTP) не сохраняется при перезагрузке устройства и т. д.
Это принятый ответ.
Не смейтесь, но мне на самом деле пришлось перезагрузить Mint, чтобы это работало, казалось, что команда udevadm была неэффективной.
@HenriquedeSousa Пришлось отключить и снова подключить, что вызвало диалоговое окно «Разрешить этому компьютеру ...» на устройстве Android.
@HenriquedeSousa Мне пришлось сделать то же самое на монетном дворе.
у меня не работает
Работал у меня. Раньше "флаттер-устройства" давали мне "Android Null (API null)". А теперь «Android 10 (API 29)». Спасибо
Почему мы назвали файл 51-android.rules? Т.е. почему 51?
Оно работает! Спасибо. В Fedora нет группы plugdev, поэтому игнорируйте GROUP = "plugdev", если вы используете Fedora.
Просто обновление - запуск sudo udevadm trigger с последующим повторным подключением устройства сработал для меня (не требовала перезагрузки) в Linux Mint.
Для меня сработали настройки USB / модема на устройстве (раскрытие глобального меню уведомлений), переключение на передачу файлов и отключение модема.
На Xaomi Redmi Note 8, Ubuntu 20.04.1 LTS мне пришлось добавить его в файл 51-android.rules (SUBSYSTEM == "usb", ATTR {idVendor} == "ff08", MODE = "0666", GROUP = "plugdev"), а затем выберите режим передачи файлов во всплывающем диалоговом окне, когда я подключу устройство.
Что бы я делал без stackoverflow ...
Использовал комбинацию этого ответа, а также этого stackoverflow.com/a/12664045/2356570.
У меня все заработало после перезагрузки системы. Но в целом все правильно!
Думаю, переключение между режимом восстановления и быстрой загрузкой меняет idProduct. Таким образом, вы можете опустить часть ATTR {idProduct} в правиле. Ваше здоровье
Если вы используете Ubuntu, вы можете установить пакет android-sdk-platform-tools-common, который содержит поддерживаемый сообществом набор правил udev по умолчанию для устройств Android: developer.android.com/studio/run/device#setting-up
Я закончил добавлением двух строк SUBSYSTEM= = "usb", ATTR{idVendor}= = "18d1", ATTR{idProduct}= = "d00d", MODE = "0666", GROUP = "plugdev" и SUBSYSTEM= = "usb", ATTR{idVendor}= = "2717", ATTR{idProduct}= = "ff48", MODE = "0666", GROUP = "plugdev"
У меня была такая же проблема, и я решил ее, выполнив шаги по ссылке.
adbбыл установлен вручную и добавлен в мой путь (свежая установка Linux), но я продолжал получать ошибку. Я удалил его и снова установил черезapt install adb(дистрибутив на основе Ubuntu). После этого я дважды проверил, действительно ли мой пользователь является частью группыplugdev, перезагрузил машину и снова подключил устройство. Отображается диалоговое окно разрешений, и все работает, как ожидалось, без какого-либо взлома. :)