Включить отладку по 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