Systemy mobilne - Android



Android

1) Android

Open Handset Alliance (48 firm - Google, HTC, Intel, Motorola, T-Mobile, Nvidia...)
Jądro monolityczne (Linux)
Licencja Apache 2.0  i  GPLv2

2) Architektura


3) Aplikacje
Android dostarczany jest z pakietem podstawowych aplikacji (przeglądarka, klient e-mail, odtwarzacz muzyki, itd..)
Wszystkie aplikacje są równe - każdą aplikację wbudowaną można rozszerzyć lub zastąpić
Android Market (beta) - na razie można publikować tylko darmowe aplikacje

4) Tworzenie oprogramowania
Oficjalnie programy można pisać tylko w Javie
Android SDK - zawiera emulator, kompilator debugger, diagnostykę użycia pamięci i wtyczkę do Eclipse (jedyne wspierane IDE)
Można używać także narzędzi konsolowych
Dokumentacja i tutoriale na www.code.google.com/android

5) Android Developer Challenge
Konkurs na najbardziej innowacyjne aplikacje na Androida
Suma nagród - 10 milionów dolarów
50 projektów przeszło do drugiej fazy (25 000 dolarów na dalsze prace)
10 najlepszych zespołów dostało po 250 tysięcy dolarów
Promowano głównie aplikacje lokalizacyjne i społecznościowe

6) Tworzenie oprogramowania
Brak bezpośredniego dostępu do niższych warstw API
Android używa składni Javy, ale nie spełnia w pełni jej standardów
Wybór Javy ogranicza wielu twórców oprogramowania, ale zapewnia większą przenośność  programów
Kod w C/C++ i innych językach może być skompilowany do kodu maszynowego (niewspierane przez Google)

7) Czy to na pewno Java?
JVM posiada kilka słabych punktów, których Sun na razie nie rozwiązał
Dalvik - maszyna wirtualna zoptymalizowana dla urządzeń mobilnych (lepszy Garbage Collector, lepsza obsługa pamięci, większa wydajność)
Architektura oparta na rejestrach (większość maszyn wirtualnych to maszyny stosowe)

8) Dalvik
Nieskompresowane pliki wykonywalne .dex są zazwyczaj kilka procent mniejsze niż skompresowane pliki .jar
Pliki .dex mogą zostać dodatkowo zoptymalizowane po instalacji na urządzeniach mobilnych
Bytecode Dalvik'a nie jest kompatybilny z bytecode'm Javy
Problemy z uruchomieniem  projektów korzystających np. z JRuby czy Jython

9) Cykl życia aplikacji
Każda aplikacja uruchamia własny proces z własną instancją maszyny wirtualnej Dalvik
Czas życia procesu nie jest kontrolowany bezpośrednio przez aplikację
Zależy natomiast od ilości dostępnej pamięci i wiedzy systemu na temat istotności poszczególnych częsci aplikacji dla użytkownika

10) Bezpieczeństwo
Zapewniane przez jądro Linuxa (np. identyfikatory użytkownika i grup)
Żadna aplikacja nie posiada domyślnie praw do wykonywania operacji mogących mieć negatywny wpływ na system (np. pisania do plików innych aplikacji)
Aplikacja może zarządać przyznania praw do wykonywania takich operacji i sama może takie operacje implementować

11) Bezpieczeństwo
Każda aplikacja (pliki .apk) musi posiadać certyfikat identyfikujący jej twórcę (używane do zapewnienia współpracy pomiędzy aplikacjami, determinuje kto może mieć dostęp do określonych pozwoleń )
Przy instalacji każdemu pakietowi przydziela sie stały unikalny identyfikator (przypisuje się go później np. do plików stworzonych przez aplikację).

12) Czy to dojrzała platforma?
Część telefonół T-Mobile G1 z Androidem posiada dość poważną lukę w bezpieczeństwie
Każdy tekst wpisany do dowolnego programu pierwszoplanowego, był wysyłany do konsoli
A następnie wykonywany jako polecenie (z prawami root'a)

13) Co dalej?
Analitycy wróżą Androidowi kilka procent udziałów w rynku
Google stara się przekonać do siebie operatorów komórkowych i producentów telefonów (mniejszą wagę przykłada do reklamy platformy)
 25 % zysków od sprzedawanych aplikacji w Android Market  trafi do operatorów
Udział w zyskach z reklam wyświetlanych w wynikach wyszukiwania Google na telefonach komórkowych




14) Bibliografia

http://code.google.com/android
http://gphone.pl/
http://www.talkandroid.com
http://www.androidal.pl/
http://openhandsetmagazine.com/2007/11/running-c-native-applications-on-android-the-final-point/
http://en.wikipedia.org/wiki/Google_Android
http://blog.wired.com/gadgets/2008/11/google-fixes-an.html