Эта простая инструкция поможет подключить обычные физические android-устройства в режиме USB debugging mode к среде разработки в Ubuntu. Тестирование приложения на реальном устройстве гораздо продуктивнее и эта инструкция расскажет как сделать это на устройстве, без дополнительных утомительных действий. Достаточно просто запустить приложение в среде разработки Android Studio или Eclipse и оно автоматически стартует на устройстве. С выходом новых карт Google Maps API v2 для ОС Android, это стало весьма актуально, т.к. на данный момент не получится полноценно использовать Google Play Services на эмуляторе.
Прежде чем начать подключать устройство к системе, следует включить режим USB debugging на самом смартфоне или планшете, это включается в меню:
Android 3.2 и более ранние версии:
Settings > Applications > Development
Android 4.0 и выше:
Settings > Developer options
ВАЖНО: В Android 4.2 и выше, Developer options скрыто по умолчанию. Для активации опции нужно зайти в меню Settings > About phone и нажать на Build number семь раз. После этого следует вернуться в предыдущий пункт Developer options.
Теперь начнём, добавим правило работы с нужным нам USB устройством, для этого создадим следующий файл:
sudo touch /etc/udev/rules.d/51-android.rules
Далее откроем файл на редактирование:
sudo nano /etc/udev/rules.d/51-android.rules
Добавим в файл следующюю строку с атрибутами производителя устройства и доступа к устройствам на уровне системы:
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"
ВАЖНО: четырёхсимвольное значение параметра idVendor (0bb4) должно совпадать с идентификатором производителя устройства из таблицы USB Vendor IDs ниже.
Company | USB Vendor ID |
---|---|
Acer | 0502 |
ASUS | 0b05 |
Dell | 413c |
Foxconn | 0489 |
Fujitsu | 04c5 |
Fujitsu Toshiba | 04c5 |
Garmin-Asus | 091e |
18d1 | |
Haier | 201E |
Hisense | 109b |
HTC | 0bb4 |
Huawei | 12d1 |
Intel | 8087 |
K-Touch | 24e3 |
KT Tech | 2116 |
Kyocera | 0482 |
Lenovo | 17ef |
LG | 1004 |
Motorola | 22b8 |
MTK | 0e8d |
NEC | 0409 |
Nook | 2080 |
Nvidia | 0955 |
OTGV | 2257 |
Pantech | 10a9 |
Pegatron | 1d4d |
Philips | 0471 |
PMC-Sierra | 04da |
Qualcomm | 05c6 |
SK Telesys | 1f53 |
Samsung | 04e8 |
Sharp | 04dd |
Sony | 054c |
Sony Ericsson | 0fce |
Sony Mobile Communications | 0fce |
Teleepoch | 2340 |
Toshiba | 0930 |
ZTE | 19d2 |
Идентификатор может быть не таким однозначным, например часы Sony Smartwatch 3 имеют идентификатор 0fce, что соответствует вендору Sony Mobile Communications.
Установим нужные права на только что созданный файл:
sudo chmod a+r /etc/udev/rules.d/51-android.rules
Теперь подключим или переподключим наше устройство к порту USB и перейдём в каталог platform-tools в Android SDK. В моём случае он располагается в директории /opt:
cd /opt/android-sdk-linux/platform-tools
если установлен Android Studio Bundle, то путь может быть таким:
cd /opt/android-studio/sdk/platform-tools
И выполним в консоли такой код:
adb devices
В выводе должны отобразиться устройства виртуальные и физические. Идентификатор физического устройства похож на:
1234567890ABCDEF device
Если появляется ошибка «adb: команда не найдена», то нужно уствновить пакет:
sudo apt-get install android-tools-adb
При ошибке: adb: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
sudo apt-get install lib32stdc++6 lib32z1 lib32z1-dev
Последний шаг, настройка исходного кода приложения, а именно файла AndroidManifest.xml. Нужно просто добавить параметр android:debuggable в тэг <application>, например:
<application
android:icon="@drawable/icon"
android:label="@string/app_name"
android:debuggable="true" />
ВАЖНО: перед выпуском приложения, параметр android:debuggable следует удалить.
Теперь при запуске проекта в Android Studio или Eclipse, будет предлагаться передать его на физическое устройство или на эмулятор. После выбора первого — проект стартует на смартфоне.
Инструкция написана на основе документации Using Hardware Devices.