Когда я пытаюсь:
$ adb devicesя получаю результат:
List of devices attached ???????????? no permissionsв чем проблема?
попробовал на компьютере с Ubuntu 16.04, и он работал отлично. попробовал устройство 7.1.1, и оно также работало отлично.
Когда я пытаюсь:
$ 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”?