Pavol Bisták
Vlastnosti mobilných operačných systémov Slúžia pre chytré telefóny, tablety, PDA, iné mobilné zariadenia (herné prístroje, mobilnú TV,...) Menšie rozmery displeja (rozlíšenie), zmena orientácie Limitované napájacie zdroje, hardvérové zdroje (CPU, GPU, pamäť), výkon Špecifické črty: dotyková obrazovka, bunkové systémy, senzory Multimédiá: kamera, video, hlasový záznam, prehrávače hudby, videa Spojenie: Bluetooth, WiFi, GPS, NFC Bývajú rozdelené na užívateľskú platformu a proprietárny systém reálneho času
Prehľad mobilných platforiem Android Voľne dostupný, otvorený (free, open-source), vyvíjaný Googlom pre mobilné zariadenia rôznych výrobcov Programovací jazyk Java Viac ako 80%-ný podiel ios Komerčný, vyvíjaný firmou Apple, špeciálne pre zariadenia Apple (iphone, ipad, ipod Touch, Apple TV) Programovací jazyk Objective C Podieľ cca 16% Windows 10 Mobile Komerčný, vyvíjaný firmou Microsoft, podieľ 2,7% BlackBerry 10 pre BackBerry zariadenia, podieľ 0,4%
História Androidu 2005 odkúpil Google spoločnosť Android Inc. Pod vedením Andyho Rubina vyvinuli platformu založenú na Linuxe 2007 bolo vytvorené konzorcium Open Handset Alliance (Google, HTC, Intel, LG, Motorola, NVidia, Qualcomm, Samsung, Texas Instrument), ktoré vydalo prvý produkt, mobilnú platformu Android, založenú na jadre Linuxu 2.6. 2008 prvý telefón s Androidom (HTC) Verzie 2.x pre telefóny, 3.x pre tablety, od 4.x spoločné Dnes najnovší Android 7.0 (Nougat) bol vydaný v auguste 2016
Architektúra systému Android
Architektúra systému Android detail
Linux-ové jadro Androidu Android používa Linux 2.6 ako hardvérovú abstrakciu Operačný systém má poskytovať Správu pamäte, procesov, napájania, IPC Ovládače a podporu architektúry
Aplikačná knižnica GNU libs (glibc) je príliš veľká a komplikovaná pre mobilné platformy, preto Android implementoval svoju vlastnú špeciálnu verziu libc Bionic libc Menšia veľkosť (200K oproti 400K u glibc) Vyňal niektoré komplikované vlastnosti C++ (napr. C++ výnimka) Špeciálna a malá implementácia pthread
Aplikačný framework (rozhranie) Je treťou vrstvou Androidu Tieto triedy a služby jednoznačne definujú Android Príkladom sú: správca aktivít, správca vyhľadávania, správca upozornení, prehrávač médií, správca okien Tieto služby sú využívané vývojármi na vytváranie aplikácií v Androide, ktoré môže bežať v emulátore alebo na reálnom zariadení
Aplikácie Štvrtou vrstvou sú samotné Androidové aplikácie a služby Tieto aplikácie sú vykonávané pomocou Dalvik virtual machine, čo je v podstate Java virtual machine ale s odlišným bytekódom Poznámka: Android tiež podporuje natívne aplikácie napísané C/C++ (hry)
Androidové aplikácie Androidové aplikácie sú distribuované ako apk. Súbory (apk - Android package) Je to jednoducho zozipovaný súbor, ktorý ma špeciálnu štruktúru (podobne ako JAR) APK obsahuje Android manifest (XML súbor s metadátami) Zdrojový balík obsahujúci zvuky, grafiky,... Triedy Dalvik prislúchajúce aplikácii
Životný cyklus aplikácie
Manažment procesov Rozdiel medzi cyklom mobilnej aplikácie a desktopovej aplikácie Android zvyčajne neukončí beh aplikácie, čiže táto zostáva bežať aj keď sa prepne na inú aplikáciu Android ukončí beh aplikácie, až keď je zaplnenie pamäte príliš vysoké, ale pritom si uchová stavy pre jej rýchly reštart neskôr
Manažment pamäte Väčšinu práce urobí Linuxové jadro Manažment pamäti je založený na stránkovaní Virtuálne adresy sú mapované na fyzické adresy Android nepodporuje virtuálnu pamäť
Manažment napájania
Dalvik Virtual Machine Je špeciálnym Java Virtual machine navrhnutý bežať s limitovanými zdrojmi. Pamäťovo efektívny Register machine vs. Stack machine (moderné JVM) Menej inštrukcií, rýchlejšie vykonanie Zbiehanie viacnásobných VM viac efektívne
DEX súbory Java class súbory sú konvertované do.dex súborov, ktoré Dalvik vykoná Počas tohto procesu je Java byte-kód konvertovaný do Dalvik-byte kódu
Efektívnosť pamäte Zdieľanie konštantnej banky reťazcov Zdieľanie čistej (niekedy aj nevyčistenej) pamäte medzi procesmi ako je to len možné.dex sú mapované ako objekty typu iba na čítanie pomocou mmap() Pamäťovo efektívna JIT implementácia JIT samotné má iba 100K Kód v cache pamäti a podporné dátové štruktúry zaberú ďalších 100K pre každú aplikáciu
Zdieľanie banky reťazcov public interface Zapper { public String zap(string s, Object o); } public class Blort implements Zapper { public String zap(string s, Object o) {... } } public class ZapUser { public void usezap(zapper z) { z.zap(...); } }
Zdieľanie banky reťazcov
Zdieľanie pamäte
Model programu Každá aplikácia beží vo vlastnom procese Aplikácia môže mať jeden alebo viacero komponentov: Aktivity, služby, prijímače vysielania, poskytovateľov obsahu Úloha ( aplikácia z pohľadu používateľa) pozostáva z niekoľkých aktivít z jednej alebo viacerých aplikácií Aplikácia zostáva bežať až pokiaľ nie je ukončená systémom v dôsledku nedostatku pamäte
Vývoj Android aplikácií v Eclipse Java SE Development Kit 7 (http://oracle.com) Eclipse Classic (http://eclipse.org) Android SDK (http://developer.android.com) Android Development Tools (ADT) Plug-in
Android Studio Android Studio IDE Android SDK nástroje Android 6.0 (Marshmallow) platforma Android 6.0 emulačný obraz systému s Google API
Inštalácia Android Studio JDK 7 SDK manažér AVD manažér