настройка устройства для разработки (???????????? никакое разрешение)
Я использую телефон Samsung galaxy nexus (Android 4.0) .
Я разрабатываю приложение для Android на Ubuntu linux OS. Я хотел бы запустить свое приложение непосредственно на устройстве Samsung handset, поэтому я выполнил следующие шаги настройки:
в моем проекте добавил
android:debuggable="true"до<application>элементна устройстве, в Настройки > Безопасность включено Неизвестные источники
на устройстве, в Настройки > Параметры разработчика включено Отладка USB
на моем компьютере, создал
/etc/udev/rules.d/51-android.rulesфайл со следующим содержимым:
SUBSYSTEM=="usb", ATTR{idVendor}=="04E8", MODE="0666", GROUP="plugdev"
на моем компьютере, выполните
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
почему? Чего мне не хватает?
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-serversudo ./adb start-serveradb 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.
для тех, кто использует 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: (кстати, вам не нужно укоренять свое устройство.)
- введите "su", чтобы переключиться на суперпользователя.
- your-path / adb kill-server.
- your-path/adb start-server.
- Если ошибка не возникает, вы можете увидеть список устройств с "your-path/adb devices" в учетной записи root.
- выйти из суперпользователя.
- Теперь вы можете выполнить "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 ~/.androidgedit adb_usb.iniдобавить следующее значение
0x283bэто не что иное, как 0x (
idVendorзначение). Поэтому замените значение на. уважение к вашим стоимость устройства Сохраните и закройте файл.теперь введите следующую команду:
sudo service udev restartподключите устройство Android и снова подключите его.
Теперь введите следующую команду:adb kill-serveradb devicesвот так! Устройство должно быть в списке.
Скопировал Извручную добавление драйвера USB Android ADB в Ubuntu 14.04 LTS
работал на меня.
- следуйте инструкциям на http://developer.android.com/guide/developing/device.html
- замените идентификатор поставщика "0bb4 "на" 18d1 " в /etc/udev/rules.d / 51-android.правила. Или добавьте еще одну строку, которая гласит:: Подсистемы=="USB", и файловой системы sysfs{idVendor}=="18d1", режим="0666"
- перезагрузите компьютер или просто перезапустите службу 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/*очевидно, что это может быть более разрешительным, чем вы хотите (там может быть больше устройств, чем только этот), но вы получите идею.
сообщество 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, выполните следующие действия:
- установить
android-udevпакет с Pacmanперезагрузить udev-правила:
# udevadm control --reload-rulesна
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 devicesno permissions (verify udev rules); see [http://developer.android.com/tools/device.html]выполнить следующие
sudo -s adb kill-server adb start-serverэто исправило проблему для меня на пользовательском устройстве Android сборки
Comments