Kis Gergely MattaKis Consulting Fejlesztői szemmel
Workshop kedvcsináló Megbeszélés a honosítás projektről A különböző magyar Android oldalak bemutatása Ismerkedés a közösség tagjaival Kötetlen beszélgetés Kérdések és válaszok Workshop terem az előadás után
Mi az Android? Szoftverplatform mobil eszközökhöz Nyílt forráskódú Linux kernelre épül Java nyelven írhatók rá alkalmazások Androidot futtató eszközök Mobiltelefonok Set top boxok Netbookok
Androidos mobiltelefonok Elérhető eszközök HTC Dream T-Mobile G1 ADP1 HTC Hero T-Mobile G2 Touch HTC Magic T-Mobile MyTouch 3G Samsung Galaxy Fejlesztés alatt álló eszközök HTC Tattoo Huawei 8230 T-Mobile Pulse LG Etna Motorola Cliq Huawei 8220
Miben más az Android? Nem a megszokott beágyazott Linux irányt követi Saját könyvtárstruktúra Saját komponensrendszer (Binder) Saját futtatókörnyezet Saját segédprogramok (pl. init) Az Android nem GNU / Linux!
Android Architektúra
Alapkönyvtárak Libc / Bionic BSD licencelt, beágyazott eszközökre optimalizált rendszerkönyvtár Média könyvtárak OpenCORE keretrendszer, sokféle Codec Surface Manager Képernyő kezelés, 2D és 3D grafika kompozitálás LibWebCore WebKit alapú böngészőmotor 2D és 3D (OpenGL ES) könyvtárak FreeType, SQLite stb.
Android futtatókörnyezet Dalvik virtuális gép Regiszteralapú VM Saját bytekód formátum a memóriahasználat minimalizálásához Beágyazott rendszerekre optimalizált Kihasználja a Linux lehetőségeit (mmap, threading) Saját folyamatmodell (az egyes alkalmazások külön folyamatként futnak, saját, egyedi felhasználóval)
Az alkalmazások anatómiája Activity Egy képernyő egy programban, amivel a felhasználó valamilyen tevékenységet végezhet Services Háttérben futó szolgáltatásokat nyújthat, pl.: médialejátszás, adatbázis elérés stb. Broadcast Receivers Reagál rendszereseményekre Nincs saját felülete, de indíthat egy Activity-t, vagy megjeleníthet egy értesítést a Notification Manager segítségével
Az alkalmazások anatómiája (2) Content Providers Adatokat tesz elérhetővé más alkalmazások számára. Csak a kívánt adatok leírását kell megadni, a rendszer megkeresi a megfelelő alkalmazást. Intent: Komponensek aktiválása Aszinkron üzenet, amely tartalmazza, hogy mit szeretne tenni a felhasználó A rendszer megkeresi a legmegfelelőbb komponenst, és elindítja Ezzel a módszerrel az összes komponens cserélhető, akár a főképernyő is
App Widgetek A főképernyőn jelennek meg Beállítható, hogy milyen gyakran frissüljenek (energiatakarékosság) Gyorsan elérhető funkciók
Fejlesztőkörnyezet Eclipse támogatás Android projekt (automatikus resource fájl generálás) Debugger integráció, rendszernapló hozzáférés Közvetlen debugolás valódi eszközön Emulátor QEMU alapú Kényelmes használni Támogatott platformok Linux, Windows, Mac OSX
Android 1.6 újdonságai (1) Gyorskereső (Quick Search Box) Virtuális magánhálózat (VPN) támogatás Akkumulátor felhasználás jelző
Android 1.6 újdonságai (2) Akadálymentesítés támogatása A fejlesztők pluginekkel bővíthetik a rendszert Szövegfelolvasó motor Több képernyőfelbontás támogatása Gesztusok támogatása
NDK Native Development Kit Lehetővé teszi natív könyvtárak fejlesztését és integrálását az alkalmazásokba Az integráció szabványos JNI felületen történik Támogatott API-k (1.6-os verziótól) Libc, libm, libz Liblog Android naplózás OpenGL ES Minimális C++ támogatás
Az Android 2.0 újdonságai Még több felbontás támogatása Bluetooth támogatás Több felhasználói fiók támogatása a szinkronizációs alrendszerben A fejlesztők új szinkronizációs modulokat írhatnak Exchange támogatás A több forrásból érkező üzenetek egy Inboxban megtekinthetők
Az Android 2.0 újdonságai (2) Továbbfejlesztett kamera támogatás Jobb virtuális billentyűzet HTML5 támogatás a böngészőben Adatbázis Offline oldalak cachelése Geolocation API <video> tag
Gyakorlati bemutató - PreziMote Az alkalmazásfejlesztés bemutatása gyakorlati példán keresztül (PreziMote) Eclipse használata a fejlesztésben Natív komponensek használata Debugolás a valódi eszközön
Android Open Source Project Webcím: http://source.android.com Letölthető a forráskód, amelyből működő emulátor, kernel és felhasználói programok fordíthatók Szkriptek segítségével kinyerhetők a HTC Dream telefonokból a zárt kódú, nem terjeszthető binárisok, így telefonon futó változat is építhető. Licenc Apache 2.0 Bizonyos esetekben BSD (Bionic) Kivételes esetekben GPL / LGPL
Open Handset Alliance Az Android platformot támogató üzleti szövetség
Android Open Source Project (2) Kihívások Nehezen összeegyeztethetők a gyártók és a szabad szoftveres közösség céljai A fejlesztői verziók nem tesztelhetők hardveren, mivel a bináris komponensek csak a már kiadott verziókhoz elérhetők Emiatt kicsi a közösség mérete Ami jól működik CM és build rendszer Portolás más platformokra
Android Open Source Project (3) A CyanogenMod botrány A nem hivatalos ROM-okat a Google nem hivatalosan támogatja A felszólítás a jogosulatlanul terjesztett zárt kódú alkalmazások miatt érkezett Android 2.0 Már megjelent az SDK, de még nem érhető el a forráskód A hírek szerint még egyes OHA tagok sem férnek hozzá Nincs platform útiterv, nehéz tervezni
AOSP Fejlesztés 1 oldalban Hozzávalók: Ubuntu 8.04, Git, Repo Letöltés: http://source.android.com repo init -u git://android.git.kernel.org/platform/manifest.git repo sync make repo start my-killer-feature fejlesztés fordítás tesztelés git commit -m Értelmes logbejegyzés repo upload
AOSP Code Review Gerrit: http://r.android.com
Külső open-source projektek Nem hivatalos ROM-ok A legismertebb: CyanogenMod AOSP-re és különböző patchekre épülnek Probléma: a zárt kódú hardverdriverek nem szabadon terjeszthetők Nagyon fragmentált, sok pici projekt Open Android Alliance http://openandroidalliance.org/ Célja, hogy összefogja a különböző projekteket
Külső open-source projektek (2) Új hardver platformok portjai: MIPS: http://www.mipsandroid.org OMAP: http://elinux.org/android_on_omap x86: http://android-x86.org OpenMoko FreeRunner A patchek nem jutnak vissza az AOSP-be
Hundroid Magyar Android Portál Weboldal: http://www.hundroid.com Blog: http://blog.hundroid.com Levelezési lista: http://groups.google.com/group/android-hu Célunk egy közösségi oldal létrehozása, ahol mind a felhasználók, mind a fejlesztők hasznos információkat találnak. Első közösségi projekt: Android honosítás!
További magyar nyelvű oldalak http://androidportal.hu http://androidhungary.com IRC csatorna: android-hu@freenode Facebook: Hungarian Android Community
Mi az Android? Összefoglalás Workshop terem: Azonnal kezdünk! Alkalmazások felépítése Összehasonlítás más platformokkal Fejlesztőkörnyezet (SDK, NDK) Android 1.6 és 2.0 újdonságai Android Open Source Project Köszönöm a figyelmet! Elérhetőség: www.mattakis.com gergely.kis@mattakis.com
Más platformok J2ME Java nyelv, korlátozott futtatókörnyezet (CLDC) A közös nevező, ami a legtöbb mobiltelefonon elkérhető Az emulátorok általában Windowsra érhetők el BlackBerry J2ME-re épül, egyedi UI API is használható, néhány BlackBerry specifikus kiegészítéssel Egymásnak ellentmondó élmények (pl. BB Mail API) Windows alapú fejlesztőkörnyezet
Más platformok (2) Iphone MacOSX kicsiben: Objective C, Cocoa Touch... Csak Macen fejleszthető Symbian C++ objektumorientált API, Windows SDK Két irányzat: Nokia Series és UIQ (pl. Sony Ericsson) Maemo Nokia Tabletek operációs rendszere GNU/Linux alapú Scratchbox fejlesztőkörnyezet (Debian)