Android fejlesztés

1,933 views

Published on

Hogyan gazdagodj meg a munkádból? Légy Te is őstermelő! Irány a piac!

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,933
On SlideShare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
22
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Android fejlesztés

  1. 1. Bevezetés az Android világába Gerháth Gábor Gabor.Gerhath@logmein.com
  2. 2. Miről is lesz szó?• Android fejlesztés előnyei-hátrányai, felépítése• Fejlesztői környezet kialakítása• Programunk felépítése, építőelemei• App widget, GoogleAnalytics• Tesztelés• Publikálás a Play Store-ban• Érdekességek 2
  3. 3. Miért éri meg Androidra fejleszteni?• Sok felhasználó, több mint 300 millió eladott eszköz• Legnagyobb piaci részesedés az okostelefon piacon:• Mindig tanulhatsz valami újat...  3
  4. 4. Miért nem éri meg rá fejleszteni? Készülékek: OS verziók:Képernyő méretek és felbontások: 4
  5. 5. Architektúra-Futtatható programok-App Widget-ek- Operációs rendszer programjai- Dalvik Virtual Machine (.dex fájlok futásidejű fordítása)- C/C++ könyvtárak (Android NDK)- Gyártók architektúrájára épülő linux kernel (2.6-os verziótól indult, jelenleg a 3.4-est, tervezik ) 5
  6. 6. C/C++ támogatásAndroid Native Development Kit (NDK):• Támogatott könyvtárak (legismertebbek): - libc (C library) headers - media framework - JNI interface headers - OpenGL ES 1.1 and OpenGL ES 2.0 (3D graphics libraries) headers - SQLite - ...• Támogatott architektúrák: - ARMv5 - ARMv7 pl: Nexus S, LG Optimus 2X, Aus Eee Transformer Prime (Tegra2 & Tegra3) - X86 - MIPS• Buildeléshez: ANT• Megjegyzés: tök jó, lehet is használni, de csak ha „indokolt”... 6
  7. 7. Fejlesztői környezet telepítése• Támogatott platformok: Windows, Linux, Mac• Java JDK telepítés (minimum 1.6)• Eclipse (esetleg Netbeans) letöltése: Google az Eclipse-t ajánlja• Android Software Development Kit (SDK) telepítése: Ebből azt az SDK-t kell elsősorban amit használni akarunk. Letöltjük, kicsomagoljuk, hozzáadjuk az számítógép OS path-hoz Visszafele kompatibilitással nincs gond, a régebbi API-val készített apk jól fut magasabb API szinten• Android Developer Tools (ADT) plugin telepítése• Android Virtual Device (AVD) emulátor• Android NDK telepítése• Usb driver 7
  8. 8. Új projekt létrehozása Eclipse-benFile  New  Android Project„Project” név megadása„Bulid Target” megadása (kötelező) : - Android 4.03 (Android SDK 4.0.3 -as) - Google APIs (Android SDK 4.0.3-as + Google szolgáltatások (pl: GPS, Media API, 3D grafika))„Package” név kitöltése (kötelező): - Érdemes jó nevet választani, ami egyedi és az alkalmazás életciklusára jó lesz„Create Activity” beállítása (opcionális): - Akkor kell, ha szeretnénk egy képernyőt (user interface) a programunkhoz. - Ha nincs, akkor ez gyakorlatilag egy csak a háttérben futtatható program lesz. 8
  9. 9. Projekt fájlok:• Forrásfájlok, „package”-ekbe rendezve• R.java: automatikusan generált fájl Célja: a program futásának gyorsítása• Android API jar• Dependecies mappa: annotations.jar• Anim• Drawable könyvtárak• Layout könyvtárak• Strings• AndroidManifest.xml• Proguard.cfg• Project.properties 9
  10. 10. AndroidManifest.xmlA programunk központi jegyzékeA felhasználótól kért jogok listája - CAMERA - INTERNET - SET_WALLPAPER - WRITE_CONTACTS - ...Hol és mit használunk - Activity, Service beregisztrálása - Api verzió - Hardware komponensek használataReceivers: - SMS, Akkumulátor állapot... 10
  11. 11. Az alkalmazás (app) komponensei Activity Egy activity egy képernyőt Service mutat (általában) Nincs hozzárendelt képernyő Kapcsolat a felhasználói Háttérben fut felülettel Content Provider Intent/Broadcast Receiver Adatokat tesz közzé más Fogadja és feldolgozza a programok számára broadcast intent objektumot SQLite adatbázisba, fájlba Indíthat Activity-t, de külön ment UI nincs hozzá Pl: Névjegyzék Intent: aszinkron üzenet/objektum (tartalma: ki, mit, hogyan) 11
  12. 12. Activity életciklusa: Egy program több activity-t is tartalmazhat: Minden program (app) külön VM-en fut, külön linux rendszer azonosítóval (process ID) A rendszer állítja be az app jogosultságait (milyen szolgáltatáshoz, milyen fájlokhoz) Memória felszabadítás GC-vel (garbage collector) történik 12
  13. 13. LayoutsLayout = konténer, ami összefoglalja a képelemeket, különböző szabályok szerint.LinearLayout (vertical) Tablelayout RelativeLayout FrameLayoutAbsoluteLayout 13
  14. 14. Layouts (2)• Különböző képernyő méretekhez és típusokhoz alkalmazkodás: - px: pixel szám - „dp” vagy „dip”: (density-independent), viszonyszám 160dpi (dots per inch) esetén 1 dp = 1 px; - sp: (scale-independent), viszonyszám betűknél ezt használjuk - Többi (nagyon ritkán használt): pt, mm, in• Telefon vagy tablet vagy TV? 14
  15. 15. Layouts (3)Szerkeszthető, létrehozható:Grafikusan / xml szerkesztővel:Programkódból: 15
  16. 16. Projekt tuning• Design – felhasználó barát app - Képek, animációk• App widget• GoogleAnalytics 16
  17. 17. Képek/res/drawable-... Könyvtár (dpi szerintcsoportosítva) Nine-patch kép: - Alkalmas tetszőleges méretű nyújtásra - Kiterjesztése: .9.pngHibalehetőségek: • Rosszul elhelyezett szélső csíkok • A fekete csík nem fekete... 17
  18. 18. App WidgetsKicsi alkalmazás, periodikus frissítéssel.Pl: időjárás widget, óra widget - Két fajtája van: - Programba beépített - Önállóan is működikKötelező a minimális Widgetméretek (szélesség és magasság)meghatározása - Minimum méret követelmény: 70 × n − 30 n: a cellák számaFrissítés gyakorisága: javasolt a 30 percenkénti, ha annálgyakoribb akkor inkább AlarmManagert használjunk erre, akkumulátorüzemidő növelése miatt. 18
  19. 19. App Widgets (2)Két feltétel kell a létrehozásához: - AppWidgetProvider típusú osztály: hasonló életciklus mint egy service vagy activity - AppWidgetProviderInfo: minimális méret, frissítési periódus, xml fájlHárom layout támogatott: - FrameLayout - LinearLayout - RelativeLayout 19
  20. 20. GoogleAnalytics• Web-fejlesztőknek már biztosan ismerős...• Célja: a felhasználót minél jobban megismerjük• Anonim adatok gyűjtése, majdnem real-time: Népességi Új és visszatérő felhasználók Használat időtartama UI felületek Android OS verzió Telefonok, tabletek típusa, tulajdonságaik• Grafikonok, ábrák készítése (főleg menedzsereknek) 20
  21. 21. Ha valamit elrontottunk... DebugEclipse LogCat használatávalBreakpoint elhelyezésével - Ugyanolyan jól működik, mint bármely más fejlesztő környezetbenMegjegyzés: C/C++ kód csak rootolt készüléken (vagy AVD-ben)debuggolható! 21
  22. 22. Dalvik Debug Monitor ServerRendszerjellemzők, screenshot készítésIndítása: # ddms 22
  23. 23. Előkészületek a kitöltésre• Debug és logolás kikapcsolása• Generált projektfile-ok törlése• Engedélyek felülvizsgálata, verzió kód, és név megadása• Build készítés eclipse vagy ant segítségével - Release-key használata! 23
  24. 24. Tesztelés, kitöltés• Elsősorban készülékeken, (80/20-as szabály alkalmazásával, a többin csak „villámteszt”)• AVD (Android Virtual Device): (igazából szükség- megoldás) - Számtalan hardware és szoftver kombináció, mint az életben... - Szenzorok?• Figyelni a felhasználói visszajelzésekreKitöltés:• Promóciós anyagok megadása:• Applikációról képek, videók, logók, leírás• Kategória (játék, sport...) és tartalom besorolás (mindenkinek, „csak felnőtteknek”...) 24
  25. 25. Pénzügyek...• Egyszeri app vásárlás (kb 1 éve lehet itthonról forintban fizetni)• Alkalmazáson belüli vásárlás (in-app billing)• Havi vagy éves díj a program használatáért (in-app subscription)(Szolgáltatókon keresztüli fizetés is lehetséges (csak néhány nagyszolgáltatóval kötöttek szerződést, Amerikában, Japánban...)) 25
  26. 26. Hasznos parancsok# adb connect <IP_address>:port# adb devices# adb install –r <App_neve>.apk# adb uninstall <Package_name># adb shell# aapt d badging <App_neve>.apk... 26
  27. 27. ÉrdekességekGoogleTV –re fejlesztés: - Most még kicsi piac, de nem szabad elfelejtenünkTesztelési tapasztalat: - A hibák többsége a layouttal kapcsolatos Pl: billentyűzet problémák, fókuszvesztés, layout elcsúszások 27
  28. 28. Érdekességek (2)Használatunk-e magasabb API szintű metódust, mint ajelenleg használt? Válasz: Igen, java.lang.reflect –et támogatja az Android Mindig ellenőrizni, hogy lehet-e egyáltalán (API level) Nincs segítség az eclipse-től, pontosan tudnunk kell mit akarunk. Pl: Method m = YourClass.class.getMethod("method_name",new Class[] { Integer.class }); m.invoke(null, 1234); 28
  29. 29. Érdekességek (3)Egyedi OS verziók támogatása: Pl: Cyanogen, MIUI, Codename, ... App fejlesztés szempontjából másodlagosakOS Verziók: 29
  30. 30. ÖsszefoglalóNagy lehetőségek, nagy kihívások, de nem „Amegváltó” mobil operációs rendszer (egyiksem az..)Érdemes belevágni, mert csak nyerhettekvele!  30
  31. 31. Hasznos linkekKeress, olvass, kérdezz. Legjobb barátod a google... Referencia: http://developer.android.com/index.htmlFórumok: - http://www.anddev.org/ - http://stackoverflow.comOnline Android OS forrás:http://grepcode.com/project/repository.grepcode.com/java/ext/com.google.android/android/ 31
  32. 32. Köszönöm a figyelmet! Kérdések?

×