You are on page 1of 28

Sveučilište J.J.

Strossmayera u Osijeku
Fakultet elektrotehnike, računarstva i informacijskih
tehnologija Osijek

OPERACIJSKI SUSTAVI
(predavanja u ak. god. 2018/19.)

prof.dr.sc. Goran Martinović


www.etfos.hr/~martin
goran.martinovic@ferit.hr
Tel: 031 495-401
Soba: K2-3

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

Nedostaci mobilnih uređaja


• Ipak, ograničena veličina zaslona
• Ograničen kapacitet baterije
• Ograničena brzina procesora
• Ograničen i ponekad spor pristup mreži
• Ograničen ili nespretan ulaz: meka tipkovnica, phone keypad,
touch screen, ...
• Ograničene mogućnosti web preglednika
• Raspon platforme i konfiguracije ograničen uređajem
3

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

Android 2.3 (Gingerbread)

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

 promjene strukture OS-a: Dalvik ART

 podržava 64-bitnu arhitekturu procesora i aplikacija

2015.
Android 6.0 (Marshmallow)
2016.
Android 7.0 (Nougat)
prikaz više aplikacija na zaslonu odjednom
inline odziv na obavijesti

OpenJDK-zasnovana Java okolina i potpora Vulkan grafici API-ja ispisa

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

Pie 9.0 August 6, 2018 28 Supported

API - Application Programming Interface, cjelobrojna vrijednost API-ja komunicira s određenim


bibliotekama i objektima klasa Android uređaja.

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

 Software Development Kit (SDK)

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

Okolina i osnove rada Androida


 Linux osnova za rad s procesima, memorijom, pogonske programe i
upravljanje potrošnjom energije.
• Run-time okolina sadrži skup biblioteka i Dalvik virtualni stroj
• Java kao jezik za razvoj aplikacija za Android uređaje. Uz standardni Java
API, Google dizajnirao odvojeni Android API za razvoj u Javi.
• Datoteke Java razreda (engl. class) najprije se prevode u Java bytecode
(.dex), a optimiran je za mobilne uređaje. Zatim se prebacuju u izvršnu
datoteku koja se pokreće na Dalvik virtualnom stroju.
• Dalvik virtualni stroj dizajniran za Android i optimiran za mobilne uređaje s
ograničenim performansama memorije i procesora.
• Izvorno se svaka aplikacija pokreće kao nezavisan Linux proces.
• Skup biblioteka za Android aplikacije uključuje okvire za razvoj web
preglednika (webkit), podršku bazama podataka (SQLite) i multimediji.
• Biblioteka libc slična je standardnoj C biblioteci, ali je manja i prilagođena za
načelno sporije procesore mobilnih uređaja.
16

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

za izmjenu podataka između procesa ili niti unutar istog procesa


za upravljanje napajanjem (Power Managment).

- jezgrin i korisnički način rada pokreću se kao i na Linuxu

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

Razvoj Android aplikacije


Razvoj Android aplikacije
- Definiranje grafičkog korisničkog sučelja (GUI)
- Upravljanje događajima (events)
- Upravljanje podacima aplikacije
- Pozadinske (background) operacije
- Obavijesti (notifications) prema korisniku

Komponente aplikacije
- Activities
- Intents
- Services
- Content Providers
- Broadcast Receivers

30

15
Razvoj Android aplikacije
Komponente aplikacije
- Activities
- Intents
- Services
- Content Providers
- Broadcast Receivers

31

Komponente Android aplikacije: Activities


 Activity odgovara jednom zaslonu/prozoru aplikacije i određuje
korisničko sučelje, kao i interakaciju korisnika sa sučeljem.
 Aplikacija se može sastojati od više zaslona ili aktivnosti.
 Tzv. Home Activity pokazuje se pokretanjem aplikcije.
 Aktivnosti međusobno razmjenjuju informacije.
 Svaka aktivnost sastoji se od liste grafičkih komponenti.
 Neke od tih komponenti (zvane Views) mogu međujelovati s
korisnikom rukovanjem događaja - events (npr. tipka).
 Dva su pristupa u izgradnji grafičkog sučelja:
PROGRAMATSKI (Java kod)
Upravlja događajima (events) i rukuje međudjelovanjem (interaction)
s korisnikom
Button button=new Button (this);
. TextView text= new TextView();
text.setText(“Hello world”);

16
Komponente Android aplikacije: Activities

Komponente Android aplikacije: Activities


DEKLARATIVNI (XML kod)
Definira dizajn/razmještaj/layout i resurse/resources koje aplikacija
koristi.

< TextView android.text=@string/hello” android:textcolor=@color/blue


android:layout_width=“fill_parent” android:layout_height=“wrap_content” />
< Button android.id=“@+id/Button01” android:textcolor=“@color/blue”
android:layout_width=“fill_parent” android:layout_height=“wrap_content” />

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

Komponente Android aplikacije: Activities


 Pogledi (Views) mogu generirati događaje (Events) (potaknute
međudjelovanjem korisnika) kojima mora upravljati Android
programer.
 Activity Manager odgovoran je za kreiranje, uništavanje i upravljanje
aktivnostima.
 Aktivnosti mogu biti u sljedećim stanjima: starting, running, stopped,
destroyed, paused.
 Samo jedna aktivnost može u nekom trenutku biti u stanju running.
 Aktivnosti su organizirane u stogu (stack) i pokreću se na događaj.

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).

Komponente Android aplikacije: Services


 Services: kao Activities, ali pokrenute u pozadini. Ne omogućuju
korisničko sučelje, već pozadinsku obradu za aplikaciju.
 Koriste se za tzv. neinteraktivne zadatke (npr. umrežavanje).
 Životni vijek usluge (Service) sastoji se od tri stanja:
Starting
Running
Destroyed

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()

Komponente Android aplikacije: Broadcast Receivers


 Publish/Subscribe paradigma
 Broadcast Receivers: Aplikacija koja signalizira vanjske događaje,
odnosno omogućuje komuniciranje između Android OS-a i aplikacija.
 Tipovi obavijesti (Notification): dolazni poziv, isporuka SMS-a,
otkrivanje mreže i slično
class WifiReceiver extends BroadcastReceiver {
public void onReceive(Context c, Intent intent) {
String s = new StringBuilder();
wifiList = mainWifi.getScanResults();
for(int i = 0; i < wifiList.size(); i++){
s.append(new Integer(i+1).toString() + ".");
s.append((wifiList.get(i)).toString());
s.append("\\n");
}
mainText.setText(sb);
}
}

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

Komponente Android aplikacije: Raspodjela

 Svaka Android aplikacija sastoji se od


APK jedne APK datoteke.
datoteka • Java Byte-code (preveden za Dalvik
JVM)
• Resursi (npr. slike, video zapisi,
XML, ....)
• Biblioteke (optimalni C/C++ kod)
 Svaka aplikacija mora biti potpisana
XML
dato
C kroz ključ prije distribucije.
teke
 Aplikacije se distribuiraju preko web ili
trgovina, npr. Android Play Store

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

<uses-permission android:name=“android.permission.IACCESS_FINE_LOCATION" />

<uses-permission android:name=“android.permission.INTERNET" />

Ostale komponente Android aplikacije:


 Fragmenti
 Views
 Layouts
 Intents
 Resources
 Manifest

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)

Android Debug Bridge


http://developer.android.com/guide/developing/building/index.html#detailed-build

• ADB je klijent-poslužitelj program koji spaja klijentski i stroj


onoga tko razvija aplikaciju u uređaj i emulator.
• Okolina kao Eclipse omogućuje takav postupak.

47

Razvoj Android aplikacija – izgradnja i pokretanje

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

Građa Android aplikacija

50

25
Građa Android aplikacija
MainActivity.java
package com.example.helloworld;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.tutorialspoint7.myapplication">

<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>

Građa Android aplikacija


strings.xml
<resources>
<string name="app_name">HelloWorld</string>
<string name="hello_world">Hello world!</string>
<string name="menu_settings">Settings</string>
<string name="title_activity_main">MainActivity</string>
</resources>

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

You might also like