SlideShare una empresa de Scribd logo
1 de 32
Descargar para leer sin conexión
Bevezetés az Android világába
             Gerháth Gábor
       Gabor.Gerhath@logmein.com
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
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? 
Készülékek:




                                   OS verziók:
Képernyő méretek és felbontások:




                                                 4
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
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
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
Ú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
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
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
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
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
Layouts
Layout = konténer, ami összefoglalja a képelemeket, különböző szabályok szerint.




LinearLayout (vertical)   Tablelayout      RelativeLayout       FrameLayout



AbsoluteLayout
                                                                              13
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
Layouts (3)
Szerkeszthető, létrehozható:
Grafikusan / xml szerkesztővel:




Programkódból:

                                  15
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:
 •    Rosszul elhelyezett szélső
     csíkok
 •   A fekete csík nem fekete...

                                                    17
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
É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
Ö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
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
Köszönöm a figyelmet!



    Kérdések?

Más contenido relacionado

Destacado

Affiliate markt monitor 2010 Affiliatedag
Affiliate markt monitor 2010 AffiliatedagAffiliate markt monitor 2010 Affiliatedag
Affiliate markt monitor 2010 AffiliatedagAffiliate Dag
 
Making Money with Inbound Marketing: Part 3 (Social Media)
Making Money with Inbound Marketing: Part 3 (Social Media)Making Money with Inbound Marketing: Part 3 (Social Media)
Making Money with Inbound Marketing: Part 3 (Social Media)BrainSell Technologies
 
Listed Building Letter
Listed Building LetterListed Building Letter
Listed Building LetterNatalie Foo
 
MF Letter to MVDC
MF Letter to MVDCMF Letter to MVDC
MF Letter to MVDCNatalie Foo
 
Front legal 1--decreto-supremo-0-20150416_1032
Front legal 1--decreto-supremo-0-20150416_1032Front legal 1--decreto-supremo-0-20150416_1032
Front legal 1--decreto-supremo-0-20150416_1032Naida Labra
 
Falgs of countries with > 30% muslim population
Falgs of countries with > 30% muslim populationFalgs of countries with > 30% muslim population
Falgs of countries with > 30% muslim populationMotasem Ash
 
Pipa the business and enterprise challenges: A Case Study of @GBSLEP spatial ...
Pipa the business and enterprise challenges: A Case Study of @GBSLEP spatial ...Pipa the business and enterprise challenges: A Case Study of @GBSLEP spatial ...
Pipa the business and enterprise challenges: A Case Study of @GBSLEP spatial ...ruralfringe
 
Praatjes & Plaatjesmakers
Praatjes & Plaatjesmakers Praatjes & Plaatjesmakers
Praatjes & Plaatjesmakers Ioana Stanescu
 
Razvoj i prezentacija na proekt
Razvoj i prezentacija na proektRazvoj i prezentacija na proekt
Razvoj i prezentacija na proektCre8ive8
 
Hogy kerül a csizma az asztalra?
Hogy kerül a csizma az asztalra?Hogy kerül a csizma az asztalra?
Hogy kerül a csizma az asztalra?Open Academy
 
Le Cep Bistro
Le Cep BistroLe Cep Bistro
Le Cep BistroPortfolio
 
Microsoft Kurumsal sosyal ana_sunum_v3
Microsoft Kurumsal sosyal ana_sunum_v3Microsoft Kurumsal sosyal ana_sunum_v3
Microsoft Kurumsal sosyal ana_sunum_v3Mustafa Kuğu
 
強化科技研發及創新
強化科技研發及創新強化科技研發及創新
強化科技研發及創新twnewone1
 
Marktmonitor Affiliate Marketing 2011
Marktmonitor Affiliate Marketing 2011Marktmonitor Affiliate Marketing 2011
Marktmonitor Affiliate Marketing 2011Affiliate Dag
 

Destacado (19)

Affiliate markt monitor 2010 Affiliatedag
Affiliate markt monitor 2010 AffiliatedagAffiliate markt monitor 2010 Affiliatedag
Affiliate markt monitor 2010 Affiliatedag
 
Class clips
Class clipsClass clips
Class clips
 
Making Money with Inbound Marketing: Part 3 (Social Media)
Making Money with Inbound Marketing: Part 3 (Social Media)Making Money with Inbound Marketing: Part 3 (Social Media)
Making Money with Inbound Marketing: Part 3 (Social Media)
 
Listed Building Letter
Listed Building LetterListed Building Letter
Listed Building Letter
 
Using smartphones and facebook
Using smartphones and facebookUsing smartphones and facebook
Using smartphones and facebook
 
MF Letter to MVDC
MF Letter to MVDCMF Letter to MVDC
MF Letter to MVDC
 
Front legal 1--decreto-supremo-0-20150416_1032
Front legal 1--decreto-supremo-0-20150416_1032Front legal 1--decreto-supremo-0-20150416_1032
Front legal 1--decreto-supremo-0-20150416_1032
 
Falgs of countries with > 30% muslim population
Falgs of countries with > 30% muslim populationFalgs of countries with > 30% muslim population
Falgs of countries with > 30% muslim population
 
Photoshop
PhotoshopPhotoshop
Photoshop
 
Pipa the business and enterprise challenges: A Case Study of @GBSLEP spatial ...
Pipa the business and enterprise challenges: A Case Study of @GBSLEP spatial ...Pipa the business and enterprise challenges: A Case Study of @GBSLEP spatial ...
Pipa the business and enterprise challenges: A Case Study of @GBSLEP spatial ...
 
Praatjes & Plaatjesmakers
Praatjes & Plaatjesmakers Praatjes & Plaatjesmakers
Praatjes & Plaatjesmakers
 
Presentation egrek
Presentation egrekPresentation egrek
Presentation egrek
 
Razvoj i prezentacija na proekt
Razvoj i prezentacija na proektRazvoj i prezentacija na proekt
Razvoj i prezentacija na proekt
 
Hogy kerül a csizma az asztalra?
Hogy kerül a csizma az asztalra?Hogy kerül a csizma az asztalra?
Hogy kerül a csizma az asztalra?
 
Le Cep Bistro
Le Cep BistroLe Cep Bistro
Le Cep Bistro
 
Microsoft Kurumsal sosyal ana_sunum_v3
Microsoft Kurumsal sosyal ana_sunum_v3Microsoft Kurumsal sosyal ana_sunum_v3
Microsoft Kurumsal sosyal ana_sunum_v3
 
College1
College1College1
College1
 
強化科技研發及創新
強化科技研發及創新強化科技研發及創新
強化科技研發及創新
 
Marktmonitor Affiliate Marketing 2011
Marktmonitor Affiliate Marketing 2011Marktmonitor Affiliate Marketing 2011
Marktmonitor Affiliate Marketing 2011
 

Similar a Android fejlesztés

Dr. Ekler Péter: A mobilszoftver két értéke – legjobb gyakorlatok és újdonság...
Dr. Ekler Péter: A mobilszoftver két értéke – legjobb gyakorlatok és újdonság...Dr. Ekler Péter: A mobilszoftver két értéke – legjobb gyakorlatok és újdonság...
Dr. Ekler Péter: A mobilszoftver két értéke – legjobb gyakorlatok és újdonság...Mobil Weekend
 
Multiplatform mobil fejlesztések
Multiplatform mobil fejlesztésekMultiplatform mobil fejlesztések
Multiplatform mobil fejlesztésekOpen Academy
 
Cross Platform mobil app fejlesztés HTML5 JavaScript alapokon
Cross Platform mobil app fejlesztés HTML5 JavaScript alapokonCross Platform mobil app fejlesztés HTML5 JavaScript alapokon
Cross Platform mobil app fejlesztés HTML5 JavaScript alapokoneRise
 
Windows a dobozban, avagy IoT fejlesztés C#-ban
Windows a dobozban, avagy IoT fejlesztés C#-banWindows a dobozban, avagy IoT fejlesztés C#-ban
Windows a dobozban, avagy IoT fejlesztés C#-banGyörgy Balássy
 
Firefox OS előadás a Corvinus Nyári Egyetem rendezvényen
Firefox OS előadás a Corvinus Nyári Egyetem rendezvényenFirefox OS előadás a Corvinus Nyári Egyetem rendezvényen
Firefox OS előadás a Corvinus Nyári Egyetem rendezvényenKálmán "KAMI" Szalai
 
Fejlesztési kihívások a pénzügyi szektorban
Fejlesztési kihívások a pénzügyi szektorbanFejlesztési kihívások a pénzügyi szektorban
Fejlesztési kihívások a pénzügyi szektorbanPal Vojacsek
 
BlackBerry10 alapú natív alkalmazásfejlesztés
BlackBerry10 alapú natív alkalmazásfejlesztésBlackBerry10 alapú natív alkalmazásfejlesztés
BlackBerry10 alapú natív alkalmazásfejlesztésOpen Academy
 
Windows Szerver kiadások.
Windows Szerver kiadások.Windows Szerver kiadások.
Windows Szerver kiadások.Attila Nagy
 
A világ változik, változik a Mozilla is
A világ változik, változik a Mozilla isA világ változik, változik a Mozilla is
A világ változik, változik a Mozilla isKálmán "KAMI" Szalai
 
Windows IoT - A kütyüoldal
Windows IoT - A kütyüoldalWindows IoT - A kütyüoldal
Windows IoT - A kütyüoldalGyörgy Balássy
 
Firefox OS - Az Open Web megérkezik az okostelefonokra
Firefox OS - Az Open Web megérkezik az okostelefonokraFirefox OS - Az Open Web megérkezik az okostelefonokra
Firefox OS - Az Open Web megérkezik az okostelefonokraKálmán "KAMI" Szalai
 
Operációs rendszerek belső architektúrája
Operációs rendszerek belső architektúrájaOperációs rendszerek belső architektúrája
Operációs rendszerek belső architektúrájarma96
 
Operációs rendszer
Operációs rendszerOperációs rendszer
Operációs rendszerrma96
 
VMware vRealize Operation Manager inroduction experience at LAPKER
VMware vRealize Operation Manager inroduction experience at LAPKERVMware vRealize Operation Manager inroduction experience at LAPKER
VMware vRealize Operation Manager inroduction experience at LAPKERKiss Tibor
 
5 szerkesztőségi
5 szerkesztőségi5 szerkesztőségi
5 szerkesztőségiAndras Nyiro
 

Similar a Android fejlesztés (20)

Dr. Ekler Péter: A mobilszoftver két értéke – legjobb gyakorlatok és újdonság...
Dr. Ekler Péter: A mobilszoftver két értéke – legjobb gyakorlatok és újdonság...Dr. Ekler Péter: A mobilszoftver két értéke – legjobb gyakorlatok és újdonság...
Dr. Ekler Péter: A mobilszoftver két értéke – legjobb gyakorlatok és újdonság...
 
Multiplatform mobil fejlesztések
Multiplatform mobil fejlesztésekMultiplatform mobil fejlesztések
Multiplatform mobil fejlesztések
 
Cross Platform mobil app fejlesztés HTML5 JavaScript alapokon
Cross Platform mobil app fejlesztés HTML5 JavaScript alapokonCross Platform mobil app fejlesztés HTML5 JavaScript alapokon
Cross Platform mobil app fejlesztés HTML5 JavaScript alapokon
 
Desktop virtualizáció
Desktop virtualizációDesktop virtualizáció
Desktop virtualizáció
 
Zwizzer hu v2
Zwizzer hu v2Zwizzer hu v2
Zwizzer hu v2
 
Windows 8
Windows 8Windows 8
Windows 8
 
Windows a dobozban, avagy IoT fejlesztés C#-ban
Windows a dobozban, avagy IoT fejlesztés C#-banWindows a dobozban, avagy IoT fejlesztés C#-ban
Windows a dobozban, avagy IoT fejlesztés C#-ban
 
Firefox OS előadás a Corvinus Nyári Egyetem rendezvényen
Firefox OS előadás a Corvinus Nyári Egyetem rendezvényenFirefox OS előadás a Corvinus Nyári Egyetem rendezvényen
Firefox OS előadás a Corvinus Nyári Egyetem rendezvényen
 
Fejlesztési kihívások a pénzügyi szektorban
Fejlesztési kihívások a pénzügyi szektorbanFejlesztési kihívások a pénzügyi szektorban
Fejlesztési kihívások a pénzügyi szektorban
 
BlackBerry10 alapú natív alkalmazásfejlesztés
BlackBerry10 alapú natív alkalmazásfejlesztésBlackBerry10 alapú natív alkalmazásfejlesztés
BlackBerry10 alapú natív alkalmazásfejlesztés
 
Windows Szerver kiadások.
Windows Szerver kiadások.Windows Szerver kiadások.
Windows Szerver kiadások.
 
A világ változik, változik a Mozilla is
A világ változik, változik a Mozilla isA világ változik, változik a Mozilla is
A világ változik, változik a Mozilla is
 
Windows IoT - A kütyüoldal
Windows IoT - A kütyüoldalWindows IoT - A kütyüoldal
Windows IoT - A kütyüoldal
 
Firefox OS - Az Open Web megérkezik az okostelefonokra
Firefox OS - Az Open Web megérkezik az okostelefonokraFirefox OS - Az Open Web megérkezik az okostelefonokra
Firefox OS - Az Open Web megérkezik az okostelefonokra
 
Operációs rendszerek belső architektúrája
Operációs rendszerek belső architektúrájaOperációs rendszerek belső architektúrája
Operációs rendszerek belső architektúrája
 
Operációs rendszer
Operációs rendszerOperációs rendszer
Operációs rendszer
 
Berkes andrás pxml architektura 2013-01-16
Berkes andrás pxml architektura 2013-01-16Berkes andrás pxml architektura 2013-01-16
Berkes andrás pxml architektura 2013-01-16
 
VMware vRealize Operation Manager inroduction experience at LAPKER
VMware vRealize Operation Manager inroduction experience at LAPKERVMware vRealize Operation Manager inroduction experience at LAPKER
VMware vRealize Operation Manager inroduction experience at LAPKER
 
Diagram és barcode
Diagram és barcodeDiagram és barcode
Diagram és barcode
 
5 szerkesztőségi
5 szerkesztőségi5 szerkesztőségi
5 szerkesztőségi
 

Más de Open Academy

BDD demisztifikálva
BDD demisztifikálvaBDD demisztifikálva
BDD demisztifikálvaOpen Academy
 
What SQL should actually be...
What SQL should actually be...What SQL should actually be...
What SQL should actually be...Open Academy
 
Dev tools rendering & memory profiling
Dev tools rendering & memory profilingDev tools rendering & memory profiling
Dev tools rendering & memory profilingOpen Academy
 
Firefox OS: hackelni könnyű
Firefox OS:  hackelni könnyűFirefox OS:  hackelni könnyű
Firefox OS: hackelni könnyűOpen Academy
 
A Windows Phone világa
A Windows Phone világaA Windows Phone világa
A Windows Phone világaOpen Academy
 
Okostelefonok és táblagépek menedzsmentje
Okostelefonok és táblagépek menedzsmentjeOkostelefonok és táblagépek menedzsmentje
Okostelefonok és táblagépek menedzsmentjeOpen Academy
 
Ipari felhő infrastruktúrák a gyakorlatban
Ipari felhő infrastruktúrák a gyakorlatbanIpari felhő infrastruktúrák a gyakorlatban
Ipari felhő infrastruktúrák a gyakorlatbanOpen Academy
 
Túlélés a Három Betűs Rövidítések világában
Túlélés a Három Betűs Rövidítések világábanTúlélés a Három Betűs Rövidítések világában
Túlélés a Három Betűs Rövidítések világábanOpen Academy
 
Adminisztratív protokollok ellenőrzési lehetőségei
Adminisztratív protokollok ellenőrzési lehetőségeiAdminisztratív protokollok ellenőrzési lehetőségei
Adminisztratív protokollok ellenőrzési lehetőségeiOpen Academy
 
Naplózás a gyakorlatban
Naplózás a gyakorlatbanNaplózás a gyakorlatban
Naplózás a gyakorlatbanOpen Academy
 
Hogyan optimalizáljunk C/C++ kódokat!
Hogyan optimalizáljunk C/C++ kódokat!Hogyan optimalizáljunk C/C++ kódokat!
Hogyan optimalizáljunk C/C++ kódokat!Open Academy
 
AGILIS / SCRUM fejlesztés
AGILIS / SCRUM fejlesztésAGILIS / SCRUM fejlesztés
AGILIS / SCRUM fejlesztésOpen Academy
 
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?Open Academy
 
Verziókövető rendszerek alkalmazása fejlesztési projektekben
Verziókövető rendszerek alkalmazása fejlesztési projektekbenVerziókövető rendszerek alkalmazása fejlesztési projektekben
Verziókövető rendszerek alkalmazása fejlesztési projektekbenOpen Academy
 

Más de Open Academy (16)

BDD demisztifikálva
BDD demisztifikálvaBDD demisztifikálva
BDD demisztifikálva
 
What SQL should actually be...
What SQL should actually be...What SQL should actually be...
What SQL should actually be...
 
Dev tools rendering & memory profiling
Dev tools rendering & memory profilingDev tools rendering & memory profiling
Dev tools rendering & memory profiling
 
Firefox OS: hackelni könnyű
Firefox OS:  hackelni könnyűFirefox OS:  hackelni könnyű
Firefox OS: hackelni könnyű
 
Coding dojo
Coding dojoCoding dojo
Coding dojo
 
Magvas gondolatok
Magvas gondolatokMagvas gondolatok
Magvas gondolatok
 
A Windows Phone világa
A Windows Phone világaA Windows Phone világa
A Windows Phone világa
 
Okostelefonok és táblagépek menedzsmentje
Okostelefonok és táblagépek menedzsmentjeOkostelefonok és táblagépek menedzsmentje
Okostelefonok és táblagépek menedzsmentje
 
Ipari felhő infrastruktúrák a gyakorlatban
Ipari felhő infrastruktúrák a gyakorlatbanIpari felhő infrastruktúrák a gyakorlatban
Ipari felhő infrastruktúrák a gyakorlatban
 
Túlélés a Három Betűs Rövidítések világában
Túlélés a Három Betűs Rövidítések világábanTúlélés a Három Betűs Rövidítések világában
Túlélés a Három Betűs Rövidítések világában
 
Adminisztratív protokollok ellenőrzési lehetőségei
Adminisztratív protokollok ellenőrzési lehetőségeiAdminisztratív protokollok ellenőrzési lehetőségei
Adminisztratív protokollok ellenőrzési lehetőségei
 
Naplózás a gyakorlatban
Naplózás a gyakorlatbanNaplózás a gyakorlatban
Naplózás a gyakorlatban
 
Hogyan optimalizáljunk C/C++ kódokat!
Hogyan optimalizáljunk C/C++ kódokat!Hogyan optimalizáljunk C/C++ kódokat!
Hogyan optimalizáljunk C/C++ kódokat!
 
AGILIS / SCRUM fejlesztés
AGILIS / SCRUM fejlesztésAGILIS / SCRUM fejlesztés
AGILIS / SCRUM fejlesztés
 
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
 
Verziókövető rendszerek alkalmazása fejlesztési projektekben
Verziókövető rendszerek alkalmazása fejlesztési projektekbenVerziókövető rendszerek alkalmazása fejlesztési projektekben
Verziókövető rendszerek alkalmazása fejlesztési projektekben
 

Android fejlesztés

  • 1. Bevezetés az Android világába Gerháth Gábor Gabor.Gerhath@logmein.com
  • 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
  • 15. Layouts (3) Szerkeszthető, létrehozható: Grafikusan / xml szerkesztővel: Programkódból: 15
  • 16. Projekt tuning • Design – felhasználó barát app - Képek, animációk • App widget • GoogleAnalytics 16
  • 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
  • 22. Dalvik Debug Monitor Server Rendszerjellemzők, screenshot készítés Indítása: # ddms 22
  • 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
  • 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. É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