projektovanje namenskih računarskih struktura 1 · izazovi usled raznolikosti upotrebe različiti...
TRANSCRIPT
Odsek za računarsku tehniku i računarske komunikacije
Projektovanje namenskihračunarskih struktura 1
Uvod u Android platformu
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
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
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
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
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
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
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
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
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
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)
Udeo raznih verzija Androida
2020 12
Udeo Androida na tržištu
132020
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
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
Softverske licence Androida
Android se distribuira pod Apache 2 licencom
Linux jezgro se distribuira pod licencom GPL v2
2020 16
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
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)
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