android fejlesztés
DESCRIPTION
Hogyan gazdagodj meg a munkádból? Légy Te is őstermelő! Irány a piac!TRANSCRIPT
Miről is lesz szó?
2
• 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
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
Miért nem éri meg rá fejleszteni?
4
OS verziók:
Képernyő méretek és felbontások:
Készülékek:
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 )
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
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.
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...
Az alkalmazás (app) komponensei
11
Activity
Egy activity egy képernyőt mutat (általában)
Kapcsolat a felhasználói
felülettel
Service
Nincs hozzárendelt képernyő
Háttérben fut
Intent/Broadcast Receiver
Fogadja és feldolgozza a
broadcast intent objektumot
Indíthat Activity-t, de külön
UI nincs hozzá
Content Provider
Adatokat tesz közzé más
programok számára
SQLite adatbázisba, fájlba
ment
Pl: Névjegyzék
Intent: aszinkron üzenet/objektum (tartalma: ki, mit, hogyan)
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
13
Layouts
LinearLayout (vertical) Tablelayout RelativeLayout FrameLayout
AbsoluteLayout
Layout = konténer, ami összefoglalja a képelemeket, különböző szabályok szerint.
Layouts (2)
14
• 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?
Layouts (3)
15
Szerkeszthető, létrehozható: Grafikusan / xml szerkesztővel:
Programkódból:
Projekt tuning
• Design – felhasználó barát app
- Képek, animációk
• App widget
• GoogleAnalytics
16
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:
17 17
• Rosszul elhelyezett szélső csíkok
• A fekete csík nem fekete...
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
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
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
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
Dalvik Debug Monitor Server
Rendszerjellemzők, screenshot készítés
Indítása: # ddms
22
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
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
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
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
É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
É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
Egyedi OS verziók támogatása:
Pl: Cyanogen, MIUI, Codename, ...
App fejlesztés szempontjából másodlagosak
OS Verziók:
Érdekességek (3)
29
Ö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/
Kérdések?
Köszönöm a figyelmet!