adb без прав на Ubuntu 17.04

Вопрос или проблема

Когда я пытаюсь:

$ adb devices

я получаю результат:

Список подключенных устройств 
????????????    нет разрешений

В чем проблема?

Пробовал на машине с Ubuntu 16.04, и все работало идеально.
Пробовал устройство с версией 7.1.1, и оно тоже работало идеально.

У меня была такая же проблема. Убедившись, что режим USB устройства НЕ только зарядка, я решил ее.

Попробуйте перезапустить сервер Adb.

sudo adb kill-server

а затем

sudo adb start-server

затем подключите ваше устройство, включите отладку и введите

adb devices

Скорее всего, udev некорректно добавляет ваше устройство. У меня была такая же проблема, и я нашел относительно простое решение.

Найдите ваше устройство в lsusb

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 8087:0a2b Intel Corp. 
Bus 001 Device 002: ID 05c8:03a2 Cheng Uei Precision Industry Co., Ltd (Foxlink) 
Bus 001 Device 006: ID 18d1:4ee7 Google Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Обратите внимание на эту строку:

Bus 001 Device 006: ID 18d1:4ee7 Google Inc.

Проверьте соответствующий файл устройства

$ ls -l /dev/bus/usb/001/006

Скорее всего, вы увидите что-то вроде

crw-rw-r-- 1 root root 189, 5 Sep  8 21:47 /dev/bus/usb/001/006

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

Эта проблема может быть решена созданием нового правила udev — я использовал /etc/udev/rules.d/51-android.rules, чтобы добавить устройство в группу plugdev, в которой, как предположительно, вы уже являетесь участником (вы должны быть, проверьте с помощью id)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee7", MODE="0660", 
GROUP="plugdev", SYMLINK+="android%n"

**Не забудьте заменить ATTR{idProduct}==”4ee7″ на ваш собственный идентификатор продукта, который вы узнали на первом шаге. ** (Если ваш производитель не Google Inc., также замените идентификатор производителя на тот, что перед двоеточием в lsusb).

Теперь просто отключите ваше устройство и подключите его снова (udev должен автоматически отреагировать на новый файл) и вуаля:

$ adb devices
Список подключенных устройств 
YC873P0G    устройство

Источник: Добавление правил udev для USB отладки Android-устройств – Janos Gyerik

Изменение режима USB с Телефон решило проблему для меня. (Я установил его на Передача файлов.)

Вам нужно предоставить разрешение на вашем Android-устройстве. Перейдите в Настройки>Параметры разработчика. Попробуйте отключить отладку USB, а затем включить ее снова. Удалите кабель и подключите его снова. Также попробуйте удалить все сохраненные авторизации из параметров разработчика. Теперь должно появиться приглашение на разрешение отладки на вашем телефоне. Примите его.

Чтобы расширить ответ Сумита Дешмука, его подход работает в общем – если вы хотите просто использовать команду adb из консоли.

Однако, по всей видимости, Android Studio запускает свой собственный сервер adb, убивая наш. Это означает, что после того, как мы убили/запустили сервер с помощью sudo, Studio перезапускает его, что приводит к исходной ситуации – нет разрешений.

Решение заключается в том, чтобы сначала запустить Studio, а затем выполнить запуск/остановку сервера. Сделав это, я смог заставить свой Nexus 5X появиться в качестве действительной цели выполнения в Studio.

Это не самое лучшее положение (приходится запускать команды каждый раз при запуске Studio), но это работает в быстром и грубом виде. Если я найду более постоянное решение, я обновлю этот ответ.

Пожалуйста, НЕ следуйте решениям, предлагающим использовать sudo (sudo adb start-server)! Это запускает adb как root (администратор), и он НЕ должен работать таким образом!!! Это плохая идея!

Всё, что работает как root, может делать всё в вашей системе, если оно создает или изменяет файл, оно может изменить его разрешения так, что он будет использоваться только root. Ещё раз, НЕ ДЕЛАЙТЕ ЭТО!

Правильное решение – настроить вашу систему так, чтобы ПОЛЬЗОВАТЕЛЬ имел разрешения, посмотрите это руководство, которое я написал о том, как сделать это правильно.

Это не сработало для меня, даже после того, как я добавил себя в группу plugdev и перезагрузил машину, чтобы убедиться, что изменения вступили в силу во всех моих сеансах командной строки. Затем я обнаружил, что в /etc/udev/rules.d нет файла 51-android.rules и мне пришлось сделать следующее для решения проблемы:

# Здесь идентификатор производителя - Google
$ echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0660", GROUP="plugdev"' | sudo tee —append /etc/udev/rules.d/51-android.rules
$ sudo chmod a+r /etc/udev/rules.d/51-android.rules
$ sudo udevadm control --reload-rules
$ sudo service udev restart

Мне также пришлось отключить и снова подключить моё Android-устройство.

M0Rf30/android-udev-rules поддерживаемые сообществом GitHub правила udev

https://github.com/M0Rf30/android-udev-rules/blob/master/51-android.rules

Это самый полный список правил udev, который я видел до сих пор, даже больше, чем в текущем рекомендованном sudo apt-get install android-tools-adb в официальной документации, попробуйте его.

Убедитесь, что у вас есть ваши правила udev, проверьте /etc/udev/rules.d

Вы можете найти соответствующие правила здесь: https://raw.githubusercontent.com/M0Rf30/android-udev-rules/master/51-android.rules

Просто поместите их в /etc/udev/rules.d/, затем:

sudo udevadm control --reload
sudo udevadm trigger

Теперь убедитесь, что сервер adb не запущен:

sudo adb kill-server

Добавьте вашего пользователя в adbusers:

sudo usermod -a -G adbusers $USER

Теперь используйте su $USER (ссылка), чтобы ваш пользователь действительно принадлежал adbusers (проверьте с помощью groups)

И затем просто снова запустите сервер adb:

adb start-server

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

Я не знаю, почему это работает, но это было единственное решение, которое сработало для меня

Найдите, где работает adb (если вы, как и я, имеете несколько установленных версий). Имейте в виду, что такие инструменты, как react native, могут решать использовать случайные другие версии, чтобы усложнить вашу жизнь. Для меня это ~/Android/Sdk/platform-tools/adb. Поэтому я выполню:

sudo chown root:YOUR_USERNAME ~/Android/Sdk/platform-tools/adb
sudo chmod 4550 ~/Android/Sdk/platform-tools/adb

Инструменты Android очень раздражают.

Перейдите в Настройки >> Обслуживание >> Хранение. Затем проверьте меню в верхнем левом углу и нажмите на подключение USB к компьютеру, затем измените на Медиа-устройство (MTP).

https://developer.android.com/studio/run/device

  • добавьте себя в группу plugdev: sudo usermod -aG plugdev $LOGNAME
  • установите sudo apt-get install android-sdk-platform-tools-common
  • выйдите из системы и войдите в систему снова, чтобы изменения групп вступили в силу

Если это все еще не работает, попробуйте:

  • отключить и снова включить “USB-отладка” в параметрах разработчика вашего Android-телефона

Мне пришлось сделать ответ Зака

Затем мне пришлось сделать ответ НутЛуза

ЗАТЕМ мне пришлось взять телефон и изменить USB-порт с клавиатурного хаба на прямой в компьютер :face-palm:
(Это Nokia 2.3, которая не работает, но Samsung A10 и Galaxy Nexus работают через USB-порт клавиатуры).

Ответ или решение

Проблема с отсутствием разрешений для ADB на Ubuntu 17.04 может возникнуть по нескольким причинам, и решение может потребовать выполнения нескольких шагов. Давайте рассмотрим возможные решения пошагово.

1. Проверьте режим подключения устройства

Убедитесь, что режим USB вашего Android-устройства не установлен на "Только зарядка". Для работы с ADB устройство должно быть в режиме "Передача файлов" (MTP) или "Отладка USB". Это можно проверить в меню "Настройки" -> "Параметры разработчика" на вашем устройстве.

2. Проверьте разрешения udev

Скорее всего, проблема связана с тем, как система udev обрабатывает ваше устройство. Вам нужно будет создать правило udev, чтобы ADB мог иметь доступ к вашему устройству.

  1. Подключите устройство и выполните команду:

    lsusb

    Найдите идентификатор вашего устройства. Например, если у вас устройство Google, это может выглядеть как ID 18d1:4ee7.

  2. Создайте правило в файле /etc/udev/rules.d/51-android.rules. Откройте терминал и выполните следующую команду (замените 18d1 и 4ee7 на реальные значения вашего устройства):

    echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee7", MODE="0660", GROUP="plugdev"' | sudo tee /etc/udev/rules.d/51-android.rules
  3. Примените изменения:

    sudo udevadm control --reload-rules
    sudo service udev restart
  4. Убедитесь, что ваш пользователь входит в группу plugdev:

    sudo usermod -aG plugdev $USER

    После этого вам может потребоваться выйти из системы и снова войти в неё, чтобы изменения вступили в силу.

3. Запуск ADB

Закройте все запущенные экземпляры ADB и запустите сервер ADB:

adb kill-server
adb start-server

4. Включите отладку USB

На вашем Android-устройстве убедитесь, что включена отладка USB. Вы также можете попробовать отключить и снова включить отладку, а затем повторно подключить устройство. Для этого выполните:

  • Перейдите в "Настройки" -> "Параметры разработчика" и отключите "Отладка USB", подождите несколько секунд и снова включите.

5. Проверьте ADB

Теперь проверьте, распознается ли ваше устройство командой:

adb devices

Если всё правильно выполнено, вы должны увидеть свое устройство в списке.

6. Альтернативные подходы

Если вышеуказанные решения не помогли, вы можете проверить, не используется ли другая версия ADB. Возможно, у вас установлено несколько версий ADB на вашем компьютере, и одна из них может блокировать доступ.

Также проверьте, соединено ли ваше устройство непосредственно с компьютерным USB-портом или через USB-хаб. Иногда такие проблемы могут возникнуть из-за недостаточной мощности или нестабильного соединения.

Заключение

Ошибка "no permissions" для ADB на Ubuntu 17.04 может быть устранена путем проверки настроек USB на устройстве, настройки правил udev и подтверждения, что ваш пользователь имеет соответствующие разрешения. Если вы всё еще сталкиваетесь с проблемами, возможно, стоит проверить наличие альтернативных версий ADB или изменить способ подключения устройства.

Оцените материал
Добавить комментарий

Капча загружается...