Android Plattform

Transcription

Android Plattform
Android Plattform
Ausarbeitung
im Fachgebiet Informatik
vorgelegt von:
Studienbereich:
Matrikelnummer:
Prüfer:
©
Alexander Shabagin
Informatik
26 02 98
Prof. Dr.-Ing. Karl-Otto Linn
2010
Dieses Werk einschlieÿlich seiner Teile ist urheberrechtlich geschützt. Jede Verwertung auÿerhalb der engen Grenzen des Urheberrechtgesetzes ist ohne Zustimmung
des Autors unzulässig und strafbar. Das gilt insbesondere für Vervielfältigungen,
Übersetzungen, Mikroverlmungen sowie die Einspeicherung und Verarbeitung in
elektronischen Systemen.
Android Plattform
Abstract
Android is an operating system based on Linux for mobile devices. It is developed mainly by Google and the Open Handset Alliance. On the top of the
Linux kernel there is an adjusted Java Virtual Machine which has the capability to handle processes in an operation system manner. This architecture
allows especially experienced java-developers to write code in an integrated
development environment in a custom way. This paper will explain the major
architecture principle and the main concept behind the android platform.
©
Alexander Shabagin
Android Plattform
Inhaltsverzeichnis
Inhaltsverzeichnis
Abbildungsverzeichnis
II
1 Einleitung
1
2 Android Architektur
4
2.1
2.2
2.3
2.4
Linux Kernel
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.1.1
Power Management . . . . . . . . . . . . . . . . . . . . .
6
2.1.2
Binder . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
Native Bibliotheken . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.2.1
Android Libc Implementation
. . . . . . . . . . . . . .
6
2.2.2
Storage, rendering, multimedia
. . . . . . . . . . . . . .
7
2.2.3
Surface Manager
. . . . . . . . . . . . . . . . . . . . . .
8
2.2.4
Audio Manager
. . . . . . . . . . . . . . . . . . . . . . .
9
2.2.5
Hardware Abstraction Libraries . . . . . . . . . . . . . .
9
Android Rintime
. . . . . . . . . . . . . . . . . . . . . . . . . .
10
2.3.1
Dalvik Virtual Machine . . . . . . . . . . . . . . . . . . .
10
2.3.2
Application Framework . . . . . . . . . . . . . . . . . . .
10
2.3.3
Android Initialisierung . . . . . . . . . . . . . . . . . . .
11
Android-Anwendung Architektur
12
. . . . . . . . . . . . . . . . . . . . . . . . . .
13
2.4.1
Activities
2.4.2
Lebenszyklus einer Activity
2.4.3
Umschaltung zwischen den Activities
2.4.4
Sterben einer Activity
2.4.5
Services
. . . . . . . . . . . . . . . .
13
. . . . . . . . . . .
13
. . . . . . . . . . . . . . . . . . .
13
. . . . . . . . . . . . . . . . . . . . . . . . . . .
14
2.4.6
Content Providers . . . . . . . . . . . . . . . . . . . . . .
14
2.4.7
Broadcast receivers . . . . . . . . . . . . . . . . . . . . .
15
2.4.8
AndroidManifest.xml . . . . . . . . . . . . . . . . . . . .
16
Literaturverzeichnis
©
. . . . . . . . . . . . . . . . .
Alexander Shabagin
17
I
Android Plattform
Abbildungsverzeichnis
Abbildungsverzeichnis
2.1
Android Architektur
. . . . . . . . . . . . . . . . . . . . . . . .
4
2.2
Android Power Management . . . . . . . . . . . . . . . . . . . .
7
2.3
Android Binder . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.4
Native Bibliotheken . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.5
Surface Manager
. . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.6
Audio Manager
. . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.7
Hardware Abstraction Libraries
. . . . . . . . . . . . . . . . . .
9
2.8
Dalvik Virtual Machine . . . . . . . . . . . . . . . . . . . . . . .
10
2.9
Application Framework . . . . . . . . . . . . . . . . . . . . . . .
11
2.10 Initialisierung
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
2.11 Lebenszyklus
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
2.12 Umschaltung zwischen den Activities
©
. . . . . . . . . . . . . . .
15
2.13 Content Providers . . . . . . . . . . . . . . . . . . . . . . . . . .
15
2.14 Broadcast receivers . . . . . . . . . . . . . . . . . . . . . . . . .
15
2.15 AndroidManifest.xml . . . . . . . . . . . . . . . . . . . . . . . .
16
Alexander Shabagin
II
Android Plattform
1 Einleitung
1 Einleitung
Ein Handy ist heutzutage längst nicht mehr nur ein Telefon, in den letzten
Jahren wandelte es sich zu einem vollwertigen Multimediacenter. Spiele, Video, Musik, eingebaute Kamera, Internetzugang - Alles was Desktops können,
können auch Moderne Mobilgeräte. Eine Symbiose zwischen Handy und PDA
hat sich als sehr Erfolgreich rausgestellt. Überwunden die Kommunikationsfunktion, ist er zu einem vollwertigem Arbeitsinstrument geworden, mit Hilfe
dessen man Emails lesen, Oce Dokumente anlegen und bearbeiten und im
Internet auf bestimmten Content suchen kann.
Dennoch um alle Vorteile von mobilen Geräten vollständig ausnutzten zu können, braucht man schnelle und handliche Betriebssystem. Bis vor kurzer Zeit
existierten auf dem Markt überwiegend nur zwei Plattformen: Symbian OS und
Windows Mobile. Die zwei Riesen haben ständig miteinander um die Kunden
gekämpft und gleichzeitig aber nicht auf die konkurrierende Entwicklungen geachtet. Man sollte glauben - Wozu soll man etwas Neues entwickeln, wenn das
Alte allen noch recht ist? Es stellte sich heraus, nicht allen. Das ist der Hauptgrund für die Erklärung, wieso viele Entwickler solch eine groÿe Interesse an
Android Plattform von Google haben.
Google wird schon von vielen Netzprovider und Handyproduzenten unterstützt. Solche Firmen wie: China Mobile, KDDI Corporation, NTT DoCoMo, Sprint Nextel, T-Mobile, Telecom Italia, Telefónica, HTC, LG, Motorola,
Samsung Electronics und viele andere sind OHA (Open Handset Alliance)
beigetreten. OHA wurden von Google initiiert und oziell am 5. September
2007 vorgestellt. Am 8. Dezember 2008 sind auch Vodaphone, Softbank, Sony
Ericsson, ASUSTek, Garmin, Huawei Technologies und Toshiba beigetreten.
Alliance beschäftigt sich mit den Entwicklungen für die neue Plattform und
ihrer Förderung auf dem Markt.
©
Alexander Shabagin
1
Android Plattform
1 Einleitung
Ein starker Vorteil von Google Android ist in seiner Oenheit und neue Ideologie All apps are equal. Betriebssystem bietet vorinstallierten Applikationen
bereits ab Werk keine Privilegien. Sie können alle durch Drittentwickler ersetzt
werden. Ansonsten ist es eine weitere mobile Plattform, die auf dem Linux
Kernel aufgebaut wurde. SDK für die Applikationsentwicklung und Emulator
waren schon lange vor Erscheinung des ersten Gerätes online gewesen. In die
neue Betriebssystem wurden beinah alle Service von Google integriert, was es
zu idealen Werkzeug macht, um im Internet zu surfen.
Für die Erstellung von Applikationen verwendet man Sprachen aus der Java
Familie, was wesentlich den Entwicklungsprozess beschleunigt. Eine virtuelle
Java-Maschine DALVIK liegt Google Android zugrunde, die Energieverbrauchsteuerung der Applikationen und Verteilung der Prozessorauslast ermöglicht.
Die Standartanwendungen, die in der neuen OS eingegangen sind, sind Email
und SMS Clients, Kalender, Kontakten Manager, Taschenrechner, Multimedia
Player, Wecker und ein Messenger. Insgesamt beinhaltet Android 80 Applikationen mit oenem Quellcode. Abgesehen davon, wurden in Android praktisch alle Service von Google integriert, solche wie Google Maps und Google
Docs. Eine einwandfreie Arbeit dieser Applikationen ermöglicht ein funktionaler Browser. Im Online-Geschäft Android Market existieren heutzutage
bereits zahlreihe andere Anwendungen.
Grundlage für die Entwicklungsumgebung bildet Eclipse-Plugin Android development tools. Dem Entwickler sind diverse populäre open-source Bibliotheken und Komponenten zugänglich: libc, SSL, Media Framework (PacketVideo
OpenCORE, MPEG4, AAC, AMR, H.264, MP3, JPG, PNG), Surface Manager, LibWebCore (WebKit), 2D SGL, OpenGL, FreeType. Im Gegensatz zu
herkömmlichen Linux Anwendungen, können Applikationen in Android einige
nicht standarte Funktionen benutzen: Content Providers (Austausch der Daten zwischen den Applikationen), Resource Manager (Arbeit mit XML, PNG,
JPEG), Notication Manager (ermöglicht es Anwendungen, Nachrichten in der
Statusbar Anzuzeigen), Activity Manager (verwaltet den Lebenszyklus einer
Anwendung).
In der Architektur des Input/Output Systems wird SQLite Datenbank verwendet, was Speicherung und Sortierung der Daten erleichtert. Eine interessante
©
Alexander Shabagin
2
Android Plattform
1 Einleitung
Lösung für das Sicherheitsproblem sind sogenannte Sandkasten(jede Anwendung bekommt ihre eigene virtuelle Umgebung), die Zugrie auf die andere
Applikationen einschränken. Im Falle eines Virusangries, können die Schädlinge die Arbeit anderer Applikationen nicht stören.
©
Alexander Shabagin
3
Android Plattform
2 Android Architektur
2 Android Architektur
Abbildung 2.1: Android Architektur
Android ist ein Programm-Stack für die mobilen Geräte, das ein Betriebssystem, Anwendungen der Zwischenschicht (middleware) und diverse UserAnwendungen beinhaltet (Abbildung 2.1 auf Seite 4).
Android Architektur ist auf Linux-Kern Version 2.6 aufgebaut. Der Kern ist für
solche Systemdienste verantwortlich wie: Management der Security, Speicher
und Prozessen und beinhaltet Netzwerk-Stack und Treiber-Modell. Auÿerdem,
spielt dieser Kern eine wichtige Rolle als abstrakte Schicht zwischen HardwareLayer und den Rest von Programm-Stack.
©
Alexander Shabagin
4
Android Plattform
2 Android Architektur
Das nächste Layer in hierarchische System sind die in C/C++ geschriebene Bibliotheken. In Media Bibliotheken (Media Libraries) ist die Unterstützung der
gängigen Formaten und Codecs (MPEG4, H.264, MP3, WMA, WAV, AAC,
AMR, JPG, PNG) bereits implementiert. Graphische Bibliotheken (3D Libraries) unterstützen API OpenGL ES 1.0 und gewährleisten eine Unterstützung
der Hardware 3D-Beschleuniger. In einer Anwendung kann man sowie zweials auch drei-dimensionierte Grak verwenden. Eine weitere interessante Bibliothek ist LibWebCore (WebKit). Das ist ein Web Engine, das auch in einem
sehr populären Webbrowser Safari von Apple eine Verwendung ndet.
Einer der wichtigsten Teile des Stacks ist Android Runtime, das aus einer
virtuelle JVM Dalvik und eines Satzes der Kern Bibliotheken besteht. Dalvik
ermöglicht eine parallle Abarbeitung mehrerer Anwendungen und braucht fürs
Ausführen des Programms Dateien in einem speziellen .dex Format, das für
mobile Geräte mit wenig Speicher optimiert ist. Die Kern Bibliotheken sind in
Java geschrieben und beinhalten ein groÿer Satz von Klassen, die eine breite
Palette von Funktionen implementieren.
Das nächste Layer ist Application Framework. Diese Schicht ist nichts anderes
als ein Instrumentarium, das alle Anwendungen benutzen. Hier gibt es eine
Komponente, die besonders zu benenn ist: Content Provider. Das ist eine einzigartige Besonderheit von dem Android. Die Datenanbieter ermöglichen, z.B.
Information aus dem Internet mit lokalen Handy-Daten (Kontakt- oder Geodaten) vereinigen, um neue Funktionen zu realisieren. Auÿerdem können die
Daten gemeinsam von mehreren Anwendungen genutzt werden.
Und zuletzt ganz oben bendet sich Schicht der Anwendungen (Applications). Was interessant ist, Android macht keinen Unterschied zwischen BasisAnwendungen und fremden Anwendungen. Auf dieser Art, ist es Möglich BasisAnwendung wie: Nummerwahl, Desktop, oder GMail gegen Alternativen zu
ersetzen. Die Anwendungen selbst werden in Java geschrieben.
2.1 Linux Kernel
Es wurden einige Features, die oft in Linux genutzt werden, entfernt. Nämlich
wurde auf GBLIC-Unterstützung, Fenster System und einige Linux Utilities
©
Alexander Shabagin
5
Android Plattform
2 Android Architektur
verzichtet. Es sind aber einige Komponente dazu gekommen: Alarm, Android
Shared Memory, Kernel Debuger und Logger.
2.1.1 Power Management
Android Power Management basiert auf Standarten Linux Power Management,
hat aber seine eigene Komponente. Power Management wurde designt unter
Voraussetzung, dass CPU keinen Strom verbraucht, wenn keine Anwendung
den braucht. Android verlangt, dass Anwendungen und Services CPU Ressourcen mit wake locks durch Android application Framework und native
Linux Bibliotheken anfragen. Wenn es keine aktive wake locks gibt, fährt
Android CPU runter (Abbildung 2.2 auf Seite 7).
2.1.2 Binder
Binder ist ein Treiber, der eine Zwischenprozesskommunikation ermöglicht.
Es wird ein Pool mit Threads zu jeweiligen Applikationen assoziiert und der
Treiber macht Objekt Mapping zwischen zwei Prozessen (Abbildung 2.3 auf
Seite 8).
2.2 Native Bibliotheken
2.2.1 Android Libc Implementation
Google entwickelte eigene libc (library for the C compiler), namens Bionic. Es
gab drei Gründer dafür:
ˆ
Lizenz - Google wollte keinen GPL Lizenz in user-space haben. Bionic
benutzt BSD Lizenz
ˆ
Gröÿe - Die Bibliothek muss in jedem Prozess geladen werden, d.h. sie
soll so klein wie möglich sein. Bionic ist 200K, oder die Hälfte von glibc
(GNU Version von libc).
©
Alexander Shabagin
6
Android Plattform
2 Android Architektur
Abbildung 2.2: Android Power Management
ˆ
Geschwindigkeit - Schwache CPU Leistung erfordert die Performance.
Bionic ist klein und beinhaltet sehr schnelle und kleine pthread Implementation.
Bionic hat eingebaute Unterstützung für wichtige Android-spezische Services
wie: Systeme Properties und Logging. Es unterstützt nicht aber einige POSIX
Features, wie: C++ Exceptions and wide chars, die man in Android nicht
braucht.
2.2.2 Storage, rendering, multimedia
Sie alle bieten die Haupt-Features der Android-Plattform.
©
Alexander Shabagin
7
Android Plattform
2 Android Architektur
Abbildung 2.3: Android Binder
Abbildung 2.4: Native Bibliotheken
ˆ
SQLite - Ist eine einfache relationale Datenbank Management System
(kein IPC, eine Datei)
ˆ
WebKit - ist ein Anwendungs-Framework, das ein Fundament für den
Bau eines Webbrowsers anbietet.
ˆ
Media Framework - basiert auf PacketVideo openCORE Plattform
ˆ
Optimierte 2D/3D Graphik Bibliothek basierend auf OpenGL ES
2.2.3 Surface Manager
Surface Manager bietet einen Oberäche Konstruktor über das System, um
alle Oberächen in frame buer zu generieren. Es kann 2D und 3D Oberächen kombinieren und OpenGL ES und 2D hardware acceleration nutzen
(Abbildung 2.5 auf Seite 9).
©
Alexander Shabagin
8
Android Plattform
2 Android Architektur
Abbildung 2.5: Surface Manager
2.2.4 Audio Manager
Audio Manager verarbeitet mehrere audio Streams in PMC Ausgangspfade.
Dabei kann es mit mehreren Geräten Typen arbeiten und audio Streams in
die spezizierten Ausgänge lenken (Abbildung 2.6 auf Seite 9).
Abbildung 2.6: Audio Manager
2.2.5 Hardware Abstraction Libraries
Hardware Abstraction Libraries denieren Schnittstelle, die hardware-Treiber
implementieren sollen. Das ist eine Menge von standardisierten APIs, die Entwickler umsetzen (Abbildung 2.7 auf Seite 9).
Abbildung 2.7: Hardware Abstraction Libraries
©
Alexander Shabagin
9
Android Plattform
2 Android Architektur
2.3 Android Rintime
2.3.1 Dalvik Virtual Machine
Dalvik Virtual Machine ist eine Register-basierte, interpreter-only virtuelle
Maschine (kein JIT!). Es wurde für kleine RAMs optimiert und ermöglicht
Betrieb von mehreren VM Instanzen gleichzeitig. Dalvik ist von unterliegende
OS bei Prozess-Isolation, Speicher Management und Threading Unterstützung abhängig. Es werden Executes Dalvic Executables (DEX) Dateien, anstatt gewöhnliche Java .class Dateien verwendet. Für ein .jar Paket in Java
steht hier ein Android Package (APK) zur Verfügung (Abbildung 2.8 auf Seite
10).
Abbildung 2.8: Dalvik Virtual Machine
2.3.2 Application Framework
Einige wichtige Service:
ˆ
Activity Manager regelt Applikation Lebenszyklus
ˆ
Package Manager beinhaltet Information über alle installierte Applikationen
ˆ
©
Window Manager steuert alle Applikation bezogene Fenster
Alexander Shabagin
10
Android Plattform
2 Android Architektur
ˆ
View system bittet alle standarte Widgets um eine Anwendung zu
konstruieren
ˆ
Hardware Service bitten den Zugri auf low-level APIs (Bluetooth,
Telefonie, Lokation,... )
(Abbildung 2.9 auf Seite 11).
Abbildung 2.9: Application Framework
2.3.3 Android Initialisierung
Android Initialisierung läuft wie folgt ab (Abbildung 2.10 auf Seite 12):
1. Der Bootloader lädt Kernel und startet Init-Prozess
2. Es werden daemons für low level hardware Handling gestartet (usb,
adb, debugger)
3. Es wird Initialisierende Dalvik VM - Zygote instanziiert Runtime
Prozess, initialisiert Service Manager und macht an Zygote eine Anfrage, um neue Instanz von Dalvik VM zu starten, damit System Server
gestartet werden kann
4. Die zwei ersten Prozesse können Grak und Audio Outputs verwenden
5. Danach starten alle andere Android Prozesse
©
Alexander Shabagin
11
Android Plattform
2 Android Architektur
Abbildung 2.10: Initialisierung
2.4 Android-Anwendung Architektur
Android-Anwendung besteht aus einem oder mehreren Elementen folgender
Typen:
©
ˆ
Activities
ˆ
Services
ˆ
Content
ˆ
Broadcast
Alexander Shabagin
12
Android Plattform
2 Android Architektur
2.4.1 Activities
Eine Anwendung, die eine graphische Oberäche hat, realisiert man mit einer
Activity. Wenn der User eine Anwendung auf dem Desktop auswählt, startet
er eine Activity. (Abbildung
??
auf Seite
??)
2.4.2 Lebenszyklus einer Activity
Eine Activity läuft in ihrem Leben folgendes Szenario durch:
1. OnCreate() - Activity wird erzeugt
2. OnStart() - Activity wird gestartet und am Anfang des Stacks platziert
3. OnResume() - Activity ist sichtbar und bendet sich in Vordergrund
4. OnPause() - Activity ist nicht in Vordergrund und wird eventuell heruntergefahren
5. OnStop() - Activity ist nicht mehr an der Spitze von Stack
6. OnDestroy() - Activity existiert nicht mehr
2.4.3 Umschaltung zwischen den Activities
Android informiert Activity durch zwei andere Funktionen, wenn sie von einer
andere verdeckt wird (Abbildung 2.12 auf Seite 15):
ˆ
OnFreeze() - Actvity speichert den Zustand (z.B. UI Felder)
ˆ
OnRestart() - Signalisiert Activity, dass sie restartet wird
2.4.4 Sterben einer Activity
Eine Activity kann vom Speicher gelöscht werden nur, wenn sie sich in Folgenden Zuständen bendet:
©
ˆ
Wenn sie in der Pause ist, sogar wenn sie immer noch lebt
ˆ
Wenn sie komplett von einer andere Activity überdeckt wird
Alexander Shabagin
13
Android Plattform
2 Android Architektur
Abbildung 2.11: Lebenszyklus
2.4.5 Services
Die Services kommen bei den Anwendungen in Einsatz, die in Hintergrund arbeiten oder etwas längere ausrechnen sollen. z.B. Netzwerk Monitor oder Update Überprüfung. Service kann entweder von einer Activity oder von Bidnder
gestartet werden.
2.4.6 Content Providers
Content Providers kann man sich als Datenbank Server vorstellen. Seine Aufgabe ist Management der Zugrie auf die gespeicherte Daten, z.B SQLite.
Wenn eine Anwendung ganz einfach ist, ist es nicht zwingend erforderlich einen
Content Provider zu instanziieren. Wenn man dagegen eine kompliziertere Anwendung schreibt, in der mehrere Activities oder Services an die gemeinsame
Daten zugreifen, dient der Content Provider als Zugangspunkt zu den diesen Daten. Das eigentliche Ziel eines Content Providers ist Daten-sharing
©
Alexander Shabagin
14
Android Plattform
2 Android Architektur
Abbildung 2.12: Umschaltung zwischen den Activities
zwischen den Anwendungen. Es bittet eindeutige URIs an, die für Anfrage,
Zufügen, Löschen, usw. verwendet werden. (Abbildung 2.13 auf Seite 15)
Abbildung 2.13: Content Providers
2.4.7 Broadcast receivers
Eine Android Anwendung kann für eine Bearbeitung der Daten oder als eine
Reaktion auf bestimmte Ereignisse (z.B. SMS) gestartet werden. (Abbildung
2.14 auf Seite 15)
Abbildung 2.14: Broadcast receivers
©
Alexander Shabagin
15
Android Plattform
2 Android Architektur
2.4.8 AndroidManifest.xml
Alle Android Anwendung besitzen AndroidManifest.xml-Datei. Diese Datei
beinhaltet die Information über Konguration, die eine richtige Installation
der Anwendung ermöglicht. Auÿerdem enthält sie Klassennamen und Ereignistypen, die eine Anwendung verwendet, sowie die Rechte für derer Ausführung. Wenn eine Anwendung einen Internetzugang braucht (z.B. um eine
Datei herunterzuladen), muss die Erlaubnis dafür explizit in Manifest Datei
beschrieben werden. Solch ein deklariert aufgeschriebener Schutz, minimiert
die Wahrscheinlichkeit, dass ein nicht korrekt programmiertes Program dem
Gerät Schaden zufügt. (Abbildung 2.15 auf Seite 16)
Abbildung 2.15: AndroidManifest.xml
©
Alexander Shabagin
16
Android Plattform
Literaturverzeichnis
Literaturverzeichnis
discuz
discuz:
http://discuz-android.blogspot.com/2008/10/google-android-
native-libc-bionic.html.
Google
Google:
http://developer.android.com/intl/zh-TW/guide/basics/what-
is-android.html.
Hashimi und Komatineni
Hashimi, Sayed Y. ; Komatineni, Satya: Pro Android. APRESS
IBM
IBM:
http://www.ibm.com/developerworks/ru/library/os-android-
devel/index.html.
SEN
SEN, W. FRANK ABLESON CHARLIE COLLINS R.: Unlocking Android
(A DEVELOPERS GUIDE). MANNING
Wikipedia
Wikipedia: http://de.wikipedia.org/wiki/Android
©
Alexander Shabagin
17