Как я могу получить мое устройство, обнаруженное ADB в Linux?

18

Я только что получил мой новенький Wileyfox Swift - и , прежде чем положить его использовать , я хочу , чтобы oem unlockи корень его (как я обычно делаю с новыми устройствами;) Проблема, хотя включена на устройстве, и соответствующая строка /etc/udev/rules.d/51-android.rulesсуществует , устройство не видно adb devices.

Я знаю, что по этому сайту разбросано несколько ответов, но их либо сложно найти, либо просто охватить конкретное устройство, либо не охватить все шаги, которые мне наконец-то понадобились. Таким образом, я использую это как шанс для канонического, независимого от устройства вопроса и дам подробный ответ ниже:

Как мне увидеть и использовать мое устройство Android adbв Linux?

Иззи
источник
Я всегда открыт для критики - но негативное мнение без объяснения трудно интерпретировать. Так, пожалуйста, объясните, что должно быть улучшено в вопросе? Я обещаю не злоупотреблять моими модными полномочиями для наказания :)
Иззи
3
Я полагаю, что избиратель не осознавал, что вы разместили вопрос, чтобы самостоятельно ответить на него (не должен был заметить вас в ответе). Поскольку в вопросе или комментариях нет ни единого намека на то, что он был опубликован с целью автоответа, избиратель мог возразить против второго до последнего абзаца (показывает лень, если его читать в контексте любого обычного пользователя и его вопроса). Я не могу думать ни о какой другой причине на данный момент.
Повелитель огня
1
@ Firelord звучит убедительно (немного отредактировал вопрос, чтобы избежать дополнительных неудачных шагов). Но тогда этот пользователь должен был проголосовать против. Или я что-то там тоже пропустил? ;)
Иззи

Ответы:

24

Включить отладку по USB на устройстве

Это делается в Настройках ›Разработка . Если у вас нет этой записи в меню настроек, перейдите в « Настройки»> «О программе» , прокрутите до «Номер сборки» и вбивайте его, как обезьяну, пока ваше устройство не поздравит вас с тем, что вы стали разработчиком. Вернитесь на главную страницу меню « Настройки» , а ближе к нижней части вы увидите настройки «Разработка» (или «Разработчики»). Введите его и включите отладку по USB здесь.

Определить устройство

Для начала нам нужно узнать, как устройство идентифицируется на шине USB. Для этого, когда устройство Android НЕ подключено, возьмите оболочку и выполните команду lsusb. Затем подключите устройство и снова введите команду. Найди новую линию. Для Wileyfox Swift это «безымянное устройство»:

Bus 004 Device 003: ID 2970:2282

Настройка правил для АБР

Теперь нам нужно число в конце предыдущей строки: 2970:2282. Они указывают поставщика (2970) и само устройство (2282). Имея эти детали, нам нужна корневая оболочка на нашей машине Linux для редактирования (или создания, если она еще не существует) /etc/udev/rules.d/51-android.rulesфайла. Там добавьте строку для вашего устройства. Следующая строка примера показывает, как выглядит Wileyfox Swift: ¹

SUBSYSTEMS=="usb", ATTRS{idVendor}=="2970", ATTRS{idProduct}=="2282", MODE="0666" GROUP="androiddev", SYMLINK+="android%n"

Если у вас другое устройство, замените идентификаторы поставщика и продукта на те, что вы нашли выше при запуске lsusb. Краткое объяснение строки:

  • SUBSYSTEMS=="usb": очевидно это правило только для USB;)
  • ATTRS{idVendor}=="2970": идентификатор поставщика устройства, для которого это правило
  • ATTRS{idProduct}=="2282": идентификатор устройства
  • MODE="0666": разрешения, которые должен получить узел устройства. 0666Это довольно слабый способ - дать каждому пользователю в вашей системе права на чтение и запись - поэтому, если вас это беспокоит, вы можете попробовать заменить его на 0660(предоставление только владельцу и группе права на чтение и запись и запретить все остальным).
  • GROUP="androiddev": к какой группе должен принадлежать узел устройства. Это должна быть группа, к которой относятся пользователи, предназначенные для работы с устройством.
  • SYMLINK+="android%n": просто дать узлу красивое имя, чтобы вам было легче его найти /dev(в моем случае позже оно показывалось как /dev/android5)

Это правило вошло /etc/udev/rules.d/51-android.rules, мы должны сказать, udevчтобы использовать его. Самый безопасный способ (рядом с перезагрузкой;) - перезапуск udevсервиса. В зависимости от вашего дистрибутива Linux это можно сделать либо через, service udev restartлибо /etc/init.d/udev restart.

Сделано это, оставить корневую оболочку. Отключите и снова подключите устройство Android, попробуйте еще adb devicesраз. Сейчас появилось большинство устройств, но не Wileyfox Swift - который явно хочет дополнительных объятий. Если вы находитесь в такой ситуации, откройте (или создайте, если он не существует) файл ~/.android/adb_usb.iniи добавьте в него одну строку, назвав поставщика, с которым вы узнали lsusbвыше; для Свифта это будет 0x2970(да, здесь вам нужно поставить префикс, 0xчтобы указать, что это шестнадцатеричное число). Затем перезапустите сервер ADB: adb kill-server && adb start-server. Отключите и снова подключите устройство. Теперь adb devicesнадо это увидеть.

Подключение устройства

Вы могли заметить, adb devicesсказал вам что-то вроде 0123456789ABCDEF unauthorized. Это нормально и для вашей (устройств) безопасности: ваш компьютер должен быть сначала авторизован для доступа к устройству. Так что просто выпустите adb shellсейчас - который будет прекращен с помощью error: device unauthorized. Please check the confirmation dialog on your device.совета «Следуйте этому совету» (при желании установите флажок для постоянной авторизации вашего компьютера), и все готово: теперь вы можете использовать для доступа к вашему устройству.


Обновления:

¹ Обратите внимание, что в более поздних версиях Linux синтаксис для правил UDEV немного изменился, как, например, указал jcomeau_ictx в своем комментарии. Для значений, которые мы нашли выше, это будет:

SUBSYSTEM=="usb", ATTR{idVendor}=="2970", ATTR{idProduct}=="2282", MODE="0666", GROUP="plugdev", SYMLINK+="android%n"

Два различия: теперь это SUBSYSTEM(без множественного числа), и группа изменилась с androiddevна plugdev(первая не существует в последних системах, последняя существует и обычно назначается по крайней мере первому пользователю).

Кроме того, вам может понадобиться добавить vendorID к вашему ~/.android/adb_usb.ini(один идентификатор на строку в шестнадцатеричной записи):

# ANDROID 3RD PARTY USB VENDOR ID LIST
# 1 USB VENDOR ID PER LINE.
0x2970
Иззи
источник
1
формат для правила udev в моей системе Jessie был другим: jcomeau@aspire:~$ tail -n 1 /etc/udev/rules.d/99-android.rules SUBSYSTEM=="usb", ATTR{idVendor}=="0e8d", ATTR{idProduct}=="201d", MODE="0666", GROUP="plugdev", SYMLINK+="android%n" jcomeau@aspire:~$ cat ~/.android/adb_usb.ini # ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT. # USE 'android update adb' TO GENERATE. # 1 USB VENDOR ID PER LINE. 0x0e8d мне пришлось проигнорировать совет по запуску android update adbи ввести его вручную, как вы заявили.
jcomeau_ictx
@jcomeau_ictx спасибо за отзыв! Насколько я вижу из вашего комментария, он просто использует другую группу пользователей ( plugdevвместо androiddev). Не подтверждено, но я бы сказал, что важной частью здесь является то, что это группа, в которую входит ваш пользователь (с которым вы хотите использовать USB).
Иззи
1
Кроме SUBSYSTEMтого SUBSYSTEMS, ATTRвместо ATTRSзапятой после MODE="0666" не уверен, что все эти изменения были необходимы, но это то, что сработало.
jcomeau_ictx
О, спасибо, пропустил эти маленькие, @jcomeau_ictx - хорошая мысль!
Иззи
Для Linux Non Знающие люди sudo wget -O /etc/udev/rules.d/51-android.rulesиз здесь работали для меня для моего Xiaomi Mi A1. Конечно, лучше учиться, но хорошо быть ленивым :)
beeshyams
0

Несколько комментариев из более нового дистрибутива Linux. Fedora 29 с Nexus 5X или телефоном Nokia 7.1 (Android One).

Сначала отключите телефон, если он уже подключен.

  1. Установите Android-инструменты, которые будут поставлять ADB ( sudo dnf install android-tools)
  2. Скопируйте правила udev ( sudo cp /usr/share/doc/android-tools/51-android.rules /etc/udev/rules.d)
  3. Перезагрузить правила udev ( sudo udevadm control --reload-rules)
  4. Перезапустите ADB, чтобы быть уверенным ( sudo systemctl restart adb)

Теперь подключите телефон и запустите adb devicesиз командной строки. Вы, вероятно, увидите устройство в списке без разрешений. Это отлично.
Если его нет в списке, вам придется добавить свое устройство в файл правил udev, но для меня протестированные устройства просто работали с предопределенными правилами.

Запустите adb shellи, надеюсь, вы получите на телефон уведомление о безопасности, спрашивающее, хотите ли вы доверять компьютеру, выберите «Да».
Если вместо этого ваш компьютер говорит «ошибка: недостаточно прав для устройства», вам нужно убедиться, что на телефоне вы установили USB-порт в режим «Передача файлов», а не «Зарядите это устройство». На Android 8.1 это находится в настройках в разделе «Подключенные устройства»> «USB».

Я заметил, что даже если у вас все работает сегодня, что завтра это может внезапно сломаться без видимой причины. Если это произойдет, сначала проверьте настройку USB-порта на устройстве, которое, возможно, вернулось обратно в режим зарядки, а если это не удастся, отмените авторизацию USB-отладки на устройстве (в настройках в разделе «Параметры разработчика»), и вы должны надеяться получить всплывающее окно. снова, когда вы бежите adb shell.

Благодаря этому я могу запустить Android Studio и запустить на подключенном устройстве.

обкрадывать
источник