Adb нет разрешений на Ubuntu 17.04

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

$ adb devices

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

List of devices attached ????????????    no permissions

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

попробовал на компьютере с Ubuntu 16.04, и он работал отлично. попробовал устройство 7.1.1, и оно также работало отлично.

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

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

sudo adb kill-server

и затем

sudo adb start-server

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

adb devices

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

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

$ lsusbBus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hubBus 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

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

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

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

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

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

$ adb devicesList of devices attached YC873P0G    device

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

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

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

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

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

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

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

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

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

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

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

# Here the vendor ID is of 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 --reloadsudo udevadm trigger

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

sudo adb kill-server

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

sudo usermod -a -G adbusers $USER

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

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

adb start-server

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

это не будет работать с sudo, но с корневым логином это будет. проблема в том, что android studio только предварительно формирует adb из некорневого сеанса, и, запустив его с помощью jksudo, он не распознает мои файлы.

Попробуйте устройства sudo adb. Если это отлично работает, но по памяти мне не нужно было быть root, чтобы проверить наличие подключенных устройств.

Я обнаружил то же самое с android studio и вообще со всем, что создано jetbrains. Когда вы устанавливали android studio, вы делали это от имени root?

установлен как root в / usr / local / и изменен на 777 -R, запускается не как root, поэтому он распознает настройки и sdk.

Как насчет того, чтобы запустить его от имени root и просто соответствующим образом изменить настройки и sdk?

что вы имеете в виду под этим?

Запустите android studio от имени root. Если есть изменения в настройках, измените их так, как вы предпочитаете.

когда я запускаю его от имени root, домашний каталог становится / root /, и при каждой перезагрузке компьютера он стирается.

@NadavTasher сработал ли “adb kill-server”?