Programowanie dla Androidafcds.cs.put.poznan.pl/MyWeb/Praca/Ubiquitous/UBIN180317and.pdf ·...

22
Programowanie dla Androida Ubiquitous

Transcript of Programowanie dla Androidafcds.cs.put.poznan.pl/MyWeb/Praca/Ubiquitous/UBIN180317and.pdf ·...

Page 1: Programowanie dla Androidafcds.cs.put.poznan.pl/MyWeb/Praca/Ubiquitous/UBIN180317and.pdf · Historia • Opracowany pierwotnie przez firmę Android Inc. z Palo Alto (Andy Rubin,

Programowanie dla AndroidaUbiquitous

Page 2: Programowanie dla Androidafcds.cs.put.poznan.pl/MyWeb/Praca/Ubiquitous/UBIN180317and.pdf · Historia • Opracowany pierwotnie przez firmę Android Inc. z Palo Alto (Andy Rubin,

Historia

• Opracowany pierwotnie przez firmę Android Inc. z Palo Alto (Andy Rubin, Rich Miner, Nick Sears, Chris White), założoną w 2003 r.

• Pierwotnie planowany jako system dla aparatów fotograficznych

• Dopiero później podjęto decyzję o przeniesieniu systemu dla telefonów jako konkurencji dla Symbian i Windows Mobile.

Page 3: Programowanie dla Androidafcds.cs.put.poznan.pl/MyWeb/Praca/Ubiquitous/UBIN180317and.pdf · Historia • Opracowany pierwotnie przez firmę Android Inc. z Palo Alto (Andy Rubin,

Historia

• W 2005 r. Google przejął firmę Android i kontynuował prace nad systemem oferując go bezskutecznie kilku producentom telefonów.

• 9 stycznia 2007 r. prezentacja iPhone’a kompletnie zrewolucjonizowała podejście Google do systemu.

• 23 września 2008 r. miała miejsce premiera pierwszego telefonu z Androidem HTC Dream (w Polsce Era G1).

Page 4: Programowanie dla Androidafcds.cs.put.poznan.pl/MyWeb/Praca/Ubiquitous/UBIN180317and.pdf · Historia • Opracowany pierwotnie przez firmę Android Inc. z Palo Alto (Andy Rubin,

Historia wersjiWERSJA NAZWA PREMIERA POZIOM API

1.0 Brak 23.09.2008 11.1 (Petit Four) 9.02.2009 21.5 Cupcake 27.04.2009 31.6 Donut 15.09.2009 4

2.0-2.1 Eclair 26.10.2009 5-72.2-2.2.3 Froyo 20.05.2010 82.3-2.3.7 Gingerbread 6.12.2010 9-103.0-3.2.6 Honeycomb 22.02.2011 11-134.0-4.0.4 Ice Cream Sandwich 18.10.2011 14-154.1-4.3.1 Jelly Bean 9.07.2012 16-184.4-4.4.4 KitKat 31.10.2013 19-205.0-5.1.1 Lollipop 12.11.2014 21-226.0-6.0.1 Marshmallow 5.10.2015 237.0-7.1.2 Nougat 22.08.2016 24-258.0-8.1 Oreo 21.08-2017 26-27

Page 5: Programowanie dla Androidafcds.cs.put.poznan.pl/MyWeb/Praca/Ubiquitous/UBIN180317and.pdf · Historia • Opracowany pierwotnie przez firmę Android Inc. z Palo Alto (Andy Rubin,

Android• System operacyjny oparty na jądrze Linux’a.

• Dostosowany do obsługi za pomocą interfejsu dotykowego.

• Głównie przeznaczony dla platform ARM32 i ARM64.

• Dostępny jako open-source w ramach projektu Android Open Source Project.

• W praktyce część oprogramowania urządzeń jest własnościowa.

Page 6: Programowanie dla Androidafcds.cs.put.poznan.pl/MyWeb/Praca/Ubiquitous/UBIN180317and.pdf · Historia • Opracowany pierwotnie przez firmę Android Inc. z Palo Alto (Andy Rubin,

Android

• Android trafił też do telewizorów, komputerów, zegarków, samochodów

• Dystrybucja aplikacji poprzez Google Play Store (dawniej Android Market)

• Większość bibliotek jest napisana w C

Page 7: Programowanie dla Androidafcds.cs.put.poznan.pl/MyWeb/Praca/Ubiquitous/UBIN180317and.pdf · Historia • Opracowany pierwotnie przez firmę Android Inc. z Palo Alto (Andy Rubin,

Architektura

Page 8: Programowanie dla Androidafcds.cs.put.poznan.pl/MyWeb/Praca/Ubiquitous/UBIN180317and.pdf · Historia • Opracowany pierwotnie przez firmę Android Inc. z Palo Alto (Andy Rubin,

Programowanie

• Podstawowym językiem dla platformy jest od początku Java.

• Do wersji 4.4 za wykonanie kodu odpowiedzialna była maszyna o nazwie Dalvik.

• Od 4.4 odpowiada za nie Android Run Time (ART).

• Można też pisać kod w C/C++.

• Alternatywnym językiem jest też obecnie Kotlin.

Page 9: Programowanie dla Androidafcds.cs.put.poznan.pl/MyWeb/Praca/Ubiquitous/UBIN180317and.pdf · Historia • Opracowany pierwotnie przez firmę Android Inc. z Palo Alto (Andy Rubin,

Programowanie

• Kod źródłowy w Javie/Kotlinie jest tłumaczony do postaci bytecode’u (DEX)

• W momencie instalacji na urządzeniu DEX jest kompilowany do instrukcji procesora jako Executable and Linkable Format (ELF).

• W momencie uruchomienia ładowany jest kod ELF, co znacznie przyspiesza jego działanie i oszczędza baterię.

Page 10: Programowanie dla Androidafcds.cs.put.poznan.pl/MyWeb/Praca/Ubiquitous/UBIN180317and.pdf · Historia • Opracowany pierwotnie przez firmę Android Inc. z Palo Alto (Andy Rubin,

Biblioteki

• Zawierają w sobie wsparcie dla funkcji oferowanych przez urządzenie.

• Często są to wrapery dla bibliotek napisanych w C/C++

Page 11: Programowanie dla Androidafcds.cs.put.poznan.pl/MyWeb/Praca/Ubiquitous/UBIN180317and.pdf · Historia • Opracowany pierwotnie przez firmę Android Inc. z Palo Alto (Andy Rubin,

Przykładowe biblioteki

• android.app - model aplikacji

• android.database - dostęp do baz danych

• android.graphics - podstawowa grafika 2D

• android.opengl - grafika 3D

• android.net - obsługa sieci

• android.webkit - obsługa przeglądarki www

Page 12: Programowanie dla Androidafcds.cs.put.poznan.pl/MyWeb/Praca/Ubiquitous/UBIN180317and.pdf · Historia • Opracowany pierwotnie przez firmę Android Inc. z Palo Alto (Andy Rubin,

Application Framework• Zawiera usługi umożliwiające uruchamianie i działanie

aplikacji.

• Zawiera:

• Activity Manager - steruje cyklem życia aplikacji.

• Content Providers - umożliwia współdzielenie danych między modułami.

• Resource Manager - zarządza zasobami spoza aplikacji.

Page 13: Programowanie dla Androidafcds.cs.put.poznan.pl/MyWeb/Praca/Ubiquitous/UBIN180317and.pdf · Historia • Opracowany pierwotnie przez firmę Android Inc. z Palo Alto (Andy Rubin,

Application Framework• Notifications Manager - umożliwia wyświetlanie

powiadomień.

• View System - widoki składające się na interfejs użytkownika.

• Package Manager - umożliwia zarządzanie zainstalowanymi aplikacjami.

• Telephony Manager - obsługuje funkcjonalność telefonu.

• Location Manager - dostęp do usług lokalizacji.

Page 14: Programowanie dla Androidafcds.cs.put.poznan.pl/MyWeb/Praca/Ubiquitous/UBIN180317and.pdf · Historia • Opracowany pierwotnie przez firmę Android Inc. z Palo Alto (Andy Rubin,

Programowanie

• Twórcy Androida byli mocno nastawieni na wielokrotne wykorzystanie komponentów.

• Stąd program na Androida składa się z szeregu niezależnych od siebie modułów nazywanych Aktywnościami (Activities), które mogą być wielokrotnie wykorzystywane.

• Aktywność nie wie kiedy zostanie wywołana i nie może bezpośrednio zależeć od innych aktywności (mieć dostępu do jej metod lub pól).

• Aktywność dziedziczy po klasie Activity.

Page 15: Programowanie dla Androidafcds.cs.put.poznan.pl/MyWeb/Praca/Ubiquitous/UBIN180317and.pdf · Historia • Opracowany pierwotnie przez firmę Android Inc. z Palo Alto (Andy Rubin,

• Aby aktywności mogły się ze sobą komunikować, muszą wykorzystywać mechanizm Intencji (Intent).

• Intencje zawierają opis operacji i opcjonalnie dane z nią związane.

• Intencja może wprost wskazać klasę, która ma zostać wywołana (explicite) albo zostawić wybór klasy ART (implicite).

• Intencje nadawcze (Broadcast Intents) - rozsyłają komunikaty do wszystkich aplikacji w systemie, które zapiszą się na ich nasłuchiwanie (Broadcast Receivers).

Page 16: Programowanie dla Androidafcds.cs.put.poznan.pl/MyWeb/Praca/Ubiquitous/UBIN180317and.pdf · Historia • Opracowany pierwotnie przez firmę Android Inc. z Palo Alto (Andy Rubin,

Usługi

• Usługa (Service) to proces, który jest pozbawiony interfejsu użytkownika i może wykonywać zadania w tle.

• Może zostać uruchomiony i zarządzany przez aktywność.

• Usługi mogą też wyświetlać wprost powiadomienia.

Page 17: Programowanie dla Androidafcds.cs.put.poznan.pl/MyWeb/Praca/Ubiquitous/UBIN180317and.pdf · Historia • Opracowany pierwotnie przez firmę Android Inc. z Palo Alto (Andy Rubin,

Manifest aplikacji• Jest to plik XML opisujący aplikację. Zawiera

informacje o:

• Aktywnościach,

• Usługach (Services),

• Odbiorcach (Brodcast Receivers),

• Dostawcach danych,

• Uprawnieniach aplikacji.

Page 18: Programowanie dla Androidafcds.cs.put.poznan.pl/MyWeb/Praca/Ubiquitous/UBIN180317and.pdf · Historia • Opracowany pierwotnie przez firmę Android Inc. z Palo Alto (Andy Rubin,

Zasoby

• W pakiecie aplikacji znajdują się też różne zasoby, takie jak:

• Łańcuchy tekstowe,

• Grafiki,

• Czcionki,

• …

Page 19: Programowanie dla Androidafcds.cs.put.poznan.pl/MyWeb/Praca/Ubiquitous/UBIN180317and.pdf · Historia • Opracowany pierwotnie przez firmę Android Inc. z Palo Alto (Andy Rubin,

Czas życia aplikacji

• Mimo niezłych specyfikacji technicznych współczesnych telefonów są one nadal uważane za urządzenia o ograniczonych zasobach.

• Dlatego system zarządza aplikacjami inaczej niż biurkowy system operacyjny.

• Gdy zaczyna brakować zasobów, procesy są zabijane, a ich zasoby zwalniane.

• O kolejności zabijania decyduje priorytet procesu.

Page 20: Programowanie dla Androidafcds.cs.put.poznan.pl/MyWeb/Praca/Ubiquitous/UBIN180317and.pdf · Historia • Opracowany pierwotnie przez firmę Android Inc. z Palo Alto (Andy Rubin,

Czas życia aplikacji

Proces pierwszoplanowy

Proces widoczny

Proces - usługa

Proces w tle

Proces pusty

Najwyższy priorytet

Najniższy priorytet

Page 21: Programowanie dla Androidafcds.cs.put.poznan.pl/MyWeb/Praca/Ubiquitous/UBIN180317and.pdf · Historia • Opracowany pierwotnie przez firmę Android Inc. z Palo Alto (Andy Rubin,

Czas życia aplikacji• Stan aplikacji jest wprost zależny od stanu jej

aktywności.

• W trakcie działania systemu wszystkie aktywności są przechowywane na stosie (Activity Stack).

• Nowa aktywność jest zawsze umieszczana na szczycie stosu.

• Po zamknięciu aktywności (np. przyciskiem „Back”), jest ona zdejmowana ze stosu, a uaktywniana jest ta, która była poprzednio.

Page 22: Programowanie dla Androidafcds.cs.put.poznan.pl/MyWeb/Praca/Ubiquitous/UBIN180317and.pdf · Historia • Opracowany pierwotnie przez firmę Android Inc. z Palo Alto (Andy Rubin,

Czas życia aplikacjiAktywność uruchamiania

Aktywność aktywna

Aktywność aktywna poprzednio

Aktywność

Aktywność najstarszaStos

akt

ywnośc

iNa

jśw

ieżs

zeNa

jsta

rsze

Push

Pop

Zabita

Aktywność zamknięta lub użytkownik wrócił do poprzedniej

Aktywność zabita aby uwolnić pamięć