Когда я пытаюсь:
$ 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, и оно также работало отлично.
Ответы:
Попробуйте перезапустить сервер Adb.
sudo adb kill-server
а потом
sudo adb start-server
затем подключите ваше устройство включите отладку и введите
adb devices
adb devicesтеперь отображается устройство (и я получаю диалоговое окно с отпечатками пальцев). Тем не менее, он все еще не работает с Android Studio. Кроме того, когда я запускаю android studio, а затем запускаю adb devicesиз консоли, я получаю «сервер adb устарел» и сервер adb перезагружается. После этого я снова попадаю в ситуацию «без прав».
Была такая же проблема. Обеспечение того, что режим USB устройства НЕ заряжается, только решило это.
Очень вероятно, что 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, в которой 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 devices
List of devices attached
YC873P0G device
Источник: Добавление правил udev для отладки USB-устройств Android - Янош Герик
Чтобы расширить ответ Сумит Дешмукх, его подход в целом работает - если вы хотите использовать 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.
Вам необходимо предоставить разрешение на ваше устройство Android. Перейдите в Настройки> Параметры разработчика. Попробуйте выключить и снова включить Usb Debugging. Удалите кабель и подключите его снова. Также попробуйте удалить все сохраненные авторизации из опций разработчика. Теперь он должен запросить разрешение на отладку с помощью подсказки на вашем телефоне. Принять это.
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 в официальной документации , попробуйте.
Я понятия не имею, почему это работает, но это было единственное решение, которое сработало для меня
Найдите, где работает adb (если вы похожи на меня, у вас установлено несколько версий). Имейте в виду, что такие инструменты, как реагируют на нативную, могут решить использовать другие случайные версии, чтобы сделать вашу жизнь сложнее. Для меня это ~/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).
Убедитесь, что у вас есть правила 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, переподключите его.
sudo adb devices. Если это работает отлично, но по памяти, мне не нужно было иметь права root для проверки подключенных устройств.