android fejlesztés

Post on 08-Jun-2015

1.591 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

Bevezetés az Android világába

Gerháth Gábor

Gabor.Gerhath@logmein.com

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!

top related