Szoftverfejlesztés a Google Android OS-re (Android 3.0, API level 11) Dudás András 2011 30 percben!
7/29/2019 AndroidEA
http://slidepdf.com/reader/full/androidea 1/14
Szoftverfejlesztés a Google Android OS-re(Android 3.0, API level 11)
Dudás András2011
30 percben!
7/29/2019 AndroidEA
http://slidepdf.com/reader/full/androidea 2/14
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
7/29/2019 AndroidEA
http://slidepdf.com/reader/full/androidea 3/14
Az Android OS felépítése
7/29/2019 AndroidEA
http://slidepdf.com/reader/full/androidea 4/14
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
“Egyéb”: – Broadcast receivers: rendszer és program üzenetekre reagáló komponens – Content providers: magasabb szintű perzisztencia – Intent: komponensek közötti interakció – Fragment: API Level 11, Activity “építőkocka” – Loader: API Level 11
Komponens szegregáció: miért?● Principle of least knowledge● Resource efficiency
Service● Az elemi perzisztencia
egysége● Activityk mögötti adattárolás,
koherens alkalmazás “magja”
A háttérben:● 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ásdIntent, lifecycle hívások, etc.
7/29/2019 AndroidEA
http://slidepdf.com/reader/full/androidea 5/14
Egy alkalmazásalapjai II.
Életciklusok:● Minden komponens különféle
callbackekkel kell rendelkezzen,ezeket a rendszer az életciklusbizonyos pontjain meghívja, és avisszatérésig vár
● Ezek határozzák meg aviselkedést a rendszereseményekfüggvényében, illetve adják megazon pontokat, amikor az adatokatperzisztálni kell.
● Az ide vonatkozó API referenciátkulcsfontossűgú megismerni!
7/29/2019 AndroidEA
http://slidepdf.com/reader/full/androidea 6/14
Egy alkalmazásalapjai III.
Adat perzisztencia:● Bizonyos helyzetekben
az Activity állapotamegsemmisülhet
● Erre megoldást kínál aBundle, és az
onSaveInstanceState()callback.● Vigyázat: ez a
mechanizmus nemmindig 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
7/29/2019 AndroidEA
http://slidepdf.com/reader/full/androidea 7/14
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.
7/29/2019 AndroidEA
http://slidepdf.com/reader/full/androidea 8/14
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 adottkomponens● 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
7/29/2019 AndroidEA
http://slidepdf.com/reader/full/androidea 9/14
Támogatott techonlógiák
● Hang – MP3;MIDI;AAC LC/LTP;Ogg Vorbis;PCM/WAVE;HE-AACv1
(AAC+);HE-AACv2 (enhanced AAC+);AMR-NB,AMR-WB● Kép
– JPEG;GIF,PNG,BMP● Videó
–
MPEG-4 SP; H.263;H.264 AVC; VP8● 3D
– OpenGL ES (NDK) – “Absztrakt”: RenderScript
● Kommunikáció: – Bluetooth, NFC, Wifi, USB
● Testing: – JUnit – MonkeyRunner
●
A lista nem teljes.
7/29/2019 AndroidEA
http://slidepdf.com/reader/full/androidea 10/14
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ú
7/29/2019 AndroidEA
http://slidepdf.com/reader/full/androidea 11/14
Fejlesztési folyamat I.
“Konzolos” fejlesztés● Virtualizáció adott● Szükséges hozzá:
– Android SDK – Ant
Eclipse SDK●
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
Alapvetően minden Android alkalmazás a Dalvik VM alatt fut: JavaVM implementáció.Két fejlesztési megközelítés lehetséges:
7/29/2019 AndroidEA
http://slidepdf.com/reader/full/androidea 12/14
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 aszenzorok 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
7/29/2019 AndroidEA
http://slidepdf.com/reader/full/androidea 13/14
Projektmunka
NIPG projektek:Adott a lehetőség Android marketre kikerülésre, ELTE IP, ELTE-Softkeretein 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”.
Szabadon válaszott, egyeztetetett téma, vagy NIPG által megfogalmazott projekt
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.
7/29/2019 AndroidEA
http://slidepdf.com/reader/full/androidea 14/14
●
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-alkalmazasok-fejlesztese
● 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!
További Információ