android fejlesztés

32
Bevezetés az Android világába Gerháth Gábor [email protected]

Upload: open-academy

Post on 08-Jun-2015

1.591 views

Category:

Technology


1 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Android fejlesztés

Bevezetés az Android világába

Gerháth Gábor

[email protected]

Page 2: Android fejlesztés

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

Page 3: Android fejlesztés

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

Page 4: Android fejlesztés

Miért nem éri meg rá fejleszteni?

4

OS verziók:

Képernyő méretek és felbontások:

Készülékek:

Page 5: Android fejlesztés

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 )

Page 6: Android fejlesztés

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

Page 7: Android fejlesztés

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

Page 8: Android fejlesztés

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.

Page 9: Android fejlesztés

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

Page 10: Android fejlesztés

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...

Page 11: Android fejlesztés

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)

Page 12: Android fejlesztés

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

Page 13: Android fejlesztés

13

Layouts

LinearLayout (vertical) Tablelayout RelativeLayout FrameLayout

AbsoluteLayout

Layout = konténer, ami összefoglalja a képelemeket, különböző szabályok szerint.

Page 14: Android fejlesztés

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?

Page 15: Android fejlesztés

Layouts (3)

15

Szerkeszthető, létrehozható: Grafikusan / xml szerkesztővel:

Programkódból:

Page 16: Android fejlesztés

Projekt tuning

• Design – felhasználó barát app

- Képek, animációk

• App widget

• GoogleAnalytics

16

Page 17: Android fejlesztés

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...

Page 18: Android fejlesztés

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

Page 19: Android fejlesztés

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

Page 20: Android fejlesztés

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

Page 21: Android fejlesztés

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

Page 22: Android fejlesztés

Dalvik Debug Monitor Server

Rendszerjellemzők, screenshot készítés

Indítása: # ddms

22

Page 23: Android fejlesztés

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

Page 24: Android fejlesztés

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

Page 25: Android fejlesztés

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

Page 26: Android fejlesztés

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

Page 27: Android fejlesztés

É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

Page 28: Android fejlesztés

É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

Page 29: Android fejlesztés

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

Page 30: Android fejlesztés

Ö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

Page 31: Android fejlesztés

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/

Page 32: Android fejlesztés

Kérdések?

Köszönöm a figyelmet!