Każdy, kto zetknął się z pisaniem aplikacji na Androida miał pewnie styczność z jego emulatorem. Przypuszczam, że nie było/jest to miłe doświadczenie – jest on koszmarnie wolny. Ja nauczony doświadczeniem(nikłym, bo nikłym, ale jednak) przy aktualnym moim starciu z nim(dość owocnym swoją drogą) postanowiłem nie używać go. Mam telefon z tym systemem(Hero, o którym wspominałem), lecz chciałem go nie używać. Rozwiązanie, do którego doszedłem okazało się bardzo dobre.
Kiedyś wpadłem na projekt Android-x86, czyli portem Androida pod x86. Zachęcony opisem i zniechęcony dostępnością obrazów ISO tylko dla wersji 2.2 pogrzebałem dalej i znalazłem gotowe nightlybuildy tego systemu(aktualnie 2.3.4) już przystosowane do maszyn wirtualnych, czyli to, czego szukałem. Podziękować trzeba mariuz‘owi z zespołu Android-dev.ro. A więc instalujemy(tutaj znajduje się poradnik)!
Jakiś czas temu przestałem pisać projekty, które nie wymagają „zaawansowanej”(OpenGL 1.0 w górę
) grafiki na moim komputerze. Przerzuciłem się na development oparty na wirtualnych maszynach. Tak więc pisząc aplikację na Androida, jedna maszyna służy do deweloperki, druga do testowania. Dzięki temu, że system Googla wykorzystuje ADB do uruchamiania i debugowania aplikacji z komputera, jesteśmy w stanie bez większych przeszkód mieć dość wydajne środowisko.
Mając dwie wirtualne maszyny połączyłem je dodatkową kartą sieciową(„sieć wewnętrzna” w Virtual Boxie). Miałem problem z ustawieniem stałego adresu IP na Androidzie(tak szczerze powiedziawszy nadal nie wiem jak to zrobić), zamiast tego wykorzystałem dostępny w VBoxie serwer DHCP. Wywołanie jednej komendy
vboxmanage dhcpserver add --netname "nazwa naszej sieci" --ip 192.168.0.1 --netmask 255.255.255.0 --lowerip 192.168.1.1 --upperip 192.168.1.100
oraz ustawienie statycznego adresu IP na maszynie deweloperskiej rozwiązało sprawę. Android dostępny jest pod adresem 192.168.1.1. Teraz przed rozpoczęciem pracy wystarczy wywołać
adb connect 192.168.1.1
i dostajemy możliwość dostępu do telefonu przez ADB, a co za tym idzie – możemy debugować spod IDE bez włączania emulatora!
Niestety, to rozwiązanie ma kilka wad, a są to:
Jeśli nie potrzebujemy tego, albo potrzebujemy tylko dla danej funkcjonalności, którą możemy napisać z użyciem emulatora, śmiało można użyć Android-x86. Jak dla mnie działa świetnie i nie będę się katował więcej emulatorem