Решение ошибки adb no permissions на Linux: udev rules

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Если вы столкнулись с проблемами разрешений при использовании команды adb devices, сначала стоит попробовать перезапустить adb с правами администратора:

Bash
Скопировать код
sudo adb kill-server && sudo adb start-server

Если это решение не помогло, то следующим шагом может быть создание нового правила udev для вашего Android-устройства:

Bash
Скопировать код
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="VENDOR_ID", MODE="0666", GROUP="plugdev"' | sudo tee /etc/udev/rules.d/51-android-usb.rules

Не забудьте заменить VENDOR_ID на идентификатор производителя вашего устройства. После создания правила, известите систему о внесенных изменениях:

Bash
Скопировать код
sudo udevadm control --reload-rules && sudo udevadm trigger

Заключительным шагом будет отключение и повторное подключение устройства. Затем введите adb devices, и проблема с разрешениями должна быть устранена.

А что если быстрый ответ не помог?

Не стоит беспокоиться, мы еще не исчерпали все возможности! Введите команду lsusb, чтобы убедиться в том, что ваше устройство обнаружено системой:

Bash
Скопировать код
lsusb

С помощью этой команды вы определите идентификаторы производителя и продукта.

Отправьте команду, получите результаты

В выводе команды lsusb найдите нужный вам производитель и продукт Android устройства. Пример вывода, где 18d1 – это нужный нам VENDOR_ID:

Bash
Скопировать код
Bus 002 Device 003: ID 18d1:4ee7 Google Inc.

Создавайте, применяйте и торжествуйте!

Теперь создайте правило udev, которое предоставит доступ к adb:

Bash
Скопировать код
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"' | sudo tee /etc/udev/rules.d/51-android.rules

Не забудьте применить созданное правило:

Bash
Скопировать код
sudo udevadm control --reload-rules && sudo udevadm trigger

Подтвердите извлечение устройства

Завершите процесс, проверив список устройств adb:

Bash
Скопировать код
adb devices

Если ваше устройство отображается в списке, значит, проблема успешно устранена!

Визуализация

Создание и обновление правил udev — это ключевые шаги, позволяющие решить проблемы с adb. Можно провести аналогию с открытием запертой двери:

ШагРезультат
🔑 Создание правила udevДверь закрыта
🚪 Обновление udevВзгляд направлен на закрытую дверь
⁉️ Проверка ответа adbДверь по-прежнему закрыта

Использование подходящего ключа приведет к достижению цели:

Сначала: 🚪🔐🙍‍♂️ (Перед пользователем закрытая дверь и ключ) После: 🚪🔓🏃‍♂️ (Дверь открыта, и пользователь входит внутрь)

Не опускайте руки! Вот способы противостоять проблеме

Режим передачи файлов/MTP

Для стабильной работы ADB советуем переключить ваше устройство в режим передачи файлов или MTP.

Используйте другой кабель

Качественный кабель может играть важную роль в работе adb!

adb и «Бар Гениев»

Обязательно используйте последнюю версию adb.

Секреты «воскрешения»

Перезагрузка adb

В крайнем случае можно и перезапустить сервис adb:

Bash
Скопировать код
adb kill-server && adb start-server

Проверка соединений

Еще можно попробовать переподключить устройство – старый добрый способ «выключить и включить заново».

Перезагрузка системы

Иногда перезапуск системы может стать решением множества проблем.

Полезные материалы

  1. Android Debug Bridge (adb) | Android Studio | Android Developers
  2. Отладка вашего приложения | Android Studio | Android Developers
  3. udev – ArchWiki
  4. Запуск приложений на аппаратном устройстве | Android Studio | Android Developers
  5. Список правил udev для Android