Szoftverfejlesztés a Google Android OS-re (Android 3.0, API level 11)
Dudás András 2011
30 percben!
Tartalom ●
Egy alkalmazás alapjai, alapvető építőkövek
●
Fejlesztés mikéntje
●
Technológia áttekintés
●
Projektek, számonkérés
●
További infó, elérhetőség
Az Android OS felépítése
Egy alkalmazás alapjai I. Activity ●
Egy képernyőnyi információ / interakciós lehetőség prezentálására Megoldható több is, csak nem javasolt
–
Service ●
●
Az elemi perzisztencia egysége Activityk mögötti adattárolás, koherens alkalmazás “magja”
“Egyéb”: – – – – –
Broadcast receivers: Content providers: Intent: Fragment: Loader:
rendszer és program üzenetekre reagáló komponens magasabb szintű perzisztencia komponensek közötti interakció API Level 11, Activity “építőkocka” API Level 11
A háttérben: ●
Komponens szegregáció: miért? ● Principle of least knowledge ● Resource efficiency
●
Minden alkalmazás: ● Külön userként ● Külön processzként ● Külön Dalvek VM-en fut IPC természetesen van, lásd Intent, lifecycle hívások, etc.
Egy alkalmazás alapjai II. Életciklusok: ●
●
●
Minden komponens különféle callbackekkel kell rendelkezzen, ezeket a rendszer az életciklus bizonyos pontjain meghívja, és a visszatérésig vár Ezek határozzák meg a viselkedést a rendszeresemények függvényében, illetve adják meg azon pontokat, amikor az adatokat perzisztálni kell. Az ide vonatkozó API referenciát kulcsfontossűgú megismerni!
Egy alkalmazás alapjai III. Adat perzisztencia: ● Bizonyos helyzetekben az Activity állapota megsemmisülhet ● Erre megoldást kínál a Bundle, és az onSaveInstanceState() callback. ● Vigyázat: ez a mechanizmus nem mindig működik! ● Vannak jobb megoldások, pl. Service (bár ezzel vigyázni kell), Content Provider.
Milyen adatot hová érdemes tenni? Milyen adataink lehetnek? ● Activity (Fragment) specifikus ● Service specifikus ● Alkalmazás specifikus ● Távoli adat források, adatbázisok
Egy alkalmazás alapjai IV. Komponensek közti kommunikáció: ●
Intent, “szándék” ● Tartalmaz: ● Akció: “Mi a szándék. “ ● Pl. ACTION_MAIN elindíthatja az Activitynket mint az alkalmazás belépési pontja. ● Személetesebben, ACTION_DIAL ● Adat: “Min hajtsa végre a vevő a szándékot.” ● Pl.: ACTION_CALL akció esetén lehet az adat egy URI, tel:06201337434 ● Kategória ● A vevő komponensekre egy megkötés. ● Pl. CATEGORY_LAUNCHER: jelenjen meg az adott Activity az OS fő alkalmazás indító menüjében. ● “Extrák”: ● Flagek ● Lehet egy akció végrehajtási kérelme, vagy egy esemény megtörténtéről egy értesítés. ● A célbajuttatásuk módja, illetve a (potenciális) címzettek listája függ a “tipusától” ● Implicit, explicit ● Nem secure: a szűrők (később) nem védenek meg attól, hogy “célba vegyenek” egy Intentel.
Egy alkalmazás alapjai V. XML konfigurációs állományok és szerepük: ●
●
AndroidManifest.xml ● Permission kérelmek ● Pl. android.permission.READ_OWNER_DATA ● Egyátalán mi az a permission? ● Min API Level (lásd később) ● Servicek, Activityk, egyéb komponensek deklarálása ● Intent szűrők, amikkel megadhatjuk, milyen Intentekre reagálhat az adott komponens ● Alkalmazás ikonja (res/drawable/icon.png) ● Library link kérelmek Resourceok: (res/) ● Layout (res/layout) ● main.xml (“main” a Resource ID) ● Az Activityk Viewjeinek viselkedés / kinézetleírása ● Values (res/values) ● strings.xm (“strings” a Resource ID) ● Egyszerű String->String map, az alkalmazás által használt szövegek dependency injectionja, használható pl. lokalizációra
Támogatott techonlógiák ●
Hang –
●
Kép –
●
●
OpenGL ES (NDK) “Absztrakt”: RenderScript
Kommunikáció: Bluetooth, NFC, Wifi, USB Testing: – JUnit – MonkeyRunner A lista nem teljes. –
●
MPEG-4 SP; H.263;H.264 AVC; VP8
3D – –
●
JPEG;GIF,PNG,BMP
Videó –
●
MP3;MIDI;AAC LC/LTP;Ogg Vorbis;PCM/WAVE;HE-AACv1 (AAC+);HE-AACv2 (enhanced AAC+);AMR-NB,AMR-WB
3D részletesebben ●
RenderScript “new” feature, 3.0 – Relative kevés információ – 3 fő eszköz ● ● ●
– – – – ●
~C99 kód CUDA szerű compute API Az eredmény alkamazásba ágyazásának módszere
Absztrakt, mégis natív kód 2 irányú kommunikáció adott Korábban “zárt” volt OpenGL ES alapú
OpenGL ES – Részleges support az NDK segítségével – Gyors, picit talán jobban kitaposott, mint a RenderScript – OpenGL ES alapú
Fejlesztési folyamat I. Alapvetően minden Android alkalmazás a Dalvik VM alatt fut: Java VM implementáció. Két fejlesztési megközelítés lehetséges:
Eclipse SDK
“Konzolos” fejlesztés ● ●
Virtualizáció adott Szükséges hozzá: – Android SDK – Ant
● ●
Virtualizáció adott Szükséges hozzá: – Android SDK – Eclipse – Eclipse Android Development Tools plugin
Natív kód integráció lehetséges: Android NDK, GNU Make, awk, Windows esetén Cygwin
Fejlesztési folyamat II. Eszközhasználat és virtualizáció: ● Android Virtual Device (AVD): nagyon jól paraméterezhető, virtuális telefon építhető vele, amin aztán tesztelni lehet. Némi hiányosság van, főleg a szenzorok terén. ● Android Debug Bridge (ADB): AVD vagy igazi telefonon történő teszteléshez. ● Rengeteg opció, parancs, jól dokumentált Kód API Level kiválasztása: ● Mi az az API level? Hogyan korrelál az Android verziókkal? ● A támogatott featureok nagy mértékben változnak a külömböző API szintek között ● Érdemes minél alacsonyabb szintet választani AVD felépítése, API level kiválasztása: ● A telefon API szintje létrehozásnál beállítható ● Annyi AVD-t lehet készíteni amennyire futja tárhelyből ● Egyszerre több AVD-t is lehet futtatni, és adott a lehetőség a kommunikációs képességek letesztelésére, akár virtuálisan felhívhatják egymást ● A hardware képességei is állíthatóak
Projektmunka Szabadon válaszott, egyeztetetett téma, vagy NIPG által megfogalmazott projekt
NIPG projektek: Adott a lehetőség Android marketre kikerülésre, ELTE IP, ELTE-Soft keretein belül, bevétel részesedés. Max 2 hallgató / projekt. 4 Projekt: – Gyro és accelerometer adatgyűjtés (távoli adatbázisba), megjelenítés, akár TDK is lehet. –
Accelerometer + Dasher, adatgyűjtés
–
OpenCV fejegér Androidra (nehéz)
–
Menu dinamikus átrendezés használatnak megfelelően, “ajánló rendszer”.
Aki ezeken jól teljesít, nyáron mobil hightech projektben részvételi lehetőség, nemzetközi projektben, fizetés, diplomunka, Msc 16 kredit adott. A téma játékfejlesztés, arcfelismerés, arckifejezés-felismerés.
További Információ ●
Az előadás letölthető: ● ●
●
A honapomról: dna.web.elte.hu A tárgy honlapjáról: pszt.inf.elte.hu/index.php/mobil-alkalmazasokfejlesztese
További információ: ●
● ● ●
Az SDK-t letöltve a samples könyvtárban rengeteg érdekes példa van! developer.android.com android-developers.blogspot.com Sikeres ZH esetén [=)] tőlem, 4-729
Köszönöm a figyelmet!