Professional Documents
Culture Documents
Strossmayera u Osijeku
Fakultet elektrotehnike, računarstva i informacijskih
tehnologija Osijek
OPERACIJSKI SUSTAVI
(predavanja u ak. god. 2018/19.)
Osijek, 2019.
10
Operacijski sustavi mobilnih uređaja
Android
(neki navedeni podaci vrlo brzo se mijenjaju)
https://www.android.com/
1
Predosti mobilnih uređaja
• Uvijek s korisnikom
• Imaju pristup Internetu
• Tipično imaju GPS, akcelerometar, kompas, kameru, mikrofon,
većina aplikacija slobodna ili jeftina
Android
Razvoj Androida
2005.
Google kupuje Android od tvrtke Android Inc.
2007.
Open Handset Alliance (OHA) kreirala otvorene strandarde za mobilne
uređaje. Partneri OHA: Google, Motorola, Samsung, Vodafone, i drugi
2008. Android postao sustav otvorenog koda
2008./2009.
Android 1.0 (Apple Pie)
G1 HTC-Dream – prvi Android pametni telefon
Android 1.1 (Banana Bread)
Android 1.5 (CupCake)
Android 1.6 (Donut)
Android 2.0 (Eclair)
2010.
Android 2.2 (Froyo) 4
2
Android
Razvoj Androida
2011.
Android 3.0 (Honeycomb)
(prva inačica za uređaje s većim zaslonom, npr. tableti)
Android 4.0 (Ice-Cream Sandwich)
(objedinio tab centric design i v2.x phone based design)
2012./2013.
Android 4.2 (Jelly Bean)
Tzv. Gesture Mode
Poboljšane performanse preglednika
Dijeljenje podataka kroz NFC
Poboljšanja kamere i prepoznavanja lica ....
API Level 17 (Android 4.2):
Daydream: screensaver customization API
Potpora višekorisničkoj upotrebi
Tzv. ugniježdeni fragmenti za poboljšanje UI ....
5
Android
Razvoj Androida
Android 4.4 (KitKat)
2014.
Android 5.0, 5.1 (Lollipop)
dostupan kao nadogradnja za pojedine uređaje
u potpunosti redizajnirano sučelje - material design, fluidnost, animacije
2015.
Android 6.0 (Marshmallow)
2016.
Android 7.0 (Nougat)
prikaz više aplikacija na zaslonu odjednom
inline odziv na obavijesti
ažuriranja
6
3
Android
Razvoj Androida
2017.
Android 8.00 (Oreo)
• grupiranje obavijesti, picture-in-picture potpora za video, poboljšanje
performansi i optimiranje korištenja baterije, potpora za autofillers, Bluetooth
5, system-level integration s VoIP aplikacijama, wide color gamuts, te Wi-Fi
Aware, Android Go – distribucija OS-a za low-end uređaje i potpora za
hardware abstraction layer.
2018.
Android 9.00 (Pie)
Razvoj Androida
Oreo Pie
Android 8.0 Android 9.0
4
Razvoj Androida
Zastupljenost inačica
https://en.wikipedia.org/wiki/Android_version_history
10
5
Android
Android – na Linuxu zasnovana platforma za mobilne uređaje koja
podrazumijeva:
Operacijski sustav
Međusloj
Aplikacije
Podržava:
Pametne telefone
Tablete
Uređaje za čitanje knjiga
Android TV
Google Glasses
....
11
Građa Androida
12
6
Građa Androida
13
Građa Androida
14
7
Građa Androida
15
8
Okolina i osnove rada Androida
• Mobilna aplikacija: svaka mobilna aplikacija izvediva ili u izvođenju na
mobilnom uređaju.
• Tipovi
- web aplikacije: pokrenute u web pregledniku
- HTML, JavaScript, Flash, poslužiteljske komponente, ....
- izvorne: kodovi prevedeni za mobilne uređaje
- često koriste web usluge
• Izvorno svaka aplikacija pokreće se kao nezavisan Linux proces.
• Proces počinje kad se kod treba izvršiti.
• Niti se pokreću za izvođenje vremenski zahtjevnijih operacija.
• Svaki proces ima vlastiti Dalvik VM, a svakoj aplikaciji dodjeljuje se
jedinstveni Linux ID.
17
Android
Stack
arhitektura
18
9
Android
Linux jezgra
- izgrađena na Linuxu 4.4 (i više) u jezicima C/C++
- prenosiva na druge arhitekture i sigurna
- sadrži pogonske programe, a najvažniji:
za međuprocesnu komunikaciju (IPC - Inter-Process Communication), služi
19
Android
Ashmem
• Anonymous Shared Memory
• Ashmem koristi prividnu memoriju
• Jezgra rukuje tom memorijom
Pmem
• Process memory allocator
• Sličan kao ashmem, ali koristi fizičku memoriju
•Upravlja većim područjima memorije dijeljene između korisničkog
prostora i pogonskih programa jezgre
10
Android
Binder
• Alat za IPC
• Binder pogonski program upravlja sinkronizacijom između procesa
• Ima sljedeća stanja
• Receive blocked
• Ready
• Send blocked
• Reply blocked
Logger
• Sustav prijave korisnika odvojen od prijave u Linux jezgru
• Sprema logove aplikacija, događaja i sustava
• Putanja pisanja je optimirana i sprječava opterećenje s open(), write() i
close()
Android
Android Power Management
• Wake locks koriste se za posluživanje tzv. wake lockova
• Wake locks nastaju u korisničkom prostoru, a rukuju se iz jezgre
•Power management može isključiti CPU ako nema aktivnih wake
lockova
Višenitnost i višezadaćnost
• Skupi zahvati se izvode u pozadini
• Spori poslovi izvode se kao pozadinske niti
• Omogućuje odziv UI prema korisniku
•Procesi se ne ubijaju kad korisnik zatvori aplikaciju, nego ostaju u
pozadini
11
Android
Libraries, Native libraries
- pisane u jeziku C/C++
Sastoji se od sljedećih knjižnica:
- Surface Manager – knjižnica koja nadzire iscrtavanje grafičkog sučelja
- OpenGL | ES – knjižnica za sklopovsko ubrzavanje 3D prikaza (ako je
moguća), te za visoko optimirano 3D iscrtavanje
- SGL – 2D knjižnica upotrebljavana za većinu aplikacija
- Media Framework – knjižnica temeljena na OpenCORE koja podržava
snimanje i reproduciranje poznatih audio/video formata
- FreeType – knjižnica namijenjena iscrtavanju fontova
- SSL (Secure Sockets Layer) - knjižnica za sigurnosnu komunikaciju putem
interneta
- SQLite – knjižnica za upravljanje bazama podataka dostupna svim
aplikacijama
- WebKit – engine za web preglednike
- libc – sustavska C knjižnica prilagođena za ugradbene sustave zasnovane
na Linux OS-u 23
- C libraries (Bionic)....
Android
Android Libraries
24
12
Android
Application Framework, Application Libraries
- sastoji se od mehanizama koji pomažu pisanje aplikacija
- dozvoljava upotrebu svih API-ja koji su upotrebljavani za bazne aplikacije
- upravljanje prozorima
- uporaba podataka od više različitih aplikacija
- upravljanje programskim paketima - Packet Manager
- upravljanje aktivnostima - Activity Manager (odnosi se na životni ciklus aplikacije)
- upravljanje pozivima - Telephony Manager
- dohvaćanje i uporaba trenutne lokacije korisnika - Location Manager
- upravljanje resursima (pohrana komponenti aplikacija koje nisu sami kôd, npr. slike)
- baza pogleda i objekata koji se mogu upotrebljavati za dizajn aplikacije
- upravljanje sadržajima - Contents Provider
- prikaz obavijesti - Notification Manager....
25
Android
Application Framework
Activity Manager − nadzire sve detalje životnog ciklusa i aktivnosti aplikacije.
Content Providers − omogućuju aplikaciji objavljivanje i dijeljenje podataka s
drugim aplikacijama.
Resource Manager − omogućuje pristup ugradbenim resursima kao što su
stringovi, postavke boja i raspored korisničkog sučelja.
Notifications Manager − omogućuje aplikaciji prikaz upozorenja i obavijesti
prema korisniku.
View System − proširivi skup pogleda koji se koriste za kreiranje korisničkog
sučelja.
26
13
Android
Applications (pisane u Javi ili drugim jezicima)
- sloj vidljiv krajnjem korisniku, sastoji se od osnovnih, ugrađenih aplikacija
poput e-mail klijenta, SMS programa, kalendara, web preglednika, kao i
aplikacija s Android Marketa
- Android Play Store
- Entertainment
- Productivity
- Personalization
- Education
- Geo-communication
- ….
27
Android
Android Runtime
- za pokretanje aplikacija. Sastoji se od dvije važne komponente:
1. "Core libraries"
- knjižnice koje sadrže većinu jezgrenih knjižnica progr. jezika Java
2. Dalvik Virtual Machine
- pokreće aplikacije kao zasebne procese, odnosno kao instance virtualnog
stroja. DVM pretvara Java class datoteke u svoj vlastiti format (.dex), da bi bile
optimirane za minimalni utrošak memorije
- novija je impementacija Java Virtual Machine
- otvorena licenca
- optimirana za uređaje s ograničenim memorijskim prostorom
- ….
28
14
Android filozofija
• Aplikacije moraju biti:
– Brze za izvođenje
• Ograničenja resursa: memorija, ipak često ne prebrzi procesori
– Brzog odziva
• Moraju se odazvati na zahtjeve korisnika unutar 5 s
– Sigurne
• Deklariraju siguran pristup
– Bez propusta
• Upotrebljivost, stalni podaci, održavanje usluge
• Android “ubija” procese u pozadini po potrebi
29
Komponente aplikacije
- Activities
- Intents
- Services
- Content Providers
- Broadcast Receivers
30
15
Razvoj Android aplikacije
Komponente aplikacije
- Activities
- Intents
- Services
- Content Providers
- Broadcast Receivers
31
16
Komponente Android aplikacije: Activities
17
Komponente Android aplikacije: Activities
- Izgradnja layouta aplikacije s XML-om
- Definiranje dva različita XML layouta za dva različita uređaja
- U pokretanju (runtime), Android otkriva konfiguraciju trenutnog uređaja
i učitava prikladne resurse za aplikaciju
- Nema potrebe za ponovnim prevođenjem
- Za podršku novom uređaju, potrebno je samo dodati novu XML
datoteku
18
Komponente Android aplikacije: Intents
Intents: asinkrone poruke za aktiviranje osnovne Android komponente
kao što su Activities.
Eksplicitni Intent Komponenta (npr. Activity1) određuje odredište
druge komponente (npr. Activity 2).
Implicitni Intent Komponenta (npr. Activity1) određuje tip namjere
(npr. pregled videa).
19
Komponente Android aplikacije: Content Providers
Svaka Android aplikacija ima vlastiti privatni skup podataka kojima se
upravlja preko datoteka ili SQLite baze podataka.
Content Providers: Standardno sučelje za pristup dijeljenim
podacima među različitim aplikacijama i pristup bazama podataka.
insert()
APP
update()
Content
Provider
DB Zbirka
delete() fotografija
query()
20
Komponente Android aplikacije: System API
Android aplikacije oslanjaju se na System API u radu spomenutih
komponenti:
• Pristup podataka Telephony Managera (poziv, SMS, ....)
• Upravljanje senzorima (GPS, akcelerometar, ...)
• Spajanje na mrežu (Wifi, bluetooth, ....)
• Rad na webu (HTTP klijent, WebView, ....)
• Upravljanje pohranom podataka (datoteke, SQLite baza, ....)
• Sučeljavanje s drugim Google i ostalim uslugama
21
Komponente Android aplikacije: Sigurnost
Android aplikacije pokreću se u odvojenom sustavu.
Aplikacije moraju dijeliti resurse i podatke. To čine deklariranjem
ovlasti pristupa.
Statički deklariraju dopuštenja koja trebaju.
Korisnik mora pristati na to tijekom instaliranja.
Android Manifest (osnovne informacije o komponentama aplikacije)
http://developer.android.com/guide/topics/manifest/manifest-
intro.html
22
Razvoj Andriod aplikacija
Android SDK (http://developer.android.com/sdk/index.html)
Android Studio ( https://developer.android.com/studio/index.html)
Eclipse + ADT (http://www.eclipse.org/downloads/) – rijetko!
AppInventor
Motodev
DroidDraw
Manifest (obilježja aplikacije)
jednostavno i brzo
mnoštvo bibilioteka
emulator, platformski neovisno
• Upute za razvoj aplikacija
– http://developer.android.com/guide/index.html
• API Reference
45
– http://developer.android.com/reference/packages.html
Razvoj Android
aplikacija
46
23
Razvoj Android aplikacija – izgradnja i pokretanje
Compiled resources
(xml files)
47
48
24
Razvoj Android aplikacija:
međuplatformski razvoj, oblak računala
Programski jezici i tehnologije:
•Java – kao službeni jezik razvoja za Android.
•Kotlin – kasnije se počeo koristiti, nešto jednostavniji
•C/C++ - Android Studio podržava C++ s Java NDK. To omogućuje nativni razvoj s
tim što je C++ kompliciraniji za korištenje.
•C# - nešto prikladniji korisniku od C ili C++, a podržava Unity i Xamarin, koji
omogućuju razvoj igara i međuplatformski razvoj.
•BASIC - dodatna opcija uz B4S IDE iz Anywhere Software.
•Corona/LUA - drugi međuplatformski alat izgrađen na LUA, a značajno
pojednostavljuje postupka razvoja pozivanjem nativnih knjižnica.
•PhoneGap (HTML, CSS, JavaScript) – navedene tehnologije mogu se koristiti osim
za web i u PhoneGap za razvoj međuplatformskih aplikacija.
Micorsoft Azure
Google Cloud
Kotlin
49
50
25
Građa Android aplikacija
MainActivity.java
package com.example.helloworld;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity> 51
</application>
</manifest>
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:padding="@dimen/padding_medium"
android:text="@string/hello_world"
tools:context=".MainActivity" />
</RelativeLayout>
52
26
Objavljivanje i naplata
• Aplikacije koje se plaćaju na Android Marketu, te drugim trgovinama
(Trgovina Play)
• Slobodne, ad-supported applikacije na Android Marketu
• Usluge drugim “developerima”
• Natjecanja (Android Developer Challenge)
• http://www.android.com/market/
• http://ieeemadc.org/
• Zahtijeva Google Developer Account
53
Android uređaji
Prednosti Androida
otvorena platforma
više IDE za programiranje
najveći rast programa i mobilnih uređaja
54
27
Android tržište
Preko 2.000.000 aplikacija
Preko 25 milijardi preuzimanja aplikacija
http://www.androlib.com/appstats.aspx
55
28