Я только что получил мой новенький Wileyfox Swift - и , прежде чем положить его использовать , я хочу , чтобы oem unlock
и корень его (как я обычно делаю с новыми устройствами;) Проблема, хотя USB-отладка включена на устройстве, и соответствующая строка /etc/udev/rules.d/51-android.rules
существует , устройство не видно adb devices
.
Я знаю, что по этому сайту разбросано несколько ответов, но их либо сложно найти, либо просто охватить конкретное устройство, либо не охватить все шаги, которые мне наконец-то понадобились. Таким образом, я использую это как шанс для канонического, независимого от устройства вопроса и дам подробный ответ ниже:
Как мне увидеть и использовать мое устройство Android adb
в Linux?
Ответы:
Включить отладку по USB на устройстве
Это делается в Настройках ›Разработка . Если у вас нет этой записи в меню настроек, перейдите в « Настройки»> «О программе» , прокрутите до «Номер сборки» и вбивайте его, как обезьяну, пока ваше устройство не поздравит вас с тем, что вы стали разработчиком. Вернитесь на главную страницу меню « Настройки» , а ближе к нижней части вы увидите настройки «Разработка» (или «Разработчики»). Введите его и включите отладку по USB здесь.
Определить устройство
Для начала нам нужно узнать, как устройство идентифицируется на шине USB. Для этого, когда устройство Android НЕ подключено, возьмите оболочку и выполните команду
lsusb
. Затем подключите устройство и снова введите команду. Найди новую линию. Для Wileyfox Swift это «безымянное устройство»:Настройка правил для АБР
Теперь нам нужно число в конце предыдущей строки:
2970:2282
. Они указывают поставщика (2970) и само устройство (2282). Имея эти детали, нам нужна корневая оболочка на нашей машине Linux для редактирования (или создания, если она еще не существует)/etc/udev/rules.d/51-android.rules
файла. Там добавьте строку для вашего устройства. Следующая строка примера показывает, как выглядит Wileyfox Swift: ¹Если у вас другое устройство, замените идентификаторы поставщика и продукта на те, что вы нашли выше при запуске
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.
совета «Следуйте этому совету» (при желании установите флажок для постоянной авторизации вашего компьютера), и все готово: теперь вы можете использовать adb для доступа к вашему устройству.Обновления:
¹ Обратите внимание, что в более поздних версиях Linux синтаксис для правил UDEV немного изменился, как, например, указал jcomeau_ictx в своем комментарии. Для значений, которые мы нашли выше, это будет:
Два различия: теперь это
SUBSYSTEM
(без множественного числа), и группа изменилась сandroiddev
наplugdev
(первая не существует в последних системах, последняя существует и обычно назначается по крайней мере первому пользователю).Кроме того, вам может понадобиться добавить vendorID к вашему
~/.android/adb_usb.ini
(один идентификатор на строку в шестнадцатеричной записи):источник
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
и ввести его вручную, как вы заявили.plugdev
вместоandroiddev
). Не подтверждено, но я бы сказал, что важной частью здесь является то, что это группа, в которую входит ваш пользователь (с которым вы хотите использовать USB).SUBSYSTEM
тогоSUBSYSTEMS
,ATTR
вместоATTRS
запятой послеMODE="0666"
не уверен, что все эти изменения были необходимы, но это то, что сработало.sudo wget -O /etc/udev/rules.d/51-android.rules
из здесь работали для меня для моего Xiaomi Mi A1. Конечно, лучше учиться, но хорошо быть ленивым :)Несколько комментариев из более нового дистрибутива Linux. Fedora 29 с Nexus 5X или телефоном Nokia 7.1 (Android One).
Сначала отключите телефон, если он уже подключен.
sudo dnf install android-tools
)sudo cp /usr/share/doc/android-tools/51-android.rules /etc/udev/rules.d
)sudo udevadm control --reload-rules
)sudo systemctl restart adb
)Теперь подключите телефон и запустите
adb devices
из командной строки. Вы, вероятно, увидите устройство в списке без разрешений. Это отлично.Если его нет в списке, вам придется добавить свое устройство в файл правил udev, но для меня протестированные устройства просто работали с предопределенными правилами.
Запустите
adb shell
и, надеюсь, вы получите на телефон уведомление о безопасности, спрашивающее, хотите ли вы доверять компьютеру, выберите «Да».Если вместо этого ваш компьютер говорит «ошибка: недостаточно прав для устройства», вам нужно убедиться, что на телефоне вы установили USB-порт в режим «Передача файлов», а не «Зарядите это устройство». На Android 8.1 это находится в настройках в разделе «Подключенные устройства»> «USB».
Я заметил, что даже если у вас все работает сегодня, что завтра это может внезапно сломаться без видимой причины. Если это произойдет, сначала проверьте настройку USB-порта на устройстве, которое, возможно, вернулось обратно в режим зарядки, а если это не удастся, отмените авторизацию USB-отладки на устройстве (в настройках в разделе «Параметры разработчика»), и вы должны надеяться получить всплывающее окно. снова, когда вы бежите
adb shell
.Благодаря этому я могу запустить Android Studio и запустить на подключенном устройстве.
источник