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. 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. Miért nem éri meg rá fejleszteni?
Készülékek:
OS verziók:
Képernyő méretek és felbontások:
4
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. C/C++ támogatás
Android 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. 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. Új projekt létrehozása Eclipse-ben
File 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. 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. AndroidManifest.xml
A programunk központi jegyzéke
A 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álata
Receivers:
- SMS, Akkumulátor állapot...
10
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. 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. Layouts
Layout = konténer, ami összefoglalja a képelemeket, különböző szabályok szerint.
LinearLayout (vertical) Tablelayout RelativeLayout FrameLayout
AbsoluteLayout
13
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
17. Képek
/res/drawable-... Könyvtár (dpi szerint
csoportosítva)
Nine-patch kép:
- Alkalmas tetszőleges méretű nyújtásra
- Kiterjesztése: .9.png
Hibalehetőségek:
• Rosszul elhelyezett szélső
csíkok
• A fekete csík nem fekete...
17
18. App Widgets
Kicsi 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ödik
Kötelező a minimális Widget
méretek (szélesség és magasság)
meghatározása
- Minimum méret követelmény: 70 × n − 30 n: a cellák száma
Frissítés gyakorisága: javasolt a 30 percenkénti, ha annál
gyakoribb akkor inkább AlarmManagert használjunk erre, akkumulátor
üzemidő növelése miatt. 18
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ájl
Három layout támogatott:
- FrameLayout
- LinearLayout
- RelativeLayout
19
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. Ha valamit elrontottunk... Debug
Eclipse LogCat használatával
Breakpoint elhelyezésével
- Ugyanolyan jól működik, mint bármely más fejlesztő
környezetben
Megjegyzés: C/C++ kód csak rootolt készüléken (vagy AVD-ben)
debuggolható!
21
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. 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ésekre
Kitö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. 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 nagy
szolgáltatóval kötöttek szerződést, Amerikában, Japánban...))
25
27. Érdekességek
GoogleTV –re fejlesztés:
- Most még kicsi piac, de nem szabad
elfelejtenünk
Tesztelé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. Érdekességek (2)
Használatunk-e magasabb API szintű metódust, mint a
jelenleg 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. Érdekességek (3)
Egyedi OS verziók támogatása:
Pl: Cyanogen, MIUI, Codename, ...
App fejlesztés szempontjából másodlagosak
OS Verziók:
29
30. Összefoglaló
Nagy lehetőségek, nagy kihívások, de nem „A
megváltó” mobil operációs rendszer (egyik
sem az..)
Érdemes belevágni, mert csak nyerhettek
vele!
30
31. Hasznos linkek
Keress, olvass, kérdezz. Legjobb barátod a google...
Referencia: http://developer.android.com/index.html
Fórumok:
- http://www.anddev.org/
- http://stackoverflow.com
Online Android OS forrás:
http://grepcode.com/project/repository.grepcode.com/java/ext/com.
google.android/android/
31