Dalvik Virtual Machine Open Source Basiert auf der Apache Harmony JVM Hauptsächlich von Dan Bornstein (Google) entwickelt Verwendet Register Java Quellcode (*.java) javac Java Bytecode (*.class) dx Dalvik Bytecode (*.dex) Android App (*.apk) Cross-Compiling Betriebssystem Linux Kernel Gerätetreiber, Energie-, Speicher- & Prozessverwaltung, IPC-Treiber Bibliotheken SQLite, Grafik, SSL, WebKit, Oberflächen-Manager, libc, Media-Framework... Runtime Android Laufzeitumgebung, Dalvik Virtual Machine (DVM) Anwendungsrahmen Activity, Content Provider, Location Manager, Notification Manager, Views, Connectivity Manager, Window Manager, Telephony Manager Anwendungen Eigene, Android, Drittanbieter Vorteile Nachteile Sicherheit Verfügbarkeit Multitasking Ressourcenbedarf Standardbibliotheken C/C++ LibWebCore (Webkit) SQLite MediaFramework (OpenCORE) SGL(2D), OpenGL(3D) und einige mehr... Application- sandbox Prozess OS-User DVM Haupt- speicher Datei- system Shared-User-ID => mehrere Anwendungen in einer Sandbox Verlassen der Sandbox durch Berechtigungen möglich Android SDK Bietet Tools und Klassen um komponentenbasierte Java-Anwendungen für die Android Plattform zu entwickeln Activity Bildschirmseite Layout View Layout View View Zugriff auf Daten Ereignisbehandlung Styles / Themes Service Content Provider Broadcast Receiver (Langlaufende) Hintergrundoperationen ohne Oberfläche Einheitliche Schnittstelle zum Austausch von Daten zwischen verschiedenen Anwendungen Empfängt Systemnachrichten Komponenten http://developer.android.com Links Android 2: Grundlagen und Programmierung Arno Becker & Marcus Pant ENDE Intents Explizite Intents Implizite Intens Empfänger ist bekannt z.B. für Kommunikation zwischen Activities einer Anwendung Unbestimmter Empfänger Empfangen über Filter Benutzen von Android-Komponenten Telefon, Maps, E-Mail, Kontakte, Browser Broadcast Receiver statisch dynamisch Existiert nur zur Laufzeit der Anwendung Erzeugung innerhalb des Quellcodes Wird bei der Installation im System registriert Startet bei passendem Intent, unabhängig von der Anwendung Definition im Android-Manifest Broadcast Intents (Systemnachrichten) Akku, Verbindungen, Gerätezustand, SMS, Anrufe, ... Hintergrundoperationen ANR (Application not Responding) Main Thread sauber halten, sonst ANR Verwendung von Services Remote Service: Eigener Prozess, IPC Local Service: Im Prozess der Anwendung, Binder Service != Thread IPC Inter Process Communication Java Anwendung vs. C/C++ Standardbibliotheken IDL (Interface Definition Language) hier AIDL Automatisches (De)serialisieren Eigene Datenobjekte möglich Synchron / Asynchron SQLite Großteil des SQL-Sprachumfangs Keine Installation, keine Konfiguration Eine Datenbank = eine Datei Zeitgleiche Nutzung durch mehrere Anwendungen SQLiteDatabase-Klasse Cursor als Ergebnis Dateisystem FileInputStream / FileOutputStream Methoden zum einfachen Zugriff auf den anwendungseigenen Dateibereich Zugriff auf SD-Karte Android NDK Native Development Kit Erlaubt performancekritische Teile einer Anwendung in nativem Code zu schreiben, z.B. C/C++ Libraries (libc, libm, openGL, ... ) Tools (compiler, linkers) ARM Instruction sets Und vieles mehr... GPS Sensoren Datenübertragung / Sockets JUnit / Oberflächentests Ressourcenverwaltung ... Tools / ADT Emulator Eigene Konfigurationen möglich (Hardware, SDK, ...) DDMS Dalvik Debug Monitor Service Zugriff auf das Dateisystem Logging Emulator Control Tracing / Profiling ... Veröffentlichen Zertifikat (CA optional) *.apk erstellen FERTIG ADT oder Kommandozeile Kostenfrei Keine Registrierung bei Google Android Market einmalig $25, Google Account Lebenszyklus 2010 Jochen Hilgers Ausnahmen Was ist Android? Eine Softwareplattform für mobile Geräte Open Source und frei Entwickelt von der Open Handset Alliance Google kauft die Firma Android 2005 2007 Google stellt die OHA vor und kündigt Android an 2008 Release von Android G1 / HTC Dream 2009 Android 2.0 2010 Nexus One geplant Q4 Android 3.0