Projektovanje namenskih računarskih struktura 1 · Izazovi usled raznolikosti upotrebe Različiti...

19
Odsek za računarsku tehniku i računarske komunikacije Projektovanje namenskih ra čunarskih struktura 1 Uvod u Android platformu

Transcript of Projektovanje namenskih računarskih struktura 1 · Izazovi usled raznolikosti upotrebe Različiti...

Page 1: Projektovanje namenskih računarskih struktura 1 · Izazovi usled raznolikosti upotrebe Različiti način upotrebe (use case), drugačiji zahtevi Na primer o Kod prenosivih uređaja,

Odsek za računarsku tehniku i računarske komunikacije

Projektovanje namenskihračunarskih struktura 1

Uvod u Android platformu

Page 2: Projektovanje namenskih računarskih struktura 1 · Izazovi usled raznolikosti upotrebe Različiti način upotrebe (use case), drugačiji zahtevi Na primer o Kod prenosivih uređaja,

Android platforma

Platforma za mobilne telefone, prvenstveno

Sada je platforma za namenske (engl. embedded) uređaje

o mobilni telefoni

o tablet računari

o AndroidTV/GoogleTV

o TV

o STB

o Google Wear

o Automotive

Postoji i verzija za PC uređaje

o Native: http://www.android-x86.org, Bliss OS

o Emulator: Bluestacks, Memu2020 2

Page 3: Projektovanje namenskih računarskih struktura 1 · Izazovi usled raznolikosti upotrebe Različiti način upotrebe (use case), drugačiji zahtevi Na primer o Kod prenosivih uređaja,

Izazovi usled raznolikosti upotrebe

Različiti način upotrebe (use case), drugačiji zahtevi

Na primer

o Kod prenosivih uređaja, potrošnja je veoma bitna

o Takođe, dimenzije su bitne

o Korisnička sprega je veoma različita, prilagođena upotrebi

o Upotreba nije ista ukoliko imate daljinski upravljač umesto ekrana osetljivog na dodir

o Dodatni servisi (GSM, DVB, automotive) usložnjavaju realizaciju

2020 3

Page 4: Projektovanje namenskih računarskih struktura 1 · Izazovi usled raznolikosti upotrebe Različiti način upotrebe (use case), drugačiji zahtevi Na primer o Kod prenosivih uređaja,

Operativni sistem ili platforma?

Zadaci operativnog sistema:

o Rukovanje resursima sistema u zavisnosti od ograničenja i prioriteta (procesor, memorija, disk, I/O)

o Zaštita pristupa i podataka (korisnički nalozi, izolacija procesa)

o Apstrakcija hardvera (drajveri)

o Obezbeđivanje jednolikog programskog interfejsa na raznim hardverskim platformama (npr. POSIX)

Tokom nastave, Android ćemo zvati platformom

2020 4

Page 5: Projektovanje namenskih računarskih struktura 1 · Izazovi usled raznolikosti upotrebe Različiti način upotrebe (use case), drugačiji zahtevi Na primer o Kod prenosivih uređaja,

Najbitniji momenti istorije Androida

2002 – Andy Rubin u kompaniji Danger razvija telefon Sidekick.

2003 – Andy Rubin osnuje kompaniju Android

2005 – Google kupuje Android

2008 – Goggle završava razvoj Android 1.0

2009 – Pojava prvih Android uređaja na tržištu

2020 5

Page 6: Projektovanje namenskih računarskih struktura 1 · Izazovi usled raznolikosti upotrebe Različiti način upotrebe (use case), drugačiji zahtevi Na primer o Kod prenosivih uređaja,

Osnovne karakteristike Androida

Opšte karakteristike sa stanovišta upotrebe

o Aplikativno radno okruženje

o Virtuelna mašina

o Integrisan internet pretraživač

o Optimizovana grafička sprega

o Širok ekosistem aplikacija

Sa stanovišta razvoja

o Proširivost

o Mrežne sprege

o Konzistentna aplikativna programska sprega (API)

o Zamenljivost komponenata

o Bogato razvojno okruženje

2020 6

Page 7: Projektovanje namenskih računarskih struktura 1 · Izazovi usled raznolikosti upotrebe Različiti način upotrebe (use case), drugačiji zahtevi Na primer o Kod prenosivih uređaja,

Opšte činjenice od Androidu

Otvorena platforma

o operativni sistem je open source, ali … model razvoja je drugačiji

o Android Open Source Project

o SDK je besplatan

o NDK je besplatan

http://developer.android.com/index.html

Platforma je bazirana na Linux jezgru (Linux kernel)

o jezgro i drajveri su u kernel prostoru (kernel space)

o nativne biblioteke su u korisničkom prostoru (user space)

o aplikacije se izvršavaju u Java VM (Dalvik)

o Java biblioteke za vezu aplikacija sa nativnim bibliotekama

2020 7

Page 8: Projektovanje namenskih računarskih struktura 1 · Izazovi usled raznolikosti upotrebe Različiti način upotrebe (use case), drugačiji zahtevi Na primer o Kod prenosivih uređaja,

Model razvoja Androida

Android jeste otvorenog koda, ali je razvoj diktiran od strane Google

Postoji namenski razvojni tim u Google koji razvija Android platformu

Dizajn odluke u skladu sa poslovnom politikom Google

Postoji slab uticaj zajednice na razvoj, većinom samo u formi ispravke grešaka

Google objavljuje nove verzije Androida nakon objave odabranih modela na tržištu (Nexus linija proizvoda, Pixel linija proizvoda)

2020 8

Page 9: Projektovanje namenskih računarskih struktura 1 · Izazovi usled raznolikosti upotrebe Različiti način upotrebe (use case), drugačiji zahtevi Na primer o Kod prenosivih uređaja,

Android AOSP

AOSP = Android Open Source Project

Izvorni kod Androida se može naći na

o http://source.android.com/

Android platforma se sastoji od preko 34 miliona linija koda (podatak iz 2018) uključujući

o 8 miliona linija XML,

o 11 miliona linija C/C++

o 15 miliona linija Java

Koristi se GIT sistem za kontrolu verzija

o https://android.googlesource.com/platform/manifest

Linux kernel source po pravilu nije deo AOSP

o Dodatnih 27.8 miliona linija koda

2020 9

Page 10: Projektovanje namenskih računarskih struktura 1 · Izazovi usled raznolikosti upotrebe Različiti način upotrebe (use case), drugačiji zahtevi Na primer o Kod prenosivih uređaja,

Raspoloživost izvornog koda

Komponente

o Linux jezgro

o Željena Android platforma

Izvori

o Linux jezgro sa kernel.org

o AOSP sa sajta source.android.com

Android platforma je u user space

Ali je uticao i na Linux jezgro usled rasprostranjenosti

o Modifikacije Linux jezgra

o Unifikacija

2020 10

Page 11: Projektovanje namenskih računarskih struktura 1 · Izazovi usled raznolikosti upotrebe Različiti način upotrebe (use case), drugačiji zahtevi Na primer o Kod prenosivih uređaja,

Verzije Android OS

Verzije i API:

o 1.5 – Cupcake (API v3)

o 1.6 – Donut (API v4)

o 2.0-2.1 – Eclair (API v7)

o 2.2 – Froyo (API v8)

o 2.3.x – Gingerbread (API v9 - 10)

o 3.x.x – Honeycomb (API v11 - 13)

o 4.0 – Ice Cream Sandwich (API v14 - 15)

o 4.1, 4.2, 4.3 – Jelly Bean (API v16 - 18)

o 4.4 – Kit Kat (API v19-20)

o 5.0 – Lollipop (API 21)

o 5.1 – Lollipop (API 22)

2020 11

Frag-mentacija!

o 6.0 – Marshmallow (API 23)

o 7.0 – Nougat (API 24-25)

o 8.0, 8.1 – Oreo (API 26-27)

o 9.0 – Pie (API 28)

o 10.0 – Android 10 (API 29)

Page 12: Projektovanje namenskih računarskih struktura 1 · Izazovi usled raznolikosti upotrebe Različiti način upotrebe (use case), drugačiji zahtevi Na primer o Kod prenosivih uređaja,

Udeo raznih verzija Androida

2020 12

Page 13: Projektovanje namenskih računarskih struktura 1 · Izazovi usled raznolikosti upotrebe Različiti način upotrebe (use case), drugačiji zahtevi Na primer o Kod prenosivih uređaja,

Udeo Androida na tržištu

132020

Page 14: Projektovanje namenskih računarskih struktura 1 · Izazovi usled raznolikosti upotrebe Različiti način upotrebe (use case), drugačiji zahtevi Na primer o Kod prenosivih uređaja,

Udeo rezolucije ekrana

Data collected during a 7-day period ending on October 26, 2018.

Any screen configurations with less than 0.1% distribution are not shown.

2020 14

- Osmišljavanje GUI

- Testiranje

- Fragmentacija

Page 15: Projektovanje namenskih računarskih struktura 1 · Izazovi usled raznolikosti upotrebe Različiti način upotrebe (use case), drugačiji zahtevi Na primer o Kod prenosivih uređaja,

Softverske licence

Softverska licenca je dokument koji pravno reguliše upotrebu i distribuciju softvera uz koji je vezan (priložen).

Često se koristi termin izvedeni rad

Copyleft

o LGPL, GPL

o Zahtevaju da i izvedeni rad bude pod istom licencom

o Pogodni za projekte od opšte koristi, nepogodni za komercijalne projekte

Copyright

o Apache, BSD, MIT

o Ne zahtevaju da i izvedeni rad bude pod istom (manje liberalnom) licencom

o Pogodni za komercijalne projekte, ne garantuju vraćanje rezultata zarad opšteg dobra

2020 15

Page 16: Projektovanje namenskih računarskih struktura 1 · Izazovi usled raznolikosti upotrebe Različiti način upotrebe (use case), drugačiji zahtevi Na primer o Kod prenosivih uređaja,

Softverske licence Androida

Android se distribuira pod Apache 2 licencom

Linux jezgro se distribuira pod licencom GPL v2

2020 16

Page 17: Projektovanje namenskih računarskih struktura 1 · Izazovi usled raznolikosti upotrebe Različiti način upotrebe (use case), drugačiji zahtevi Na primer o Kod prenosivih uređaja,

Pregled softverskih licenci

2020 17

LicencaPogodnost upotrebe za komercijalne svrhe

Apache License 2.0 Da

BSD 2-clause License Da

MIT License Da

Mozilla Public License 2.0 (MPL) Delimično

Eclipse Public License (EPL) Delimično

GNU Lesser General Public License v2.1 (LGPL-v2.1) Delimično

GNU General Public License v2.0 (GPL-v2) Ne

GNU General Public License v3.0 (GPL-v3) Ne

https://tldrlegal.com

Page 18: Projektovanje namenskih računarskih struktura 1 · Izazovi usled raznolikosti upotrebe Različiti način upotrebe (use case), drugačiji zahtevi Na primer o Kod prenosivih uređaja,

Osnovna arhitektura Androida

Arhitektura softvera Androida je slojevita

o Sloj aplikacija

o Sloj radnog okvira

o Nativni sloj

Virtuelna mašina

Sloj abstrakcije platforme

o Sloj jezgra

o Fizička arhitektura

Arhitektura softvera obradiće se od viših slojeva ka nižim

Cilj je da se studentima prvo prenesu znanja koja mogu biti korisna na vežbama

2020 18

App0 App1 App2 App3 App4

Application layer

Activity manager

Frameworks layerWindow manager

Content providers

View systemNotification

manager

Package manager

Resource manager

XMPP service

Surface manager

Runtime layer

OpenGL/ES

SGL

Media framework

Freetype

SSL

SQLite

Webkit

libc

Libraries Android runtime

CoreLibraries

Dalvik Virtual Machine (DVM)

Kernel layer

Display driver

USB driver

Mouse driver

Keyboard driver

Ethernet driver

WiFi driver

Flash memory driver

Audio drivers

Binder (IPC) driver

Power management

Hardware

Java

C, C

++, n

ativ

e co

de

Ass

emb

ler,

C

Graphics Audio Camera GPS ...

Hardware Abstraction Layer (HAL)

Page 19: Projektovanje namenskih računarskih struktura 1 · Izazovi usled raznolikosti upotrebe Različiti način upotrebe (use case), drugačiji zahtevi Na primer o Kod prenosivih uređaja,

Rezime

Android je besplatna, open source platforma

Usled prilagodljivosti, danas se koristi na veoma raznolikom hardveru

Brzo se razvija i širi

Google upravlja razvojem Androida

Kroz Android, mogu se analizirati razni aspekti razvoja softvera

o dizajn i dizajn šabloni softvera

o postupci razvoja softvera

o softverski alati

o poslovni aspekt

Tokom kursa, slojevita arhitektura Androida obradiće se top-down

2020 19