настройка устройства для разработки (???????????? никакое разрешение)

Я использую телефон Samsung galaxy nexus (Android 4.0) .

Я разрабатываю Android-приложение на Ubuntu linux OS. Я хотел бы запустить свое приложение непосредственно на устройстве Samsung handset, поэтому я выполнил следующие шаги настройки:

  1. в моем проекте добавил android:debuggable="true" до <application> элемент

  2. на устройстве, в Настройки > Безопасность включено Неизвестные источники

  3. на устройстве, в Настройки > Параметры разработчика включено Отладка USB

  4. на моем компьютере, создал /etc/udev/rules.d/51-android.rules файл со следующим содержимым:

    SUBSYSTEM=="usb", ATTR{idVendor}=="04E8", MODE="0666", GROUP="plugdev" 
    
  5. на моем компьютере, выполните chmod a+r /etc/udev/rules.d/51-android.rules команда

потом, на моем компьютере я открыл терминал и выполнил adb devices команда, I got:

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

так как я не видел своего устройства, но только ???????????? no permissions, затем я выполните следующие команды:

 adb kill-server
 adb start-server
 adb devices

но я все равно получил:

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

почему? Что я упускаю?

22 ответов


то, что работает для меня, - это убить и снова запустить сервер adb. В linux:sudo adb kill-server а то sudo adb start-server. Тогда он обнаружит почти все устройства из коробки.


ничего не работало для меня, пока я, наконец, не нашел ответ здесь: http://ptspts.blogspot.co.il/2011/10/how-to-fix-adb-no-permissions-error-on.html

я копирую текст здесь, если он исчезнет в будущем.

создайте файл с именем / tmp / android.правила со следующим содержанием (шестнадцатеричные номера поставщиков были взяты со страницы списка поставщиков):

SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0e79", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0502", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0b05", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="413c", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0489", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="091e", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="12d1", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="24e3", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2116", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0482", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="17ef", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1004", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="22b8", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0409", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2080", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0955", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2257", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="10a9", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1d4d", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0471", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04da", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="05c6", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1f53", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04dd", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fce", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0930", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="19d2", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1bbb", MODE="0666"

выполните следующие команды:

sudo cp /tmp/android.rules /etc/udev/rules.d/51-android.rules
sudo chmod 644   /etc/udev/rules.d/51-android.rules
sudo chown root. /etc/udev/rules.d/51-android.rules
sudo service udev restart
sudo killall adb

отсоедините USB кабель между телефоном и компьютером.

Подключите телефон.

Run adb devices чтобы подтвердить, что теперь у него есть разрешение на доступ к телефону.

обратите внимание, что можно использовать , USER="$LOGINNAME" вместо , MODE="0666" на замените $LOGINNAME для Вашего логина, т. е. id -nu печать.

в некоторых случаях может потребоваться дать файлу правил udev имя, которое сортируется близко к концу, например z51-android.rules.


введите следующие команды:

adb kill-server sudo ./adb start-server adb devices

вопрос ваш не работает сервера ADB как root.


попробовал все выше, никто не работал .. наконец, работал, когда я переключался с MTP на камеру(PTP).


есть много плохих ответов, размещенных на этот вопрос, начиная от настаивания на запуске adb as root (который не следует рекламировать как единственное или даже рекомендуемое решение) для решения совершенно несвязанных проблем.

вот самый короткий и самый универсальный рецепт для ухода за разрешениями для всех adb и fastboot устройств одновременно:

echo 'ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:ff420?:*", MODE="0666"' | sudo tee /etc/udev/rules.d/99-android.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --verbose --action=add --subsystem-match=usb

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

что касается конкретной вещи, что ОП сделал неправильно в своем вопросе - это не перезагрузка udev правила после редактирования .

также OP не сказал, какой Android build (он же ROM) у него был на телефоне. The idVendor значение установлено в программном обеспечении и поэтому оно зависит от ПЗУ. Так что значение 04E8 он использовал в своем первоначальном правиле работал бы только для устройств с запасными ПЗУ Samsung. Но это не проблема для это udev правило-оно соответствует всем устройствам с adb или fastboot интерфейсы, независимо от их столбец vendorid.


в Archlinux это может произойти иногда. Исправление:

$ sudo -s
# adb kill-server
# adb start-server

для тех, кто использует debian, руководство по настройке устройства под Ubuntu для создания файла " /etc/udev / rules.d / 51-android.правила" не работает. Я следовал инструкциям здесь. Записывая то же самое здесь для справки.

редактировать этот файл как суперпользователь

sudo nano /lib/udev/rules.d/91-permissions.rules

найти текст, похожий на this

# usbfs-like devices 
SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, \ MODE=”0664″

затем измените режим на 0666, как показано ниже

# usbfs-like devices 
SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, \ MODE=”0666″

это позволяет adb работать, однако нам все еще нужно настроить устройство может быть признано. Нам нужно создать этот файл как суперпользователя,

sudo nano /lib/udev/rules.d/99-android.rules

и вводим

SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, ATTRS{idVendor}==”0bb4″, MODE=”0666″

вышеуказанная строка предназначена для HTC, следуйте сообщению @grebulon для полного списка.

сохраните файл, а затем перезапустите udev как super user

sudo /etc/init.d/udev restart

подключить телефон через USB и он должен быть определен при компиляции и запуске проекта.


У меня была та же проблема, решение как fellow: (кстати, вам не нужно root ваше устройство.)

  1. введите " su " для переключения на super user.
  2. ваш-путь/adb kill-сервер.
  3. ваш-путь/начальный сервер adb.
  4. Если ошибка не возникает, вы можете увидеть список устройств с "your-path/adb devices" в корневой учетной записи.
  5. выйти из super user.
  6. Теперь вы можете выполнять "АБР устройств" в счет.

наслаждайтесь.


у меня была такая же проблема с моей Galaxy S3. Моя проблема заключалась в том, что idVendor стоимостью 04E8 был не тот. Чтобы найти правильный, подключите смартфон к компьютеру и запустите lsusb в терминале. Он будет перечислять ваш смартфон следующим образом:

Bus 002 Device 010: ID 18d1:d002 Google Inc.

право idVendor значение 18d1. И линия в /etc/udev/rules.d/51-android.rules должно быть:

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev" 

тогда я бегу sudo udevadm control --reload-rules и все работало!


я знаю, что это может быть немного поздно, но вот очень хорошая статья о том, как вручную добавить драйвер Android ADB USB. вручную добавление драйвера Android ADB USB в Ubuntu 14.04 LTS

отредактировано для добавления содержимого ссылки

шаги

Примечание: убедитесь, что вы подключили устройство Android в отладке USB режим

откройте терминал (CTRL + ALT + T) и введите команда: lsusb

теперь вы можете получить аналогичный ответ на это:
Bus 002 Device 013: ID 283b:1024

Примечание: Со ссылкой на это Bus 002 Device 008: ID 283b:1024
{idVendor}==”283b” {idProduct}==”1024″

теперь введите следующую команду: sudo gedit /etc/udev/rules.d/51-android.rules
Это создает файл правил android (51-android.rules) или откройте существующий в указанном месте (/etc/udev/rules.d)

добавить новую строку в этот файл:
SUBSYSTEM==”usb”, ATTRS{idVendor}==”283b”, ATTRS{idProduct}==”1024″, MODE=”0666″

Примечание редактировать idVendor & idProduct значения со значениями вашего устройства. Сохранить и закрыть.

теперь введите следующую команду:
sudo chmod a+rx /etc/udev/rules.d/51-android.rules - предоставить разрешение на чтение/выполнение
sudo service udev restart - перезапустить udev сервис

теперь мы должны добавить idVendor to adb_usb.ini. Введите следующие команды:
cd ~/.android
gedit adb_usb.ini

добавить следующее значение 0x283b

это не что иное, как 0x (idVendor значение). Поэтому замените значение. уважение к вашему стоимость устройства Сохраните и закройте файл.

теперь введите следующую команду:
sudo service udev restart

подключите устройство Android и снова подключите его.
Теперь введите следующую команду:
adb kill-server
adb devices

там вы идете! Устройство должно быть в списке.

Скопировал Из вручную добавление драйвера Android ADB USB в Ubuntu 14.04 LTS

работал на меня.


  1. следуйте инструкциям на http://developer.android.com/guide/developing/device.html
  2. замените идентификатор поставщика "0bb4" на "18d1" в /etc/udev/rules.d / 51-android.правила. Или добавьте другую строку, которая гласит:: Подсистема== "usb", SYSFS{idVendor}== "18d1", MODE= "0666"
  3. перезагрузите компьютер или просто перезапустите службу udev.

при перезапуске udev, убить ADB server и запустить adb server goto Android sdk путь установки и сделать все на sudo. затем запустите adb devices, это решит проблему разрешения.


мое устройство POSITIVO и моя операционная система Ubuntu 14.04 LTS Итак, моя проблема была в имени переменной

Я создаю файл/etc/udev / rules.d / 51-android.правила и положил SUBSYSTEM=="usb", SYSFS{idVendor}=="1662", MODE="0666"

Я отключил устройство и исполнить:

$ sudo udevadm control --reload-rules
$ sudo service udev restart

после этого я снова подключил android-устройство в режиме разработчика и

$ adb devices

List of devices attached 
1A883XB1K   device

без отключения

все предоставленные ответы предполагают, что вы можете отключить и снова подключить USB-кабель. В ситуациях, когда это невозможно (например, когда вы удаленны), вы можете сделать следующее, чтобы по существу сделать то, что предлагаемые правила udev будут делать на re-plug:

lsusb

найдите устройство, о котором вы заботитесь, например:

Bus 003 Device 005: ID 18d1:4ee4 Google Inc. Nexus

обратите внимание на номер автобуса, а затем выполнить, например, на автобусе 003:

sudo chmod a+w /dev/bus/usb/003/*

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


попробуйте вместо GROUP="plugdev" используйте основную группу вашего пользователя.


сообщество GitHub поддерживает udev-правила

https://github.com/M0Rf30/android-udev-rules/blob/master/51-android.rules

Это самый полный список udev-правил, который я видел до сих пор, даже больше, чем в настоящее время рекомендуется sudo apt-get install android-tools-adb по официальной документации, попробуйте.


вы не должны бежать adb сервер как root, как и другие ответы предложили. Вместо этого, если вы используете Arch Linux, сделайте следующее:

  1. установить android-udev пакет с Pacman
  2. перезагрузить udev-правила:

    # udevadm control --reload-rules
    
  3. на adbusers группа, а затем выход и вход в систему:

    # usermod -aG adbusers $LOGNAME
    

источник: https://wiki.archlinux.org/index.php/android#Configuring_adb


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

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

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


в моем случае на ubuntu 12.04 LTS мне пришлось изменить режим HTC Incredible usb с зарядки на носитель, а затем устройство появилось под adb. Конечно, в обоих случаях отладка уже началась.


Я использовал su, и он начал работать. Когда я использую Jetbrains с обычным пользователем, я вижу эту проблему, но после перезапуска Jetbrains в режиме su я могу видеть свое устройство, ничего не делая.

Я использую Ubuntu 13.04 и Jetbrains 12.1.4


вы также можете попробовать редактирования adb_usb.ini файл, расположенный по адресу / home / имя пользователя/.android/. Этот файл содержит список id поставщика устройств, которые необходимо подключить. Вы просто добавляете поставщика идентификатора вашего устройства в новую строку (это один идентификатор на строку). Затем перезапустите сервер adb и снова подключите устройство.

Это сработало для меня на Ubuntu 12.10.


Если кто-то сталкивается со следующим сообщением об ошибке при использовании adb devices

no permissions (verify udev rules); see [http://developer.android.com/tools/device.html]

выполнить следующие

sudo -s 
adb kill-server
adb start-server

это исправило проблему для меня на пользовательском устройстве Android сборки