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