Spotkanie z androidem

Data publikacji: 2011-03-01 , Wyświetleń: 1250

Ostatnimi czasy miałem okazje popisać trochę kodu aplikacji na androida. Muszę przyznać, że  byłem zaskoczony tym co zobaczyłem. Nie miałem wcześniej za bardzo styczności z systemem od Googl'a. Wiedziałem tylko, że to "jakiś tam" linux. Moje ogólne przekonanie było takie: "Zmulony system i co ja bym miał tam robić", w końcu telefon ma dzwonić i pisać SMSy więc po co na nim coś więcej?

 

Instalacja środowiska

Do zaczęcia zabawy niezbędne będzie nam SDK Androido'we. Ale przed tym konieczna będzie instalacja SDK Javy (JDK). Bez tego ani rusz. Pamiętajmy żeby ustawić zmienną środowiskową JAVA_HOME oraz dodać katalogi "bin" do domyślnej ścieszki wyszukiwania. Sam instalator nie zawiera w sobie nic specjalnego, praktycznie to program do pobierania paczek z obrazami różnych wersji środowiska. Mamy do wyboru wersje od 1.5 do 3.0, oczywiście nic nie stoi na przeszkodzie aby zainstalować sobie je wszystkie ;-)

Okno z zainstalowanymi pakietami

Jak już pościągamy sobie wszystko co nam będzie potrzebne tworzymy sobie wirtualny obraz urządzenia.

Lista wirtualnych urządzeń

Podczas tworzenia urządzenia mamy sporo możliwości do wyboru, praktycznie sprowadza się to do wybrania wersji systemu oraz potrzebnych nam parametrów. Nie ma się co nad tym rozwodzić bo są to mało istotne w tym momencie rzeczy.

 Okno tworzenia wirtualnego urządzenia

Ja wybrałem wersję systemu 1.6 tak aby wiedzieć jak to wygląda na starszych urządzeniach - na nowszych nie będzie problemu z ich uruchamianiem takiego programu.

 

Pierwsze uruchomienie

Z listy wybieramy nasze "urządzonko" i dajemy "Start". I w tym miejscu czeka nas niezły zonk. Obraz jest uruchamiany dobrych parę chwil. Praktycznie jest to niezależne od sprzętu. Zarówno na mocnej jak i słabej maszynie trwa to wieczność. Uruchomiony obraz wygląda tak:

Uruchomione środowisko androida

Do dyspozycji mamy praktycznie środowisko 1:1, są klawisze menu, klawiatura. Wszystko co normalnie na telefonie robimy "paluchem" tutaj robi się to myszką. Na pewno rzuci się w oczy to, że całość chodzi "ociężale" - no ale w końcu to tylko emulator.

No to pierwsze koty za płoty, coś się dzieje, coś się uruchomiło, jest coś żywego. Teraz pasowało by coś uruchomić.

 

Środowisko programistyczne

Do wyboru mamy parę możliwości:

  • Eclipse
  • NetBeans
  • Zwykły edytor tekstowy + konsola

W sieci na pewno znajduje sie więcej ale już nie szukałem niczego więcej, wybrałem Eclipse jako znane mi już wcześniej. Ściągamy sobie instalkę (dla javy) i jeżeli dobrze ustawiliśmy JAVA_HOME i domyślne ścieżki to wszystko uruchomi się bez problemu.

Ważne: zarówno JDK jak i Eclipse muszą być tej samej wersji "bitowe" - czyli 32 albo 64.

Ja wybrałem wersję 32 bitową ze względu na inne zależności w systemie.

Kolejnym krokiem jest zainstalowanie SDK androida w Eclipse. W tym celu wybieramy menu "Help" -> "Install new software" i klikamy przycisk "Add". Wpisuje tam jakąś własną nazwę (np: android) i klikamy link: https://dl-ssl.google.com/android/eclipse/. Potem to już tylko parę razy "Next" i parę chwil czekania aż wszystko się pościąga. Restart środowiska i można pisać ;-)

 

Przykładowa aplikacja

Z menu "File" wybieramy "New" -> "Other..." (Ctrl +N). Z drzewka "Android" -> "Android project"

Okno tworzenia projektu

W kolejnym okienku wybierzmy sobie aby stworzyło nam projekt na podstawie istniejącego przykładu:

Okno tworzenia projektu z przykładu

Jeżeli nie mamy otwartego jeszcze okna ze środowiskiem androida to otwórzmy je. Chwile to zajmie więc można iść zrobić sobie coś do picia ;-) Teraz w Eclipse z menu wybieramy "Run" -> "Run". Pokaże się okienko dialogowe w którym wybieramy, że chcemy uruchomić aplikcję na androida.

Okno wyboru uruchomienia aplikacji

Jeżeli wszystko wcześniej było skonfigurowane ok to Eclipse samo odnajdzie uruchomiony obraz emulatora i wyśle do niego skompilowaną aplikację. Na konsoli pojawi nam się tekst podobny do tego:

[2011-03-01 11:05:03 - HelloActivity] ------------------------------
[2011-03-01 11:05:03 - HelloActivity] Android Launch!
[2011-03-01 11:05:03 - HelloActivity] adb is running normally.
[2011-03-01 11:05:03 - HelloActivity] Performing com.example.android.helloactivity.HelloActivity activity launch
[2011-03-01 11:05:03 - HelloActivity] Automatic Target Mode: using existing emulator 'emulator-5554' running compatible AVD 'titanium_2_HVGA'
[2011-03-01 11:05:03 - HelloActivity] WARNING: Application does not specify an API level requirement!
[2011-03-01 11:05:03 - HelloActivity] Device API version is 4 (Android 1.6)
[2011-03-01 11:05:04 - HelloActivity] Application already deployed. No need to reinstall.
[2011-03-01 11:05:04 - HelloActivity] Starting activity com.example.android.helloactivity.HelloActivity on device emulator-5554
[2011-03-01 11:05:06 - HelloActivity] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.android.helloactivity/.HelloActivity }

U mnie wyświetlił się komunikat z ostrzeżeniem że emulator to wersji 1.6 w aplikacji nie zostało określone jakiej wersji SDK należy użyć. Nie ma się co tym przejmować gdyż przykładowy program jest tak banalny że uruchomi się nawet na kalkulatorze ;-)

Naszym oczom powinno ukazać się coś takiego:


 Uruchomiona aplikacja

Cały program to nic innego jak kontrolka edycji tekstu. Kod głowny programu nie jest jakiś imponujący. Ładowany jest widok zapisany w pliku XML. Layout ten możemy tworzyć w trybie WYSWIG ale czasami jest to mało wygodne i nie obejdzie sie bez grzebania w kodzie pliku XML.

Widok tworzenia layout'u

Kod jaki jest spinany z tym widokiem:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Set the layout for this activity.  You can find it
        // in res/layout/hello_activity.xml
        setContentView(R.layout.hello_activity);
}

Środowisko posiada sporo widoków i layoutów (listy, gridy, tabelki, obrazy, pola formularza itp). Jest tych elementów naprawdę sporo - a się w czym wybierać. Dodatkowo elementy mogą być jeszcze skórowane, spinane w jeden theme. Główny mechanizm wczytywania nowego widoku to tzw zmiana activity (obszaru aktywności) - coś w stylu przełączania aktywnego panelu/kontekstu.

Zapowiada się wiele nieprzespanych nocy ;-)

Tagi: android, java