Я использую телефон галактики Samsung Nexus (платформа Android 4.0).
Я разрабатываю приложение для Android в ОС Linux Ubuntu. Я хотел бы запустить приложение непосредственно на устройстве Samsung, поэтому выполнил следующие шаги настройки:
в моем файле AndroidManifest.xml проекта, добавьте 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
на моем компьютере, я получил:
List of devices attached
???????????? no permissions
Поскольку я не видел свое устройство, но только "без прав доступа", я запускаю следующие команды:
adb kill-server
adb start-server
adb devices
Но я все еще получаю:
List of devices attached
???????????? no permissions
Почему? Что мне не хватает?
Что для меня работает, так это снова и снова запустить сервер adb. В linux: sudo adb kill-server
, а затем sudo adb start-server
. Затем он обнаружит почти все устройства из коробки.
sudo /opt/android/platform-tools/adb devices
Ничего не работало для меня, пока я наконец не нашел ответ здесь: http://ptspts.blogspot.co.il/2011/10/how-to-fix-adb-no-permissions-error-on.html
Я копирую текст здесь, если он исчезнет в будущем.
Создайте файл с именем /tmp/android.rules со следующим содержимым (шестнадцатеричные номера поставщиков были взяты со страницы списка поставщиков):
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
, чтобы подтвердить, что теперь у него есть разрешение на доступ к телефону.
Обратите внимание, что вместо , MODE="0666"
можно использовать , USER="$LOGINNAME"
в файле .rules
, заменив $LOGINNAME
на ваше имя для входа, то есть на то, что печатает id -nu
.
В некоторых случаях может потребоваться предоставить файлу правил udev имя, которое сортируется близко к концу, например z51-android.rules
.
70-android.rules
согласно этому сообщению: esausilva.com/2010/05/13/… . Также спасибо за сообщение о том, что вам нужно перезапустить udev
и убить все процессы adb. Работал как шарм!
Введите следующие команды:
adb kill-server
sudo ./adb start-server
adb devices
Проблема заключается в том, что вы не используете сервер adb как root.
Пробовал все выше, никто не работал. Наконец, работал, когда я переключался с MTP на камеру (PTP).
В Archlinux это может происходить изредка. Исправление:
$ sudo -s
# adb kill-server
# adb start-server
sudo adb kill-server; sudo adb start-server
не работал, но этот работал.
На этот вопрос отправлено много плохих ответов, начиная от настоящих при запуске 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
Что касается того, что OP делал неправильно в своем вопросе, это не перезаписывало правила udev
после редактирования файла .rules
.
Кроме того, OP не сообщил, какую версию Android (aka ROM) у него на телефоне. Значение idVendor
устанавливается в программном обеспечении, и поэтому оно зависит от ПЗУ. Таким образом, значение 04E8
, которое он использовал в своем первоначальном правиле, могло бы работать только для устройств с запасными ПЗУ Samsung. Но это не проблема для этого правила udev
- он соответствует всем устройствам с интерфейсами adb
или fastboot
, независимо от их VendorID.
Для тех, кто использует debian, руководство по настройке устройства под Ubuntu для создания файла "/etc/udev/rules.d/51-android.rules" не работает. Я выполнил инструкции здесь. Опишем здесь же здесь для справки.
Изменить этот файл как суперпользователь
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″
Это позволяет adb работать, однако нам все равно нужно настроить устройство, чтобы оно было распознано. Нам нужно создать этот файл как суперпользователь,
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, и его следует обнаружить при компиляции и запуске проекта.
У меня была одна и та же проблема, решение такое же: (кстати, вам не нужно корневать свое устройство.)
Enjoy.
su
, используйте sudo su
. Я сделал. А также, если вы не знаете, как выйти из системы, используйте exit
.
была та же проблема с моей Galaxy S3. Моя проблема заключалась в том, что значение idVendor (04E8) не было правильным. Чтобы найти правильный, подключите смартфон к компьютеру и запишите в терминал команду
lsusb
В результате я нашел все подключенные USB-устройства с правильным идентификатором. Должна быть строка, в которой отображается ваш смартфон, например:
Bus 002 Device 010: ID 18d1:d002 Google Inc.
в моем случае. Таким образом, правильное значение idVendor равно "18d1". Поэтому строка в файле /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
Everithing работает!
ATTR{idVendor}=="18d1"
виду: ATTR{idVendor}=="18d1"
Я знаю, что это может быть немного поздно, но вот очень хорошая статья о том, как вручную добавить 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″
Примечание Изменить значения 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
value). Поэтому замените значение на. в отношении значения вашего устройства
Сохраните и закройте файл.
Теперь введите следующую команду: sudo service udev restart
Подключите Android-устройство и снова подключите его.
Теперь введите следующую команду: adb kill-server
adb devices
Иди сюда! Ваше устройство должно быть указано.
Скопировано из Вручную добавляет USB-драйвер Android ADB в Ubuntu 14.04 LTS
Работал для меня.
Все предоставленные ответы предполагают, что вы можете отключить и снова подключить USB-кабель. В ситуациях, когда это невозможно (например, когда вы удалены), вы можете сделать следующее, чтобы по существу сделать то, что предложили бы правила udev для повторного подключения:
lsusb
Найдите устройство, о котором вы заботитесь, например:
Bus 003 Device 005: ID 18d1:4ee4 Google Inc. Nexus
Обратите внимание на номер шины, на котором он включен, и затем выполните, например. для шины 003
:
sudo chmod a+w /dev/bus/usb/003/*
Ясно, что это может быть более разрешительным, чем вы хотите (может быть, больше устройств подключено, чем только этот), но вы получаете идею.
udev
без повторного подключения устройства, просто используйте udevadm trigger --verbose --action=add --subsystem-match=usb
.
Мое устройство POSITIVO, а моя операционная система Ubuntu 14.04 LTS
Итак, моя проблема была в имени переменной
Я создаю файл /etc/udev/rules.d/51-android.rules
и положите 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
Когда вы перезагружаете udev, убиваете сервер adb и запускаете путь для установки adb и устанавливаете sudk android sudo и делаете все на sudo. затем запустите устройства adb, чтобы решить проблему разрешения.
Сообщество GitHub поддерживает udev-rules
https://github.com/M0Rf30/android-udev-rules/blob/master/51-android.rules
Это самый полный список правил udev, который я видел до сих пор, даже больше, чем рекомендуемый в настоящее время sudo apt-get install android-tools-adb
в официальной документации, попробуйте.
Вы также можете попробовать отредактировать файл adb_usb.ini, расположенный по адресу /home/username/.android/. Этот файл содержит список поставщиков устройств, которые вы хотите подключить. Вы просто добавляете поставщика идентификатора устройства в новую строку (это один идентификатор в строке). Затем перезапустите adb-сервер и переустановите свое устройство.
Это работало для меня на Ubuntu 12.10.
Попробуйте вместо GROUP="plugdev"
использовать основную группу вашего пользователя.
Я использовал su, и он начал работать. Когда я использую Jetbrains с обычным пользователем, я вижу эту проблему, но после перезапуска Jetbrains в режиме su я вижу свое устройство, ничего не делая.
Я использую Ubuntu 13.04 и Jetbrains 12.1.4
Если кто-то сталкивается со следующим сообщением об ошибке, когда они используют adb devices
no permissions (verify udev rules); see [http://developer.android.com/tools/device.html]
Выполните следующие действия
sudo -s
adb kill-server
adb start-server
Это исправило проблему для меня на пользовательском устройстве сборки Android.
Как упоминалось выше, проблема вызвана не запуском adb с правами root.
Я хотел добавить свое решение проблемы Ubuntu 12.04 с Android Studio 0.8.2. Что также покажет вам, как открыть студию Android без ввода полного пути:
Сначала вы добавляете android-studio/bin в свой PATH, редактируя файл .bashrc.
cd ~/
gedit .bashrc
//add the below line withing your .bashrc file, I prefer you to put it at the
//very bottom
HOME=$HOME:~/<android-studio>/bin
//save file, exit terminal, open new terminal
studio.sh // will now open android studio from any directory in terminal
Это позволит вам запускать программу с помощью команды studio.sh из терминала из любого каталога. Но это не позволит вам запускать его с помощью sudo из терминала из любого каталога!!! Это возвращает нас к нашей основной проблеме. Для этого нам нужно будет отредактировать файл /etc/sudoers.
cd /etc
sudo gedit sudoers
//edit the secure_path="" to include /home/<your-username>/<android-studio>/bin
//save file, exit terminal, open new terminal
gksudo studio.sh // will now open android studio as root from any direcotry in terminal
// I use gksudo rather than sudo when opening a graphical program
Теперь adb запускается с правами root, и ваш компьютер распознает ваше подключенное устройство. И вы можете запустить программу из любой директории. Это именно то, как я исправил проблему и подумал, что буду делиться ею.
В моем случае на ubuntu 12.04 LTS мне пришлось изменить мой режим HTC Incredible usb от заряда до носителя, а затем устройство появилось под adb. Конечно, в обоих случаях отладка уже была выполнена.
По мере того как Debian идет, я делал все, что использовал Kali. После команды chown и перезагрузки я потерял использование своего ноутбука и внешней клавиатуры/мыши. Двойная загрузка Ubuntu Studio, я загрузился к этому, смонтировал раздел Debian, открыл терминал и
sudo su rm path/to/all.android.rules
Оба в /libs/udev... AND/etc/udev AND
gedit/lib/udev/rules.d/91-permissions.rules
И переключитесь обратно на
SUBSYSTEM == "usb", ENV {DEVTYPE} == "usb_device", \MODE = "0666"
Перезагрузитесь, и все клавиатуры/мыши снова работают. Кроме того, перезагрузитесь обратно в Kali/Debian без андроидов и "нормальных" 91-license.rules и...
adb
Работает так, как должно - с разрешениями и т.д. У меня все еще есть мой пользователь без root в группе plugdev. Укажите путь adb в $PATH. У вас есть adb at/home/user/andy/sdk/platform-tools/
Надеюсь, это поможет кому-то, кто тоже натолкнется на это.
plugdev
.