Команда adb devices не работает


86

Я использую Ubuntu 10.10 64 бит. У меня установлен ia32-libs вместе с Android Debug Bridge версии 1.0.26.

Моя проблема (ы):

  1. adb devices>>> ???????????? нет разрешений
  2. sudo adb devices >>>> sudo: adb: команда не найдена
  3. adb shell >>> ошибка: недостаточно прав для устройства

Думаю, все это связано. Вот соответствующая информация.

$ echo $PATH
/home/me/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/android-sdk-linux_x86/tools:/opt/android-sdk-linux_x86/platform-tools

$ which adb
/opt/android-sdk-linux_x86/platform-tools/adb

$ adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
????????????    no permissions

$ sudo adb devices
sudo: adb: command not found

$ adb shell
error: insufficient permissions for device

Я получаю те же результаты с рутированным Moto Droid с CM6.1 и рутированным G-Tab с ПЗУ на основе CM7.

Я просмотрел следующие сообщения по теме:

Я попробовал большинство (не все) предложений, и мне не удалось решить свою проблему. То, что я не пробовал, казалось неуместным. Буду признателен за еще несколько советов, и я продолжу устранять неполадки.

Единственное, что я не пробовал, - это редактировать /etc/udev/rules.d/70-android.rules. Вероятно, в этом проблема? Я не понимаю, как это могло вызвать «sudo: adb: command not found». Может быть, не все мои проблемы связаны. В любом случае, на данный момент я думаю, что мне нужен какой-то вклад от других людей, потому что я не верю, что у меня есть проблема с путями или другие общие проблемы, обсуждаемые в этих других сообщениях.

РЕДАКТИРОВАТЬ: РЕШЕНО благодаря EboMike и RivieraKid. На самом деле это были две разные проблемы:

  1. Пункт 2 выше (sudo: adb: command not found) был решен путем создания символической ссылки следующим образом:

    $ sudo ln -s /opt/android-sdk-linux_x86/platform-tools/adb /usr/local/sbin/adb
    

    Это позволило мне сделать то, что предложил EboMike, и использовать это решение . Это требовалось для моего мото-дроида. (Однако запуск adb как sudo для моего Viewsonic G-Tablet не требовался.)

  2. Два других моих вопроса были решены путем реализации правила udev, как предлагал RivieraKid (из этой ссылки ).



Пункт №1 мне действительно помог. Не уверен насчет предмета № 2
Франсиско Кинтеро

Ответы:


87

Единственное, что я не пробовал, - это редактировать /etc/udev/rules.d/70-android.rules. Вероятно, в этом проблема?

Какая-то конкретная причина, по которой вы этого не сделали? Чтобы ответить на вопрос - ДА! Правила udev - это то, что информирует Ubuntu о вашем устройстве и позволяет инструментам пользовательского пространства получать к нему доступ.

Вы не сможете пользоваться adb без правильного следования инструкциям .

Имея это в виду, вы не говорите, какую версию Ubuntu вы используете, но у меня были проблемы с 10.10 - дайте мне знать, если вам нужно, чтобы я опубликовал содержимое моего файла правил.

Не беспокойтесь о запуске adb через sudo, он вам не нужен. MODE="0666"Из правила Udev позволяет получить доступ к устройству любого пользователя.


РЕДАКТИРОВАТЬ:

Не забудьте перезагрузить правила:

sudo udevadm control --reload-rules

РЕДАКТИРОВАТЬ № 2:

Как правильно указывает @Jesse Glick, если adb уже работает в режиме демона, вам также необходимо перезапустить его, чтобы это работало:

sudo adb kill-server

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


1
Спасибо за ссылку . Не знаю, как я упустил тот факт, что эти инструкции были официальными. Я думал, что люди делают это как обходной путь. Я нашел код поставщика для своего Viewsonic GTablet и добавил правило udev, и теперь оно работает! Спасибо.
MountainX

1
по какой-то причине я не могу заставить Motorola Droid появляться с устройствами adb. Теперь я могу показать GTab и эмулятор, но не Droid.
MountainX

См. Выше. Запуск adb от имени root вызвал появление Moto Droid.
MountainX

$ cat /etc/udev/rules.d/51-android.rules SUBSYSTEM == "usb", SYSFS {idVendor} == "22b8", MODE = "0666" SUBSYSTEM == "usb", SYSFS {idVendor} = = "0955", MODE = "0666"
MountainX

1
… И вам необходимо перезапустить adbдемон, если он работал раньше.
Джесси Глик,

22

Вам необходимо перезапустить сервер adb как root. Смотрите здесь .


не сработало. Подробности: me@desktop:/opt/android-sdk-linux_x86/platform-tools$ sudo adb kill-server sudo: adb: command not found me@desktop:/opt/android-sdk-linux_x86/platform-tools$ adb kill-server me@desktop:/opt/android-sdk-linux_x86/platform-tools$ sudo adb start-server sudo: adb: command not found
MountainX

adbне стоит на пути вашего суперпользователя. Введите, which adbчтобы узнать, по какому пути он находится, затем добавьте это в путь root.
EboMike 01

Надеюсь, ты сможешь это прочитать. (Я не знаю, как форматировать комментарии, чтобы включать новые строки.) Adb IS на пути моего пользователя root. Я вставил команду which adb в свой исходный пост. Путь: / opt / android-sdk-linux_x86 / platform-tools / adb. $ sudo -s root @ desktop: # echo $ PATH / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / X11R6 / bin: / opt / android-sdk-linux_x86 / tools: / opt / android-sdk-linux_x86 / platform-tools
MountainX

1
Вот странная вещь. Я получаю разные результаты от "which adb" в зависимости от того, запускаю ли я его как root или с помощью sudo. Вот результат $ sudo which adb $
MountainX

Укажите полный путь тогда, когда вы запустите adb как root.
EboMike 01

13

В моей системе Gentoo / Funtoo linux у меня возникают аналогичные проблемы:

Я всегда получал не правильное описание устройства и недостаточные разрешения:

# sudo ./adb devices
List of devices attached 
????????????    no permissions
# ./adb usb
error: insufficient permissions for device

Мне помогает инструкция от Google. В моем случае мне нужно было добавить правило udev:

# cat /etc/udev/rules.d/51-android.rules 
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev" 

и настройка прав файловой системы

# chmod a+r /etc/udev/rules.d/51-android.rules

После повторного подключения моего смартфона доступ к телефону был успешным, теперь он также появляется в Eclipse 'Android Device Chooser:

# sudo ./adb devices
List of devices attached 
3XXXXXXXXXXXXXC device
# sudo ./adb usb
restarting in USB mode

Вы также должны проверить членство вашего пользователя в группе plugdev .


3

Каждый ответ, который я прочитал, указывает на SUBSYSTEM=="usb". Однако моему (возможно, древнему) udev нужно было изменить это на DRIVER=="usb". Наконец-то я могу запустить сервер adb как пользователь без полномочий root ... ура.

Может быть поучительно посмотреть на вывод udevmonitor --env, за которым следует вывод

udevinfo -a -p <DEVICE_PATH_AS_REPORTED_BY-udevmonitor>

Если udevmonitorи udevinfoне существует на вашей машине, использование udevadm monitorи udevadm info -a -p ...вместо этого.
Эш

2

Обратите внимание, что IDE, такие как IntelliJ IDEA, как правило, запускают собственный adb-сервер.

Даже ручное уничтожение сервера и запуск нового экземпляра с помощью sudo здесь не поможет, пока вы не заставите свою IDE убить сам сервер.


2

перезапуск сервера adb как root работал у меня. увидеть:

derek@zoe:~/Downloads$ adb sideload angler-ota-mtc20f-5a1e93e9.zip 
loading: 'angler-ota-mtc20f-5a1e93e9.zip'
error: insufficient permissions for device
derek@zoe:~/Downloads$ adb devices
List of devices attached
XXXXXXXXXXXXXXXX    no permissions

derek@zoe:~/Downloads$ adb kill-server
derek@zoe:~/Downloads$ sudo adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
derek@zoe:~/Downloads$ adb devices
List of devices attached
XXXXXXXXXXXXXXXX    sideload

Я тоже: Linux Mint Serena 18.1 с HTC Sensation. Noob alert: я болтаю с этим в течение 2 дней, так что все почти наверняка попало в ловушку
Aethelbald

1

Я исправил эту проблему в своей системе debian GNU / Linux, переопределив системные правила таким образом:

mv  /etc/udev/rules.d/51-android.rules /etc/udev/rules.d/99-android.rules

Я использовал содержимое из файлов, связанных по адресу: http://rootzwiki.com/topic/258-udev-rules-for-any-device-no-more-starting-adb-with-sudo/



0

HTC One m7 работает под управлением свежего Cyanogenmod 11.

Телефон подключен к USB, и мое соединение для передачи данных привязано.

Тогда я получаю такой сюрприз:

cinder@ultrabook:~/temp/htc_m7/2015-11-11$ adb shell
error: insufficient permissions for device

cinder@ultrabook:~/temp/htc_m7/2015-11-11$ adb devices
List of devices attached
????????????    no permissions

РЕШЕНИЕ: Выключите модем на телефоне.

cinder@ultrabook:~/temp/htc_m7/2015-11-11$ adb devices
List of devices attached
HT36AW908858    device

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.