Android Hat die Welt sowas gebraucht? Ein Vortrag von Enrico Homann <[email protected]> Fachseminar WS 2009 Hochschule RheinMain Um folgende Androiden geht’s nicht: Bildmaterial: - aus Kobal Collection „Star Wars“ (http://www.imagesources.org) - 3D Box (http://www.3d-box.de) Denn alles dreht sich hier um... PR Video Android 2.0 Platform Quelle: http://developer.android.com Schön - worum geht es hier nochmal? Um ein „Android“ benanntes Betriebssystem für mobile Endgeräte ● Das „Android Open-Source Project“ ● Im Laufe des Vortrags speziell um das System Image des Android 2.0 SDK ● 1.1 Was ist Android? (auf deutsch) Betriebssystemsoftware für Smartphones Idee Linux 2.6 Kernel Android, Inc. (??) Java Runtime „Andy Rubin“ Java Framework Danger, Inc Java Anwendungen aufkaufen „Hip Top“ Phone Android basiertes Smartphone Marktdominanz Google, Inc. Expansion auf mobilen Markt Entwicklungskosten abwälzen Open-Source Idioten (Kommunisten) 1.2 Kurze Historie Juli 2005 ➢ Google, Inc. kauft eine bis dato unbekannte Firma mit dem Namen „Android Inc.“ auf. Die Mitarbeiter arbeiten nun für Google. 5.November 2007 Unter Führung von Google Inc. wird mit zunächst 47 Unternehmen die „Open Handset Alliance (OHA)“ ins Leben gerufen ➢ 1.2 Kurze Historie (2) (...) September 2008 HTC stellt Android Handy „T-Mobile G1“ vor ➢ Zeitgleich veröffentlicht Google das Android 1.0 SDK mit der Ankündigung Im viertel Quartal 2008 das Android BS als Open-Source unter der Apache 2.0 Lizenz verbreiten zu wollen. ➢ HTC T-Mobile G1 (Slider Smartphone) Quelle(n): www.golem.de, 24.09.08 Bildmaterial: www.dirftmo.de mehrere Aktualisierungen des SDK werden zwischenzeitlich veröffentlicht (...) ➢ 27. Oktober 2009 Veröffentlichung des Android 2.0 SDK vom „Android Open-Source Project“ unter Regie der Google, Inc. (www.android.com) ➢ 2 Das „Android Open-Source Project“ Lizenz und Geschäftsmodell Wie mitmachen? „nützliche Idioten“ 2.1 Das „Android Open-Source Project“: Lizenz und Geschäftsmodell „Android Open-Source Project“ Open-Source Initiative (OSI) akkreditierte 2010: 65 Firmen Apache 2.0 Lizenz Google sagt: „nehmen wir“ Open Handset Alliance (OHA) Google, Inc Apache.org Produkte (u.a.) Patentinhaber aquirieren §3 Patentklausel Projektmitarbeiter X darf nicht klagen „Open-Source auf mobilen Markt verbreiten“ Projektmitarbeiter Y 2.2 Das „Android Open-Source Project“: Wie mitmachen? „Android Open-Source Project“ „Core“ „External“ Rollen: „Anyone“ → Bugs, Patches „Verifiers“ → Überprüfen „Approvers“ → Genehmigen „Project Leads“ → Rollenvergabe „Packages“ - „openssh“ - Built-in Apps - „bionic“ (C runtime) - „apache-http“ - Std. Services - Std. Providers - „bootloader“ (...) - „build“ (...) Zum vollwertigen Mitglied muss die Lizenzvereinbarung handschriftlich unterschrieben und an die „Google Inc“ gesandt werden ➔ 2.2 Das „Android Open-Source Project“: Wie mitmachen? (2) „Gerrit Code Review Tool“: Projektportal (ausgelegt auf unterschiedliche Projekte) ● Git Versionsmanagement über SSH (git+ssh) ● Die Basis Pubic Keys für das Android Hauptprojekt (für zwei Server) bekommt man beim Registrieren. (Nur Leseberechtigung, sofern in Rolle „Anyone“) 3 Eigenschaften der Android 2.0 Plattform System Features 3 Eigenschaften der Android 2.0 Systemplattform System Features Basiert auf einen angepassten Linux 2.6 Kernel (Quellen als Open-Source unter http://android.git.kernel.org/ verfügbar) ● ● Dalvik VM (samt Java Runtime Bibliothek) - unübliche Register basierte virtuelle Java Machine (statt Kellerautomaten/Stack) - speziell für Android von Google Mitarbeitern unter Dan Bornstein entwickelt und für mobile Geräte auf Nebenläufigkeit von VM Instanzen hin optimiert - verwendet ein nicht nach Sun/Java Community Process (JCP) Spezifikation übliches Binärformat („Dex File Format“) für kompilierte Klassen ➢ Führt zur Inkompatibilität zum „Java Verified“ Programm für Java Anwendungen - im Vergleich zur Sun Java Microedition (MIDP2.0/JSR118) unterstützt die Java Runtime Bibliothek Annotations, Enumeration, java.util.ArrayList, Cloneable 3 Eigenschaften der Android 2.0 Systemplattform (2) (*) nur bei entsprechender Hardware (*) Beschleunigte Grafik 2D und 3D → Open GL ES 1.0 ● (*) GSM Telefonie ● (*) Unterstützung für Kamera, GPS, Kompass und Beschleunigungssensor ● (*) Unterstützung für Bluetooth, EDGE (e-Book Reader), 3G (wie UMTS) und WiFi ● SQLite Datenhaltung ● Unterstützung für Mediendaten, im Format (Auszug): ● 3GPP (*.3gp) → Audio + Video ➢ MP4 (*.mp4) → Audio + Video ➢ MP3 (*.mp3) → Audio ➢ Ogg Vorbis (*.ogg) → Audio ➢ Wave (*.wav) → Audio ➢ Bilddateien (*.jpg, *.gif, *.png, *.bmp) ➢ + Anwendungsframework (auf der Dalvik VM) Für Anwendungsentwickler: Eine SDK mit nützlichen Werkzeugen. (Kostenlos und Open-Source als Teilprojekt des „Android Open-Source Projects“) 4 Aus Sicht des Anwenders Hauptmenü und Bedienbarkeit SDK Built-In Anwendungen rd Bezug von 3 Party Anwendungen Vertrauenswürdigkeit von Anwendungen Interessante Apps 4.1 Aus Sicht des Endanwenders: Hauptmenü und Bedienbarkeit ● Mehr hierzu in der späteren Live-Demo ● Ein paar Eindrücke der Benutzerschnittstelle (SDK.Emulator): (Navigations KeyPad des SDK.Emulators) (Android 2.0 SDK.Emulator Start Screen) 4.2 Aus Sicht des Endanwenders: SDK Built-In Anwendungen Funktion: ➢ Dialer App Telefonieren 4.2 Aus Sicht des Endanwenders: SDK Built-In Anwendungen Funktion: Anzeigen von Webinhalten ➢JavaScript Unterstützung ➢Adobe Flash 10 Unterstützung (in Planung)¹ ➢ Phone App Browser App ¹ http://www.go-android.de/news/adobe-flash-unterstuetzung-fuer-android-browser 4.2 Aus Sicht des Endanwenders: SDK Built-In Anwendungen ● Und 11+3 weitere: AlarmClock → Uhr mit Alarmfunktion ➢Calculator → Taschenrechner ➢Camcorder → Videos aufnehmen ➢Camera → Photos aufnehmen ➢Email → Email Client ➢Gallery → Photoalbum ➢Gestures Builder → Gesten erzeugen ➢IME → Japanische Zeichen ➢Messaging → Nachrichten, SMS ➢Music → Musik abspielen ➢Settings → Einstellungen ➢ Phone App Browser App Contacts App + Entwickler Apps: Custom Locale → Testen von Lokalen ➢Dev Tools → Systemeinstellung Testen ➢Spare Parts → Hardware ein/abschalten ➢ 4.3 Aus Sicht des Endanwenders: Bezug von 3rd Party Anwendungen ● ● Generell ist die Installation von zusätzlichen Anwendungen als *.apk (gezippte Dalvik VM Binaries) Dateien zum einen überhaupt möglich Herunterladen freier und kommerzieller Anwendungen von „AppStores“ wie Googles „Android Market“ unter http://www.android.com/market; weitere http://slideme.org → Android Marketplace (kommerziell) und Community Portal http://andappstore.com → Nur Android Anwendungen Bezug direkt von Herstellerseite der gewünschten Anwendung. Eine Klausel dass die Anwendung per zentralem Online-Shop (wie „Android Market“) bezogen werden muss existiert nicht. → Sicherheitsrisiko für den Endanwender ● 4.4 Aus Sicht des Endanwenders: Vertrauenswürdigkeit von Anwendungen Probleme: Die Dalvik VM verwendet ein spezielles Binärformat, dass nicht mit dem „Java Verified“ Programm konform ist; ● ➢ Anwendungsentwickler können ihre Java Anwendungen nicht auf Qualitätscharakteristiken prüfen lassen und damit auch nicht über dieses Programm zertifizieren (und signieren) lassen. Android Anwendungen müssen zwar signiert sein bevor sie installiert werden dürfen, allerdings ist dieses Verfahren nicht gebunden an eine vertrauenswürdige Zertifizierungsstelle. ● Lokal erstellte Zertifikate sind (auch in finaler Endanwendung) erlaubt. ➢ Trügerische „Sicherheit“ ➢ 4.3 Aus Sicht des Endanwenders: Interessante „Apps“ „Google Maps Navigation“ ● Integration von GPS und „Google Maps“ ● Vollwertiges Navigationssystem „Google Maps“ Features wie von der Community festgelegten Sehenswürdigkeiten ● ● Derzeit noch Beta 5 Aus Sicht des Anwendungsentwicklers Entwicklerfreundlichkeit Entwicklungsumgebung Systemarchitektur Die Anwendungskomponente Vergleich mit J2ME Android 2.0 SDK System Image: Live-Demo 5.1 Aus Sicht des Anwendungsentwicklers: Entwicklerfreundlichkeit Kosten- und Informationspolitik: Kostenlose Werkzeuge von Fremdanbieter verfügbar, insbesondere sei die Entwicklungsumgebung Eclipse IDE (http://www.eclipse.org) erwähnt (Es gibt seitens des „Android Open-Source Projects“ ein offzielles Plug-In) ● Sämtliche Information die Plattform betreffend sind im Internet unter http://developer.android.com kostenfrei abrufbar, darunter auch das SDK (Software Development Kit, Entwicklerkit) selbst ● Googles seit 2008 jährliche „Android Developer Challenge“ bietet einen hochpreisigen Wettbewerb und Ansporn zur Entwicklung von Anwendungen ● ➢ Benutzer können eingereichten Anwendungen bewerten (Gewicht 1. Runde 100%, 2. Runde 40%) ➢ Bis zu $100.000 Preisgeld (ADC 2, 2009) 5.2 Aus Sicht des Anwendungsentwicklers: Entwicklungsumgebung Entwicklerkit kostenfrei ohne Registrierung herunterladbar (http://developer.android.com/intl/en/sdk/index.html) ● Vorhandenes offizielles Plug-In für die Eclipse IDE (SDK Installer/Updater) (Inoffizielles auch für Netbeans IDE verfügbar) ● ● Entwicklerkit enthält: Android System Image mit Built-In (eingebauten) Anwendungen ➢ Emulator (verwendet das System Image) ➢ Application Framework API ➢ Entwicklerkit ist „erweiterbar“ (über Plug-In) um unter unterschiedlichen Android System Versionen arbeiten zu können ● 5.2 Aus Sicht des Anwendungsentwicklers: Entwicklungsumgebung (2) Der Android Emulator „Android Virtual Devices“ (AVD) Konzept zum Verwalten mehrerer virtueller Geräte mit unterschiedlicher Konfiguration ● ● Reibungslose Integration per ADT (Android Developer Tools) Plugin in Eclipse „On-Device“ Entwicklung ● Google bietet über das Developer Program für die Entwicklung von Software ein Endgerät an; das von HTC hergestellte „Android Dev Phone 1“ ● SIM-unlocked und Hardware-unlocked ● Kostenpunkt für „Android Dev Phone 1“: $399 (ohne Versandkosten aus USA) 5.3 Aus Sicht des Anwendungsentwicklers: Systemarchitektur Abstraktionsebene Anwendungen Application Framework Libraries/Systembibliothek Android Runtime Angepasster Linux 2.6 Kernel 5.3 Aus Sicht des Anwendungsentwicklers: Systemarchitektur (2) Quelle: http://developer.android.com/guide/basics/what-is-android.html 5.4 Aus Sicht des Anwendungsentwicklers: Die Anwendungskomponente ● ● Sichtweise einer Anwendung als Komponente (Application Component) mit mehreren Komponenten in einem „Package“, ähnlich MIDlet Suite bei J2ME Mögliche Unterteilung in: Activities → Präsentation, Boundary, Benutzerschnittstelle (UI) ➢ Services → Hintergrundprozess, bsp Musicplayer ➢ Broadcast receivers → Empfängt Systembroadcast (Akku leer, etc) ➢ Content providers → Bietet anderen Anwendungen Daten an ➢ Manifest Datei innerhalb einer Android Package Datei (*.apk) beinhaltet Deskriptoren als eine Art Systemhook mit Informationen zur Anwendung, ähnlich J2ME Anwendungen ● „Intent Filter“ beschreiben innerhalb der Manifest Datei die „Absicht“ und „Rollen“ einzelner angegebener Anwendungskomponenten. Zum Beispiel kann eine Komponente als „Launcher“ definiert werden, der andere Komponenten vom Package aufruft etc. ● 5.7 Aus Sicht des Anwendungsentwicklers: Vergleich mit J2ME Vorteile Robuste homogene Architektur als „All-Inclusive“ Paket mit unterliegendem stets gleichem Betriebssystem samt Java Runtime (gleiche Version vorausgesetzt) ➔ Annotations, java.util.ArrayList und andere von Java 1.6 her bekannte Techniken sind über die Dalvik VM möglich (Erhebliches Manko bei J2ME) ➔ ➔ JUnit Framework bereits im ADT (Android Developer Tools) Eclipse-Plugin enthalten Nachteile ➔ Keine Unterstützung für Netbeans Visual MIDlets ➔ Nicht „Java Verified“ Kompatibel Marktakzeptanz und Verbreitung ist derzeit noch vergleichsweise gering (Starke Konkurrenz) ➔ → (auch) keine voller Java 1.6 Funktionsumfang 5.9 Aus Sicht des Anwendungentwicklers: Android SDK 2.0: Live Demo ➢ Live-Demo 6 Aktuelle Marktlage Anbieter und Endgeräte 6.1 Aktuelle Marktlage: Anbieter und Endgeräte HTC T-Mobile G1 (*) Android 1.0 (*) Es hängt von den Endgeräteherstellen und den Distributoren ab, ob und wie das Android System auf eine aktuelle Version aktualisiert werden kann. 6.1 Aktuelle Marktlage: Anbieter und Endgeräte HTC T-Mobile G1 (*) Android 1.0 T-Mobile G2 Touch (HTC Hero) (*) Android 1.5 (*) Es hängt von den Endgeräteherstellen und den Distributoren ab, ob und wie das Android System auf eine aktuelle Version aktualisiert werden kann. 6.1 Aktuelle Marktlage: Anbieter und Endgeräte HTC T-Mobile G1 (*) Android 1.0 T-Mobile G2 Touch (HTC Hero) (*) Android 1.5 HTC Magic (Vodafone) (*) Es hängt von den Endgeräteherstellen und den Distributoren ab, ob und wie das Android System auf eine aktuelle Version aktualisiert werden kann. 6.1 Aktuelle Marktlage: Anbieter und Endgeräte HTC T-Mobile G1 (*) Android 1.0 T-Mobile G2 Touch (HTC Hero) (*) Android 1.5 Motorola Milestone (*) Android 2.0 HTC Magic (Vodafone) (*) Es hängt von den Endgeräteherstellen und den Distributoren ab, ob und wie das Android System auf eine aktuelle Version aktualisiert werden kann. 6.1 Aktuelle Marktlage: Anbieter und Endgeräte HTC T-Mobile G1 (*) Android 1.0 T-Mobile G2 Touch (HTC Hero) (*) Android 1.5 HTC Magic (Vodafone) Motorola Milestone (*) Android 2.0 Google Nexus One (*) Android 2.0 (*) Es hängt von den Endgeräteherstellen und den Distributoren ab, ob und wie das Android System auf eine aktuelle Version aktualisiert werden kann. Fazit ➢ Für Endgerätehersteller erhebliche Kosteneinsparungen möglich Problematische Sicherheit in Punkto Vertrauenswürdigkeit von Anwendungen, Aufgrund der Inkompatibilität von Dalvik VM Binaries mit dem „Java Verified“ Zertifizierungs Programm sowie lokale Signierung ➢ ➢ Statt Abhängigkeit von JCP Spezifikationen nun Abhängigkeit vom Betriebssystem (Versionskonflikte mit dem Framework) Im Vergleich zu Java Microedition Systemen, ausser der Dalvik VM als komplette 1.6 Java Maschine keine wirklich neuen Konzepte ➢ Endkonsumenten mit „Android“ Erfahrungen kommen mit neuen Endgeräten auf dieser Basis schnell zurecht ➢ Quellen Generelle Informationen (Alle Rollen) → http://www.android.com Open Handset Alliance → http://www.openhandsetalliance.com Wikipedia.org → http://en.wikipedia.org/wiki/Android_%28operating_system%29 The Java Community Process (JCP) Program → http://www.jcp.org Dalvik VM → http://www.dalvikvm.com/ „Google Maps Navigation“ → http://www.google.com/mobile/navigation/#p=default Vielen Dank für Ihre ungeteilte Aufmerksamkeit. Fragen? Enrico Homann <[email protected]>