Professional Documents
Culture Documents
Subtitle
Uvod u Android
12.3.2020.
Sadržaj predavanja
Subtitle
• Nepoznanice o Androidu
• Razvoj i karakteristike OS-a
• Arhitektura Android sustava
• Virtualni strojevi ART i Dalvik
• Razvoj aplikacija
• Potrebni alati
12.3.2020.
Što je Android?
Subtitle
• Android – programsko okruženje za pokretne uređaje
bazirano na otvorenom kodu
• Početak razvoja:
• studeni 2007. godine
• Google i OHA (engl. Open Handset Alliance)
• Karakteristike sustava:
• otvorena platforma
• automatsko upravljanje životnim ciklusom aplikacije
• brz i jednostavan razvoj aplikacija
• kompatibilnost s većinom sadašnjeg i budućeg hardvera
• široki spektar primjene:
• mobilni uređaji, televizori, pametni satovi, automobili…
12.3.2020.
Zastupljenost verzija
Subtitle
Version Codename API Distribution
2.3.3 - 2.3.7 Gingerbread 10 0,3%
4.0.3 - 4.0.4 Ice Cream Sandwich 15 0,3%
4.1.x 16 1,2%
4.2.x Jelly Bean 17 1,5%
4.3 18 0,5%
4.4 KitKat 19 6,9%
5.0 21 3,0%
Lolipop
5.1 22 11,5%
6.0 Marshmallow 23 16,9%
7.0 24 11,4%
Nougat
7.1 25 7,8%
8.0 26 12,9%
Oreo
8.1 27 15,4%
9 Pie 28 10,4%
Na dan 09.03.2020.
12.3.2020.
Trenutno:
Subtitle
Cijela povijest:
Subtitle
Arhitektura Androida
Subtitle
Korisničke aplikacije
pisane u programskom
jeziku Java
Sloj aplikacijskog okvira
pisan u programskom
jeziku Java
Android okruženje –
Dalvik Virtual
Machine/ART
Izvorne programske
biblioteke pisane u
jezicima C i C++
Linux jezgra 4.9
12.3.2020.
Virtualne mašine
Subtitle
Najčešće
• Java – JVM – Java virtual machine (Stack bazirana)
• .NET – CLR – Common language runtime (Stack bazirana)
• Android – Dalvik i ART (Registarski bazirane)
Implementiraju
• Kompajliranje izvornog koda u neki od „bytecodova”
• Strukture podataka koje sadrže instrukcije i operande
• Call stack za pozive funkcija
• „Instruction pointer” koji pokazuje na sljedeću instrukciju koja se mora izvršiti
• Virtualni CPU
• Dohvaća sljedeću instrukciju
• Dekodira operande
• Izvršava instrukciju
12.3.2020.
• Za razliku od stack VM-a, potrebno je eksplicitno odrediti adrese operanda (u ovom primjeru
R1, R2 i R3)
• Prednosti Registarski bazirane virtualne mašine:
• Nema nepotrebnog „pushanja” i „popanja”
• Mogućnosti dodatne optimizacije (npr. često korištene podizraze je moguće pohraniti u registar
nakon prvog izračuna i ponovo koristiti)
• Mane se svode na veličinu instrukcije (potrebno je navesti eksplicitno operande)
12.3.2020.
Dalvik VM
Subtitle
Dalvik == grad na Islandu
Dalvik i ART VM
Subtitle
Dalvik i ART VM
Subtitle
ART vs Dalvik
Subtitle
ART posjeduje ahead-of-time kompajliranje, dok Dalvik
koristi just-in-time kompajliranje
To zapravo znači da ART kompajlira aplikaciju prilikom
instalacije, dok je Dalvik kompajlira prilikom izvođenja
• Dulje trajanje baterije zbog manje kompajliranja
• Bolje performanse tijekom izvođenja aplikacije
• Sporija instalacija
Oba VM-a koriste dex datoteke
Odex datoteke (optimizacijske datoteke Dalvika) zamijenjene
su ELF datotekama (Executable and Linkable Format)
• ART pokreće samo ELF datoteke nakon kompajliranja
12.3.2020.
ART vs Dalvik
Subtitle
12.3.2020.
Razvoj aplikacija
Subtitle
Android studio
• Baziran na IntelliJ Idea razvojnom okruženju
Upute i download:
https://developer.android.com/studio/index.html
12.3.2020.
Android emulator
Subtitle
AVD – Android Virtual Device
• služi emulaciji stvarnog uređaja
• najslabija karika Android SDK
• brzina mu nije najbolja strana
• Ne posjeduje zamjenu za neke
komponente stvarnih uređaja
Upoznavanje
Subtitle
Izrada AVD-a
Pokretanje AVD-a
Izrada aplikacije
12.3.2020.
Gradle
Subtitle
• Pojavio se u svijet Androida s Android studiom
• Build sustav
• Open source
• Groovy jezik je baza (Maven i Ant imaju xml konfiguraciju)
• Teško je reći da je neki build sustav bolji od drugoga
12.3.2020.
Gradle
Kako radi na Androidu?
Subtitle
• Postoje tri datoteke:
12.3.2020.
Gradle
Subtitle
• settings.gradle datoteka
• pokazuje koji poddirektoriji će biti sadržani u build-u
• Primjer datoteke:
include ':app'
Gradle
Subtitle
• build.gradle datoteka (na razini cijelog projekta, „top level”)
• Dodavanje Gradle distribucije
• Primjer datoteke:
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.1'
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
12.3.2020.
Gradle
build.gradle
Subtitle datoteka
• Gradle ne uključuje Android funkcionalnost po standardnim
postavkama (ili kako bi rekli defaultu)
• Google pruža plugin za Gradle za jednostavnu konfiguraciju
• U datoteci je opisano da se plugin skida s jcenter i google repozitorija
• Ostali repozitoriji su isto uključeni (npr. mavenCentral)
Gradle
Subtitle
• build.gradle datoteka (na razini projekta – app direktorij)
• Konfiguracija projekta
• Primjer datoteke:
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
buildToolsVersion "28.0.1"
defaultConfig {
applicationId "hr.android.osmi"
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.facebook.fresco:fresco:0.9.0'
}
12.3.2020.
Gradle
build.gradle
Subtitle datoteka
• Apply dodaje Android plugin na build system
• BuildTypes podešava tipove builda projekta
• Dependencies govori o čemu ovisi projekt
• Prva linija govori da sve biblioteke moraju biti jar datoteke
• testCompile značu da će junit testno okruženje biti podešeno
• Compile znači dohvat biblioteke s repozitorija
12.3.2020.
Gradle
Subtitle
finish();
Subtitle
● pitanja?
MAPP VVG