Включить отладку по 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.
совета «Следуйте этому совету» (при желании установите флажок для постоянной авторизации вашего компьютера), и все готово: теперь вы можете использовать adb для доступа к вашему устройству.
Обновления:
¹ Обратите внимание, что в более поздних версиях 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