1_uvod u android
TRANSCRIPT
-
8/12/2019 1_uvod u Android
1/56
Android letnja kola- Uvod -
-
8/12/2019 1_uvod u Android
2/56
2/56
Cilj kursa
Organizovan sa 4 asa dnevno x 5
dana
Upoznavanje kroz primere sa glavnimkonceptima aplikacija za Android
Postavljanje dobre osnove za dalji
samostalan razvoj
-
8/12/2019 1_uvod u Android
3/56
3/56
Agenda
Dan 1
Uvod u Android Operativni sistem
Osnovni koncepti
Grafike sprege
Dan 2
Sistemske sprege i baze podataka na Androidu Multimedija i internet
Dan 3
Razvoj aplikacija za Google TV
Pisanje igri za Android
Integracija sa ureajima u kuci
Dan 4
Android ispod haube
Prevoenje koda sa AOSP
Razvoj sistemske podrke na Androidu
Dan 5
OpenGL
JIT kompajleri i Android
Slanje izmena na AOSP
-
8/12/2019 1_uvod u Android
4/56
4/56
Android
Platforma za mobilne telefone, prvenstveno
Sada je platforma za embedded ureaje
mobilni telefoni tablet raunari
AndroidTV/GoogleTV
STB
TV
Postoji i verzija za PC ureaje
http://www.android-x86.org/
-
8/12/2019 1_uvod u Android
5/56
5/56
Android
Google kupio i kontrolie
Open platform operativni sistem je Open Source
SDK je besplatan
NDK je besplatan
http://developer.android.com/index.html
Sistem je baziran na Linux jezgru (Linux kernel) jezgro i drajveri su u kernel prostoru (kernel space)
nativne biblioteke su u korisnikom prostoru (user space)
aplikacije se izvravaju u Java VM (Dalvik)
Java biblioteke za vezu aplikacija sa nativnim bibliotekama
-
8/12/2019 1_uvod u Android
6/56
6/56
Arhitektura
-
8/12/2019 1_uvod u Android
7/56
7/56
Linux kernel
Koristi se standardni Linux kernel, sa dodatnim
drajverima
BinderIPC (Inter Process Communication)
Ashmemdeljena memorija izmeu procesa
Power Management
Logger
Alarm
Low Memory Killer
Kernel Debugger
-
8/12/2019 1_uvod u Android
8/56
-
8/12/2019 1_uvod u Android
9/56
9/56
Bionic Libc
libc implementacija, optimizovana za
embedded ureaje
Licenca je presudna (GPL izvan user-space) Mala veliina
nije sve implementirano!
Brz kod optimizovan
-
8/12/2019 1_uvod u Android
10/56
10/56
Nativne biblioteke
Webkit
maina za prikaz HTML, CSS, JavaScript, AJAX
baziran na webkit browser-u
Media Framework
biblioteka za rad sa slika,am zvukom i
animacijama
podrka za softverske i hardverske kodeke
SQLite
mala relaciona baza podataka
-
8/12/2019 1_uvod u Android
11/56
11/56
Nativni serveri
SurfaceFlinger
AudioFlinger
-
8/12/2019 1_uvod u Android
12/56
12/56
Hardware Abstraction
Libraries
-
8/12/2019 1_uvod u Android
13/56
13/56
Hardware Abstraction
Libraries
Razdvaja Android od hardvera
Definie interfejs koji drajveri moraju da
implementiraju da bi radili u Androidu
-
8/12/2019 1_uvod u Android
14/56
14/56
Android Runtime
Dalvik Virtual Machine
optimizovana virtualna maina za embedded
ureaje
Core libraries
standardne Java biblioteke, prilagoene Android
platformi
-
8/12/2019 1_uvod u Android
15/56
-
8/12/2019 1_uvod u Android
16/56
16/56
Verzije Android OS
Verzije:
1.5Cupcake (API v3),
1.6Donut (API v4),
2.0-2.1Eclair(API v7),
2.2Froyo(API v8),
2.3.xGingerbread(API v9 - 10),
3.x.xHoneycomb(API v11 - 13),
4.xIce Cream Sandwitch(API v14 - 16)
-
8/12/2019 1_uvod u Android
17/56
17/56
Ureaji u telefonu
Podrava veliki broj ureaja
radio (telefon),
kamera,
kompas,
GPS
Bluetooth
Wifi
senzori pokreta
-
8/12/2019 1_uvod u Android
18/56
18/56
Poseban GUI
Uglavnom kompatibilan sa obinim
raunarima
Pritisak prsta po ekranu ima dodatna
znaenja
dug pritisakkontekstni meni
pomeranjeskrolovanje
zaletanjeflinganimacija skrolovanja
dva prsta se pomerajumulti touchzoom i sl.
-
8/12/2019 1_uvod u Android
19/56
19/56
Android aplikacije
Pisane u programskom jeziku Java
Sloenije procesiranje se delegira nativnom
sloju preko JNI (Java Native Invocation)
poziva
Jedna aplikacija preko celog ekrana
aplikacija moe da ima vie prozora (aktivnosti),
ali je svaki preko celog ekrana
aktivnost jedne aplikacije mogu da koriste druge
aplikacije (na primer, kameru, kontakte i sl. moe
da koristi svaka aplikacija)
-
8/12/2019 1_uvod u Android
20/56
20/56
Vrste aplikacija
Activitygrafiki element kojinajee odgovara jednom ekranu
Service
usluni procesi koji rade upozadini
ContentProviderelementi kojiomoguuju deljenje podataka u sistemu
BroadcastReceiverelement kojiprihvata sistemske broadcast poruke(battery low, itd.)
-
8/12/2019 1_uvod u Android
21/56
21/56
ivotni ciklus aktivnosti
-
8/12/2019 1_uvod u Android
22/56
22/56
ivotni ciklus aktivnosti onCreate(): poziva se kada se aktivnost prvi put kreira. Ovde se inicijalizuje najvei
deo varijabli. onStart() se uvek poziva posle ove metode.
Sistem moe da ugasi aplikaciju odavde: Ne.
Sledee: onStart().
onStart(): Poziva se kada aktivnost postaje vidljiva korisniku. Posle nje se poziva
onResume().
Sistem moe da ugasi aplikaciju odavde : Ne.
Sledee: onResume().
onResume(): Poziva se kada je aktivnost na raspolaganju korisniku za interakciju.
Sistem moe da ugasi aplikaciju odavde : Ne.
Sledee: onPause().
onRestart(): Poziva se kada god je aktivnost bila zaustavljena, pa se pokree
(neposredno pre ponovnog pokretanja). onStart() se uvek sledea poziva.
Sistem moe da ugasi aplikaciju odavde : Ne.
Sledee: onStart().
-
8/12/2019 1_uvod u Android
23/56
23/56
ivotni ciklus aktivnosti
onPause(): Poziva se kada se sistem sprema da stavi neku drugu aktivnost
preko ove, ili je korisnik pritisnuo Home taster, ili se aktivirao screen saver.
U ovom trenutku se obino snimaju podaci koji moraju biti sauvani. Ako se
aplikacija vraa u svoju aktivnost (posle screen saver-a), poziva se
onResume(); ako aktivnost vie nije vidljiva za korisnika, poziva se
onStop().
Sistem moe da ugasi aplikaciju odavde : Da.
Sledee: onResume() ili onStop().
onStop(): Poziva se kada aktivnost vie nije vidljiva za korisnika (neka
druga aktivnost je preuzela ekran). Ako se aktivnost vie ne vraa (Back
dugme u odnovnom ekranu aplikacije), poziva se onDestroy(); ako seaktivnost vraa (posle neke druge aktivnosti), poziva se onRestart().
Sistem moe da ugasi aplikaciju odavde : Da.
Sledee: onRestart() ili onDestroy().
-
8/12/2019 1_uvod u Android
24/56
24/56
ivotni ciklus aktivnosti
onDestroy(): Poziva se pre nego to se aktivnost uniti. Poziva se
ako je korisnik zatvorio aplikaciju, ili ako je sistem odluio da ubije
aplikaciju (zbog resursa). Uzrok se moe saznati pozivom metode
isFinishing(). Metoda isFinishing() se moe pozvati i unutar
onPause() metode. Sistem moe da ugasi aplikaciju odavde : Da.
Sledee: Nita.
-
8/12/2019 1_uvod u Android
25/56
25/56
Intents
Poruke koji izazivaju startovanje aktivnosti
Aplikacije mogu same da osmisle i alju svojeporuke (Intent)
Postoje i sistemske poruke
Intent inicira aktiviranje Aktivnosti(Activity)
-
8/12/2019 1_uvod u Android
26/56
26/56
Intents
Sistem sam uparuje aktivnost (Activity) naosnovu zadate poruke (Intent)
Elementi tipaActivitysami deklariu koje
to poruke oni mogu da obrade (informacije za
to se postavljaju u AndroidManifest.xml)
Jedna Aktivnost moe da pozove drugu
Aktivnost ta druga aktivnost moe da bude i ugraena
(sistemska), kao to su kontakti, kamera i sl.
-
8/12/2019 1_uvod u Android
27/56
27/56
Intents (primer)
-
8/12/2019 1_uvod u Android
28/56
28/56
Servisi
Rade u pozadini (putanje muzike, skidanje
podataka sa interneta, i sl.)
Postoji mogunost povezivanja aplikacije i
servisa koji radi u pozadini preko udaljene
sprege (IPCInterProcess Communication)
definisane u datotekama AIDL (Android
Interface Definition Language) IPC je baziran na Binder servisu i drajveru
-
8/12/2019 1_uvod u Android
29/56
29/56
ContentProviders
Omoguuju deljenje podataka izmeu
aplikacija (npr. adresar, galerija slika, itd.)
Obezbeuju uniformnu spregu za pristup
podacima, kao i za brisanje, odnosno
auriranje podataka
-
8/12/2019 1_uvod u Android
30/56
-
8/12/2019 1_uvod u Android
31/56
31/56
uvanje podataka
Postoji vie opcija:
Podeavanja (Preferences)
datoteka na disku
SQLite
ContentProvider
-
8/12/2019 1_uvod u Android
32/56
32/56
APK
Androidova arhiva za jednu aplikaciju
Verzija ZIP-a
Sve to je potrebno za aplikaciju se tu nalazi AndroidManifest.xml opisuje aplikaciju
-
8/12/2019 1_uvod u Android
33/56
33/56
Android SDK
Razvojno okruenje
Alati za razvoj
Emulator adb (Android Debug Bridge)
logcatinterni log Androida
android-sdk\samples\
-
8/12/2019 1_uvod u Android
34/56
34/56
Emulator
Uz SDK stie i emulator
Mogu se birati razliiti modeli (generiki, ili
emulatori pravih hardverskih ureaja) i
razliita okruenja (verzije OS-a, verzije API-
ja)
-
8/12/2019 1_uvod u Android
35/56
35/56
adb
Android Debug Bridge
Klijent-server sistem, gde je klijent na host raunaru (gde
se odvija razvoj), a server na Android raunaru
Omoguuje: instalaciju programa u Android raunar,
adb install apk_file
prebacivanje fajlova na/sa Android raunar(a),
adb push moj_fajl /sdcard/
pregled sistemskog Log-a, adb logcat
rad sa konzolom na Android raunaru (shell),
adb shell
itd.
-
8/12/2019 1_uvod u Android
36/56
36/56
Eclipse plugin
Dodatak u Eclipse platformi za programiranje
na Androidu
kreira Android projekte
omoguuje debagiranje
vizualni editor za korisniki interfejs
prikaz logalogcat
-
8/12/2019 1_uvod u Android
37/56
37/56
Ciklus razvoja
Kreiranje Aktivnosti
obino se redefinie onCreate() metoda
Realizacija korisnikog interfejsa
Prijava Aktivnosti u AndroidManifest.xml fajlu
Instalacija na raunar
Startovanje/debagiranje
HelloAndroid
-
8/12/2019 1_uvod u Android
38/56
38/56
Struktura projekta
-
8/12/2019 1_uvod u Android
39/56
39/56
Struktura projekta
-
8/12/2019 1_uvod u Android
40/56
40/56
Kreiranje aktivnosti
Aktivnost naseuje klasuActivity
Redefiniu se metode vezane za ivotni
ciklus: onCreate(), onStart(), itd.
-
8/12/2019 1_uvod u Android
41/56
41/56
Realizacija UI
Dva naina:
programski
deklarativno (.xml datoteka)
Preporueno je deklarativno definisanje
layout folder, datoteka.xml
Plugin u Eclipse-u run-time generie klasu R,
koja sadri id-ove svih resursa
ceo API je prilagoen radu sa id-ovima, a ne sa
konkretnim resursima!
-
8/12/2019 1_uvod u Android
42/56
42/56
Realizacija UI
-
8/12/2019 1_uvod u Android
43/56
43/56
Realizacija UI
-
8/12/2019 1_uvod u Android
44/56
44/56
Klasa R
/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/
package com.rtrk;
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int icon=0x7f020000;
}
public static final class layout {
public static final int main=0x7f030000;
}
...
}
-
8/12/2019 1_uvod u Android
45/56
45/56
Resursi
Resursi mogu biti:
animacijefolder anim
liste boja kojee se koristiti folder color
multimedija (slike, animacije, itd.)folder
drawable
ostali fajlovifolder raw
android.resource://com.rtrk/raw/famous xml fajlovi koji opisuju prostorni raspored
komponenti na ekranu Aktivnostifolder layout
-
8/12/2019 1_uvod u Android
46/56
46/56
Resursi
Resursi mogu biti:
opis menijafodler menu
stringovifolder values, fajl strings.xml
i18n
localisation
ne moraju svi stringovi da se smeste u jedan
strings.xml fajl
tablestrings.xml, connectionstrings.xml i sl.
-
8/12/2019 1_uvod u Android
47/56
47/56
Stringovi
-
8/12/2019 1_uvod u Android
48/56
48/56
Android manifest
AndroidManifest.xml datoteka
ime Java paketa
minimalni nivo API-ja
dozvole
spisak aktivnosti i servisa u APK datoteci
-
8/12/2019 1_uvod u Android
49/56
49/56
Android manifest
-
8/12/2019 1_uvod u Android
50/56
50/56
Instalacija
Aplikacija se pakuje u APK fajl
zip fajl odreene strukture
Svaka aplikacija je digitalno potpisana
nije potrebno da se nabavlja komercijalni sertifikat
Eclipse razvojno okruenje samo pakuje iinstalira aplikaciju
moe se obaviti i runo
-
8/12/2019 1_uvod u Android
51/56
51/56
Instalacija
Fiziki ureaj se spaja USB kabelom
u ureaju se ukljui USB debagiranje
Fiziki ureaj je na lokalnoj mrei
potrebno je da ga prijavimo komandom:
adb connect x.x.x.x:port
Provera prisustva ureaja:
adb devices
-
8/12/2019 1_uvod u Android
52/56
52/56
Instalacija
Iz Eclipse-a
Runo
adb install Aplikacija.apk
adb uninstall com.paket.GlavnaKlasa Sa trita (Android Market)
APK datoteka se skida sa servera i instalira na ureaju
sigurno
komentari korisnika, broj skidanja i rangiranje
Sa SD kartice
mora se podesiti u sistemu da se dozvoli ovakva operacija
-
8/12/2019 1_uvod u Android
53/56
53/56
Instalacija
Aplikacija se instalira na ureaju tako to se
kopira u /system/app folder
korisnici nemaju pravo izmene sadraja ovog
foldera
Aplikacija snima svoje privremene podatke u
/data folder
to je jedini folder u kojem korisnici imaju punpristup
Korisnici imaju pun pristup jo jedino na SD
kartici (ako postoji)
-
8/12/2019 1_uvod u Android
54/56
-
8/12/2019 1_uvod u Android
55/56
55/56
Custom firmware
Poto je Android open source, mogue je
izgraditi kompletan operativni sistem i staviti
u ureaj
http://www.cyanogenmod.com/
-
8/12/2019 1_uvod u Android
56/56
Za razvoj
Forumi za razvoj:
http://stackoverflow.com
http://www.xda-developers.com/