суббота, 28 января 2012 г.

Настройка Ubuntu 11.10 для отладки Android-приложений на HTC Sensation

Вдруг меня понесло попробовать Ubuntu. После всех кругов ада для человека не знакомого ранее с линуксом, мне удалось настроить среду разработки под Android.
Надо было всё это описывать, потому что сейчас приверженцы командной строки скажут: «Что там сложного? Линукс просто создан для пользователя!». Но я приобрёл полезный опыт. Теперь я знаю что слушать, а что просто ля-ля. Биться головой об Ubuntu я вынужден из-за одного своего проекта. Посмотрим, что из этого выйдет. Обещаю не превратиться в пингвина. Теперь буду описывать всё что нагуглил для решения всяких встреченных проблем, чтобы не гуглить в следующий раз и может кому пригодиться.
Итак, у меня HTC Sensation. После настройки Eclipse Indigo я вполне могу запускать своё Android-приложение на виртуальном устройстве. Но при подключении телефона к компьютеру в диалоге «Android device chooser» я увидел устройство «????????????». Выбрать его для запуска приложения невозможно. Гугление привело меня на эту страничку. Почти помогло. Коротко напишу что понадобилось.
  1. В файл «/etc/udev/rules.d/51-android.rules» вставил следующий текст:
#HTC Sensation
SUBSYSTEM=="usb", SYSFS{idVendor}=="[0bb4]", MODE="0666"
SUBSYSTEM=="usb",ATTR{idVendor}=="[0bb4]",ATTR{idProduct}=="[0c86]",SYMLINK+="android_adb"
SUBSYSTEM=="usb",ATTR{idVendor}=="[0bb4]",ATTR{idProduct}=="[0c86]",SYMLINK+="android_fastboot"

Для это в терминале необходимо выполнить команду
sudo gedit /etc/udev/rules.d/51-android.rulesОткроется редактор с содержимым файла. В исходной ссылке предлагают скопировать текст в конец файла, у меня файл был пустой. Добавил, сохранил.
  1. Повторить то же самое с файлом «/etc/udev/rules.d/99-android.rules». Тот же текст. Не спрашивайте что это. Я не знаю. Я живу в мире магии, это просто очередное заклинание.
  2. Устанавливаем права на эти файлы. Говорят, надо. Набираем в терминале следующие строки:
sudo chmod a+r /etc/udev/rules.d/51-android.rules
sudo chmod a+r /etc/udev/rules.d/99-android.rules
  1. Перезапуск ADB. Тут автор источника немного поплыл. Мне помогло следующее заклинание в терминале:
sudo ~/android-sdk-linux/platform-tools/adb kill-server
sudo ~/android-sdk-linux/platform-tools/adb start-server
  1. Проверка. Сначала в терминале: ~/android-sdk-linux/platform-tools/adb devices
    Вопросики из названия устройства должны пропасть, название должно обрести смысл. Теперь можно запускать своё приложение на телефоне. Автор источника рекомендует перезапуститься, если не заработало.
  2. Ну и на десерт. После выключения и включения компьютера (я иногда отдыхаю, ем или сплю), устройство опять превратилось в тыкву. В вопросики. После перезапуска ADB (пункт 4) я вернул ему желаемый образ. Может не спать?


5 комментариев:

  1. Наверное, следует добавить про lsusb (то, как ты получил idvendor и idproduct). И тогда эта статья подойдёт для любого телефона :-)

    ОтветитьУдалить
    Ответы
    1. Вообще-то я украл этот текст у первоисточника. Антон, спасибо за команду! Я поднял тему и узрел откуда берутся idVendor и idProduct (если вдруг у кого не HTC Sensation). Набрал в терминале "LSUSB" и получил несколько строк, среди которых были знакомые мне крокозяблики:
      Bus 001 Device 003: ID 0bb4:0c86 High Tech Computer Corp.
      А ещё я теперь знаю, что HTC это High Tech Computer. А я всё телефон, телефон...

      Удалить
  2. Еще как вариант, это запустить adb start-server через супер пользователя, то есть root, команда будет выглядеть так "sudo adb start-server", но не очень удобно это делать каждый раз

    ОтветитьУдалить
  3. Вот официальное решение: http://developer.android.com/tools/device.html#setting-up

    После смены HTC Sensation на HTC Sensation XE только оно-то мне и помогло. Странно, потому что idVendor и idProduct должны были остаться теми же.

    ОтветитьУдалить