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

Я использую телефон галактики Samsung Nexus (платформа Android 4.0 ).

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

  1. В моем файле AndroidManifest.xml проекта добавьте 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 на моем компьютере, я получил:

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

Поскольку я не видел свое устройство, но только «без разрешений», я запускаю следующие команды:

  adb kill-server adb start-server adb devices 

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

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

Зачем? Что мне не хватает?

Solutions Collecting From Web of "Настроить устройство для разработки (без разрешений)"

Что для меня работает, так это снова и снова запустить сервер 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.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 чтобы подтвердить, что теперь у него есть разрешение на доступ к телефону.

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

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

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

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

Проблема заключается в том, что вы не используете сервер adb как root.

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

В Archlinux это может происходить изредка. Исправление:

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

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

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

Наслаждаться.

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

Редактировать этот файл как superuser

 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, и он должен быть обнаружен при компиляции и запуске проекта.

Была та же проблема с моей 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 работал!

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

Я знаю, что это может быть немного поздно, но вот очень хорошая статья о том, как вручную добавить 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 ). Поэтому замените значение на. Значение вашего устройства. Сохраните и закройте файл.

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

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

Вот так! Ваше устройство должно быть указано.

Скопировано с помощью добавления USB-адаптера Android ADB в Ubuntu 14.04 LTS

Работал для меня.

На этот вопрос отправлено много плохих ответов, начиная от необходимости запуска 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 build (aka ROM) у него на телефоне. Значение idVendor устанавливается в программном обеспечении и, следовательно, оно зависит от ПЗУ. Таким образом, значение 04E8 он использовал в своем первоначальном правиле, могло бы работать только для устройств с запасными ПЗУ Samsung. Но это не является проблемой для этого правила udev – оно соответствует всем устройствам с интерфейсами adb или fastboot независимо от их VendorID .

Когда вы перезапускаете udev, убейте сервер adb и запустите сервер adb goto android sdk путь установки и сделайте все на sudo. Затем запустите adb-устройства, чтобы решить проблему разрешения.

Мое устройство 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 

Без отсоединения

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

 lsusb 

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

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

Обратите внимание на номер шины, на которой он включен, и затем выполняйте, например, для шины 003 :

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

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

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

Самый простой способ – разрешить андроидальные отладочные группы usb-соединений по версии developer.android.com . Короче говоря, sudo apt-get install android-tools-adb сделает вас счастливыми.

В моем случае на 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/ . Этот файл содержит список поставщиков устройств, которые вы хотите подключить. Вы просто добавляете идентификатор своего устройства в новую строку (это один идентификатор в строке). Затем перезапустите adb-сервер и запустите его.

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

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

По мере того как 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

И переключился обратно на

Устройства, подобные usbfs

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 /

Надеюсь, это поможет кому-то, кто тоже натолкнется на это.