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



Я использую телефон 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 получил:



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


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



 adb kill-server
adb start-server
adb devices


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



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


почему? Чего мне не хватает?

699   22  

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 кабель между телефоном и компьютером.

снова подключите телефон.

выполнить 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 как 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 (aka ROM) у него был на своем телефоне. Элемент 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

найти текст к этой

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

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

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

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

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

и вводим

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

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

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

sudo /etc/init.d/udev restart

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

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

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

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

у меня была такая же проблема с моим 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 и все работало!

я знаю, что это может быть немного поздно, но вот очень хорошая статья о том, как вручную добавить драйвер USB Android ADB. вручную добавление драйвера USB Android ADB в 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″

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

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

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

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

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

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

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

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

Скопировал Извручную добавление драйвера USB Android ADB в 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", режим="0666"
  3. перезагрузите компьютер или просто перезапустите службу udev.

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

мое устройство 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 будут делать при повторном подключении:

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. Опять же, не надо!

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

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

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

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

вы также можете попробовать редактирования adb_usb.ini файл, расположенный по адресу / home / username/.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 сборки

Comments

    Ничего не найдено.