[ADT Eclipse + Android + VirtualBox] in Debian

Автор everloginme, 03 декабря 2012, 15:59:10

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

everloginme

Здравствуйте. Столкнулся сегодня с определенными проблемами и нашел их удобное решение.
Пост будет интересен людям, которым приходиться работать с virtualbox и тем, кто ведет разработку в Eclipse для Android. Тот кто устанавливал эмулятор андроидных устройств через AVD, тот в курсе, как медленно это работает. Как оказалось, эмулируя это дело через VirtualBox скорость намного больше. Намного! Ниже идет описание, в общих чертах, как завести гармоничный любовный треугольник - eclipse+android+virtualbox.

Я исхожу из того, что у вас уже установлен VirtualBox и Eclipse.
1. Качаем отсюда (http://www.android-x86.org/download) образ Android OS и ставим на виртуальную машину. Настройки виртуальной машины на ваше усмотрение. Создаем во время установки раздел, записываем изменения на диск, форматим его в ext3, ставим на него Android OS.

2. Я качал сборку для eeepc, в своем случае я меня резолюцию экрана под размер телефона.
В консоли пишем, к примеру:
VBoxManage setextradata "android" "CustomVideoMode1" "480x720x16"
где, "android" имя машины, а "480x720x16" параметры экрана.

3. Теперь надо изменить способ загрузки оси андроида, чтобы он понял в каком режиме отображаться.
Извлекаем носитель из виртуальной машины (установочный образ), запускаем машину, входим в отладочный режим и монтируем загрузочный раздел с разрешением на запись.
mount -o remount,rw /mnt

Далее редактируем menu.lst в Grub:
vi /mnt/grub/menu.lst
добавляя туда еще один способ загрузки:
title Android Smart Start
kernel /android-2.3-RC1/kernel quiet root=/dev/ram0 androidboot_hardware=generic_x86 acpi_sleep=s3_bios, s3_mode DPI=240 UVESA_MODE=480x720 SRC=/android-2.3-RC1
initrd /android-2.3-RC1/initrd.img

И делаем timout поменьше, дабы не ждать и не жать enter постоянно. Я поставил единицу, успеваешь войти в debug режим, но и не ждешь долго.
Сохраняем изменения и выходим.

4. Настройка соединения
Заходим в свойства сети данной машины, указываем тип подключения - Сетевой мост, имя - eth0 и разрешаем соединению все. После запуска в настройках телефона, в Ethernet конфигурации указываем интерфейс eth0 и DHCP. После чего переходим на телефоне в консольный режим (нажав Alt+F1) и смотрим ip адрес устройства командой netcfg (вернуться в графический режим можно по Alt+F7). У меня адрес 192.168.0.108, у вас скорее всего другой. Запоминаем свой IP. Заходим в Android SDK. В папке *sdk/platform-tools будет утилита adb. При запущенной виртуальной машине, запуск утилиты с аргументами -connect XXX.XXX.XXX.XXX соединит ADT c виртуальным устройством. Останеться лишь в свойствах проекта указать чтобы запуск приложения шел на этом устройстве и все.

5. Уменьшаем количество телодвижений.
Постоянно запускать VirtualBox-ы, что то там тырцать и линковать устройство...это не линукс вэй ;)
Пишем простенькие скрипты.

rundroid
#!/bin/bash
VBoxManage startvm "android"
sleep 10
cd /opt/android-sdk/sdk/platform-tools/
./adb connect 192.168.0.108


stopdroid
#!/bin/bash
cd /opt/android-sdk/sdk/platform-tools/
./adb disconnect 192.168.0.108 
VBoxManage controlvm "android" poweroff



Здесь все просто. rundroid - запуск виртуальной машины, без запуска менеджера виртуальных машин. Ждем пока машина загрузится и получит свой адрес. После этого соединяем ее с ADT. Время задержки ставьте на свое усмотрение. ОБЯЗАТЕЛЬНО ОСВОБОЖДАЙТЕ СОЕДИНЕНИЕ! Выключение машины не освобождает соединение. Иначе при запуске, каждый раз, eclipse будет виснуть дожидаясь ответа от adb. Для этого я написал второй скрипт stopdroid. Для удобства все это дело я зачемодил +х и кинул в /usr/bin

Картинка, чтобы скучно не было:
http://imglink.ru/show-image.php?id=a063631625e96385ec56eceb2de956f7

И ссылка на видео: http://youtu.be/6_qCV2aiJNQ
Надеюсь поможет, т.к. у меня наболело, но наконец решилось. Удачи вам.