adb не має дозволів на Ubuntu 17.04


48

Коли я намагаюся:

$ adb devices

я отримую результат:

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

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

спробував на машині Ubuntu 16.04, і вона працювала чудово. спробував пристрій 7.1.1, і він також справно працював.


Спробуйте sudo adb devices. Якщо це працює чудово, але з пам’яті мені не довелося кореня перевіряти, чи приєднані пристрої.
шмінк

1
він не буде працювати з sudo, але з кореневим входом, це буде. Проблема полягає в тому, що андроїд-студія тільки попередньо виконує adb з несеансового сеансу, і запустивши його з jksudo, він не розпізнає мої файли.
Надав Ташер

Я знайшов те саме з андроїд-студією і взагалі будь-чим, зробленим jetbrains. Коли ви встановили андроїд-студію, ви робили це як root?
shmink

встановлений як root до / usr / local / і chmoded до 777 -R, запускайте не як root, щоб він розпізнавав налаштування та sdk.
Надав Ташер

Як щодо запуску його як root та просто зміни налаштувань та sdk відповідним чином.
shmink

Відповіді:


64

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

sudo adb kill-server

і потім

sudo adb start-server

потім підключіть свій пристрій, увімкніть налагодження та введіть

adb devices

2
Це справді працює. Після того, як я це зробив, справді, запущений adb devicesзараз показує пристрій (і я отримую діалогове вікно відбитків пальців). Однак це все ще не працює з андроїд-студією. Крім того, коли я запускаю студію Android, а потім запускаю adb devicesз консолі, я отримую "сервер adb застарів", і сервер adb перезапускається. Після цього я знову потрапляю до ситуації "без дозволів".
Відтінок

Це не працює. adb-пристрої нічого не показують, і гарнітура ніколи більше не запитує дозволу.
Tyguy7

62

Була така ж проблема. Переконайтесь, що режим USB на пристрої НЕ заряджається, лише це вирішило.


5
Тут же я змінив правила Udev без результатів, змінив USB на спільний доступ до файлів і presto. У попередній версії ubuntu пристрій не потребував правил udev або конкретних режимів USB.
Fco P.

3
Це має бути правильна відповідь (не adb перезапуск сервера)
RumburaK

1
Правильна відповідь для мене.
Альваро Гутьєррес Перрес

1
не повинна бути правильною відповіддю, але працювала.
Узумакі Д. Ічіго

1
Так, це правильна відповідь.

39

Дуже ймовірно, 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

Це означає, що файл пристрою буде належати кореневі користувача та корінь групи, тому 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 - Janos Gyerik


1
Ця відповідь вирішила мою проблему. Ідеально, дякую.
alexmeia

1
Дякую @Paul Це мені допомогло. Добре пояснено з розумом. Я думаю, що також потрібен перезапуск послуги udev.
Гаган

це, безумовно, правильне рішення, якщо ви не хочете використовувати судо для речей, для яких вам не потрібно використовувати
судо

Це має бути прийнята відповідь, оскільки це правильна відповідь. Відповідь з найвищим рейтингом - це справді лише обхідне рішення.
Джоель Крос

Це вирішило це для мене. Він працював вчора без правил, але потім після встановлення оновлень на ubuntu він перестав працювати, і мені довелося це зробити.
simernes

2

Щоб розширити відповідь Сумета Дешмуха, його підхід працює взагалі - якщо ви хочете використовувати лише adbкоманду з консолі.

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

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

Це не найкраща ситуація (потрібно запускати команди кожен раз, коли ви запускаєте Studio), але це робить трюк швидко і брудно. Якщо я знайду більш постійне рішення, оновлю цю відповідь.


велике дякую, хоча помилка виправлена ​​оновленням системи (по телефону) та оновленням студії.
Надав Ташер

2

Зміна режиму USB з телефону зробила для мене трюк. (Я встановив його на File Transfer .)


2

Будь ласка, не дотримуйтесь рішень, які пропонують використовуватиsudo ( sudo adb start-server)! Це запустити adb як root (адміністратор), і НЕ передбачається запускати так !!! Це BAD вирішення !

Все, що працює як root, може робити все, що у вашій системі, якщо він створює або змінює файл, може змінити його дозвіл на використання тільки root. Знову НЕ!

Що потрібно зробити це налаштувати вашу систему , щоб користувач має дозволу, перевірити це керівництво я написав про те , як зробити це правильно.


2

Це не спрацювало для мене після того, як я додав себе до 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.


Це не працює і для мене ...
Tyguy7

1

Потрібно надати дозвіл на своєму пристрої Android. Перейдіть у Налаштування> Параметри розробника. Спробуйте вимкнути налагодження Usb і знову ввімкнути його. Вийміть кабель і підключіть його знову. Спробуйте також видалити всі збережені авторизації з параметрів розробника. Тепер він повинен запитати дозвіл на налагодження за допомогою запиту на вашому телефоні. Прийняти це.


не працює, я вже спробував це, якщо це має значення, я використовую Android 7.1.2, і на іншому пристрої, на якому працює 7.1.1, він працював.
Надав Ташер

Ви намагалися видалити всі авторизовані хости? Перезавантажився після цього?
Joel G Mathew

не перезавантажувався. Я спробую це і скажу, чи спрацювало це.
Надав Ташер

Якщо це спрацювало, ви можете прийняти відповідь.
Joel G Mathew

погана перевірка пізніше сьогодні
Nadav Tasher

1

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 в офіційній документації , спробуйте.


0

Я поняття не маю, чому це працює, але це було єдине рішення, яке працювало на мене

Знайдіть, де працює 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 дуже дратують.


0

Перейдіть у Налаштування >> Обслуговування >> Зберігання. Потім перевірте верхнє ліве меню та натисніть підключення USB до комп’ютера, а потім перейдіть до мультимедійного пристрою (MTP).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.