W życiu każdego mężczyzny przychodzi moment, kiedy chce się porzucić dobrze znane okolice i udać się w dzicz i nieznane. Wakacje są dobrym momentem na takie wyprawy. Wakacyjna, programistyczna wyprawa w moim przypadku doprowadziła mnie do Android SDK – pakietu programistycznego dla telefonów z systemem Google.
Krótko mówiąc, chcąc nauczyć się czegoś nowego, postanowiłem napisać aplikację na swój telefon. Ponieważ ostatnimi czasy próbowałem nieco handlować na giełdzie (jeszcze trochę i może uda mi się w końcu wyjść na zero 😉 ), pomyślałem o programie umożliwiającym takowy handel z poziomu telefonu komórkowego. Plan pracy zakładał kilka etapów, pierwszym z nich było utworzenie programu wyświetlającego aktualne notowania – i to się już udało.
Android SDK oparty jest o środowisko Eclipse. Cały pakiet ściąga się w postaci paczki, za darmo, ze strony Android Developers. Instalacja jest bezproblemowa, po ściągnięciu i zainstalowaniu Android SDK należy wybrać które z wersji Androida chcemy emulować, a pakiet dociągnie sobie potrzebne obrazy. Wszystko jest spójne, pod Linuksem działa bardzo fajnie i widać, że jest dopracowane. Eclipsa można lubić lub nie lubić, ja lubię (od kiedy mam 4 GB RAM-u, hehe). Podpowiadanie składni, uruchamianie aplikacji na emulatorze za pomocą jednego guzika, automatyczne kreatory pozwalające wyeksportować gotowy program w formie nadającej się do przesłania do Android Market, podgląd tworzonego aktualnie interfejsu – naprawdę przyjemne i ułatwiające życie rzeczy.
Androidowe aplikacje pisze się w Javie. Java jaka jest każdy widzi – z jednej strony rozwlekła składnia, nie bardzo czytelny kod, brak kilku przydatnych rzeczy takich jak przeciążanie operatorów, czy argumenty domyślne oraz – co najgorsze – ogromne konfiguracyjne XML-e. Z drugiej strony – tak naprawdę nie ma rozsądnej alternatywy. C++ jest jeszcze straszniejsze, a Python czy Ruby (mimo ogromnej sympatii, zwłaszcza dla tego drugiego) ze swoim dynamicznym typowaniem chyba jednak nie nadają się do tego, by być głównym językiem przenośnej platformy. Androidowa Java daje nam do dyspozycji kawałek dobrze znanego pakietu java.*
(brakuje tu jednak np. klas obsługujących grafikę) oraz specyficzny pakiet android.*
, który pozwala komunikować się z systemem, wyświetlać GUI, itd. Google nie troszczy się zbytnio o zachowanie standardów i nie uświadczymy w Androidzie rzeczy znanych z Javy SE czy ME.
Interfejs aplikacji opisuje się za pomocą XML-i. Występują w nich znaczniki opisujące pewne kontenery (na przykład LinearLayout
czy TableLayout
) oraz znaczniki oznaczające konkretne elementy (TextViewButton
). Ustawiania elementów można nauczyć się dość szybko, pomaga tu bardzo wspomniana już funkcja podglądu. Istnieje nawet możliwość projektowania WYSIWYG, ale pozostawia ona jeszcze sporo do życzenia i lepiej edytować plik samemu. Myślę, że dla każdego kto miał do czynienia z HTML-em, projektowanie interfejsu aplikacji będzie dość intuicyjne.
Sama aplikacja składa się z aktywności, usług, dostawców treści oraz, hm, odbiorców (broadcast receiver). Aktywność jest odpowiednikiem okna. Usługa pozwala wykonać pewne operacje niezależnie od otwartych aktywności. Dostawca treści pozwala wykorzystywać innym aplikacjom wytworzone dane, zaś odbiorca pozwala reagować na różne zdefiniowane lub systemowe zdarzenia (na przykład: „jest już 12:00!”, albo: „Marek dzwoni”). Szczegółowy opis tych elementów znajduje się już na milionie stron, więc nie ma co się rozpisywać. Ważnym elementem każdej aplikacji jest także jakiś magazyn danych. W przypadku Androida każda aplikacja może w prosty sposób utworzyć swoją bazę SQLite. Nie ma co prawda żadnego standardowego ORM-a, ale od pisania surowych SQL-i chroni nas rozbudowana klasa SQLiteQueryBuilder
.
Wszyscy wiedzą, że napisać program to jeszcze nic – trzeba go jeszcze zmusić do poprawnego działania. Android SDK daje możliwość debuggowania za pomocą Eclipsa (można ustawiać breakpointy, podglądać zawartość zmiennych itd). Warto też mieć uruchomioną gdzieś w tle aplikację adb logcat
. Wyświetla ona logi systemowe oraz (co ważne) treści wyjątków. Można również logować swoje błędy przy użyciu sympatycznej klasy Log
i jej statycznych metod (polecam Log.wtf()
).
A gdy już utworzymy naszą aplikację której pragną miliony, wystarczy zapłacić $25 Google’owi i już można publikować program w Android Market. Niestety, Polska traktowana jest tu nieco po macoszemu – możemy zamieszczać w sklepie jedynie aplikacje darmowe.
Ogólnie fajna zabawa, można zacząć od razu, nie trzeba mieć nawet telefonu z Androidem (dzięki wbudowanym emulatorom). Udział takich komórek w rynku systematycznie rośnie i myślę, że mimo kilku problemów, warto się tą platformą zainteresować.
Świetna aplikacja! A ja mam pytanie – skad ciagniete sa notowania?
Z mojego serwera. A na moim serwerze biorą się z konta DM PKO BP (dzięki RPromakowi – https://github.com/trekawek/RPromak/).