Mobile App Development - Einführung - Inhalt • Organisatorisches • Vorlesungsinhalt • Mobile Geräte • Android Architektur • App Aufbau • Praktikum Mobile App Development Organisatorisches • 4 SWS, 5 ECTS • 2 Vorlesung / 2 Praktikum • 10 Wochen 3V / 1P • 5 Wochen Projekt Mobile App Development Organisatorisches • Prüfungsleistung: Übungen + Projekt • Voraussetzungen • Übungsgruppen • Leihgeräte Mobile App Development Inhalt • Grundlagen • Entwicklungsumgebung & Tool Chain • Activities & Lebenszyklus • Benutzeroberflächen Prof. Dr. Martina Lehser Nils Steinbiß, M. Sc. Christoph Karls, M. Sc. Inhalt • Kommunikation zwischen Anwendungskomponenten • Services & Threads • Persistenz • Sensoren & Aktoren Prof. Dr. Martina Lehser Nils Steinbiß, M. Sc. Christoph Karls, M. Sc. Mobile Geräte Mobiler Datenverkehr ! • monatliches mobiles Datenaufkommen in Exabyte weltweit Cisco Visual Networking Index: Global Mobile Data Traffic Forecast Update, 2011–2016 Mobile App Development Smartphone-Nutzung Wofür werden Smartphones benutzt? Quelle: O2 News Centre - Making calls has become fifth most frequent use for a Smartphone for newly-networked generation of users, 2012 Mobile App Development Smartphone-Nutzung Wo werden Smartphones benutzt? Quelle: Lookout - Mobile Mindset Study, 2012 Mobile App Development Smartphone-Nutzung Wo werden Smartphones benutzt? ! ! ! ! ! Quelle: Lookout - Mobile Mindset Study, 2012 Mobile App Development App: Holy Bible Smartphone-Nutzung Wo werden Smartphones benutzt? ! ! ! ! ! Quelle: Lookout - Mobile Mindset Study, 2012 Mobile App Development App: Torque Smartphone-Nutzung Wo werden Smartphones benutzt? App: iBeer Quelle: Lookout - Mobile Mindset Study, 2012 Mobile App Development Smartphone-Nutzung Wo werden Smartphones benutzt? ! ! ! ! ! Quelle: Lookout - Mobile Mindset Study, 2012 Mobile App Development App: WC Sucher App: iDragPaper Smartphone-Nutzung Wo werden Smartphones benutzt? Quelle: Lookout - Mobile Mindset Study, 2012 Mobile App Development App: Wecker Android Geschichte? 2003 Gründung der Firma Android 2005 Google kauft Android 11/2007 Open Handset Alliance 10/2008 Android offiziell verfügbar Erstes Smartphone mit Android erscheint seit 2009 zahlreiche Android Versionen Mobile App Development Smartphone-Markt Marktanteile der Betriebssysteme am Endkundenabsatz von Smartphones weltweit von 2009 bis 2013 46,9 6,1 18,7 37,6 3,8 3,01 10,9 1,85 18,88 16 19,9 14,4 2,5 19,1 0 1,9 0,9 3,2 15,6 0 0,8 3,5 0,7 14,8 0 0,3 2,1 6,4 13,7 78,4 80,2 77,6 2013 (2014) (2018) 66,4 46,66 4,2 15,7 8,7 4,2 2,7 5 22,7 3,9 2009 2010 2011 2012 Quelle: http://de.statista.com/ Mobile App Development Smartphone-Markt Marktanteile der Betriebssysteme am Endkundenabsatz von Smartphones weltweit von 2009 bis 2013 46,9 6,1 18,7 37,6 3,8 3,01 10,9 1,85 18,88 16 19,9 14,4 0 0,8 3,5 0,7 14,8 0 0,3 2,1 6,4 13,7 78,4 80,2 77,6 2012 2013 (2014) (2018) Microsoft RIM Symbian 2,5 19,1 66,4 46,66 4,2 15,7 8,7 0 1,9 0,9 3,2 15,6 4,2 2,7 5 22,7 3,9 2009 2010 Android Andere 2011 iOS Mobile App Development Quelle: http://de.statista.com/ Architektur Architektur Mobile App Development Architektur-Kernel • Android-Basis: (ab)Linux 2.6 Kernel, angepasst auf Besonderheiten von mobilen Geräten • Aufgaben: • • • Hardware-Abstraktion, Treiber Prozess-, Speicher- & Energieverwaltung Netzwerkschnittstelle, Sicherheit Mobile App Development Architektur - Libraries • C/C++-Bibliotheken, die Grundfunktionalität zur Verfügung stellen, wie: • Web-Engine, 2D/3D-Rendering • Datenbanken, Codecs • Secure Socket Layer Mobile App Development Architektur - Runtime ! • Android Runtime (ART) „Virtual Machine“ (ab 5.0) • Dalvik VM (vorher) Mobile App Development Architektur - App FW • Basis Framework zum Erstellen von Apps • Dienste zum Verwalten von Activities, Ressourcen, Fenstern, ... • Zugriff aus Statuszeile, Benachrichtigungen • Anwendungskommunikation Mobile App Development Architektur - Apps • Ebene enthält die eigentlichen Apps • Core: Mail, SMS, Calendar, Maps, Browser, ... Mobile App Development App Aufbau App Komponenten • Android Apps bestehen aus lose gekoppelten Komponenten • Die wichtigsten sind: • Activities, Fragments, Services, Content Provider, Broadcast Receiver, Intents Mobile App Development App Komponenten • Activities • bilden die Präsentationsschicht der App • Controller (analog zu MVC) Mobile App Development App Komponenten • Fragments (seit API Level 11) • stellt eine spezielle Aktion dar • flexiblere UI Erstellung • Bessere Unterstützung von unterschiedlichen Displaygrößen Mobile App Development App Komponenten • Services • Softwarebestandteile, die im Hintergrund laufen • haben kein eigenes UI • Verwendung für Downloads, E-Mail Abruf Mobile App Development App Komponenten • Intents • Nachrichtenkonzept unter Android • Lose Kopplung zwischen Komponenten • z. B. Starten von Activities & Services, Senden von Benachrichtigungen (Batteriestatus) Mobile App Development App Komponenten • Broadcast Receiver • Verarbeitung systemweiter Broadcasts • Reaktion auf Ereignisse mit unbestimmtem Empfänger Mobile App Development App Komponenten • Content provider • definierte Schnittstelle zum Zugriff oder zur Bereitstellung von Daten für andere Apps • z. B. Auslesen von Kontakten Mobile App Development Projektstruktur • src • enthält den Standard Java Code Dateien • z. B. Activities & Services Mobile App Development Projektstruktur • gen • Verzeichnis für generierte Dateien • R.java: generierte Java Datei mit Referenzen zu Ressourcen (res) • BuildConfig.java • AIDL Interfaces Mobile App Development Projektstruktur • Android x.x • Plattform Bibliothek für die Zielplattform • Android Dependencies Mobile App Development Projektstruktur • assets • Verzeichnis für „Nicht-Standard“-Dateien • z. B. Texturen, Schriftarten Mobile App Development Projektstruktur • bin • Zielverzeichnis für das Kompilat • dex, resouces, apk • libs • eigene App-Bibliotheken Mobile App Development Projektstruktur • res • drawable: Bilder • layout: XML GUIs • menu: XML Menüdefinition • values: XML Strings, Colors Mobile App Development Projektstruktur • Android Manifest • Komponenten-Deklaration • Berechtigungen • API Level • API Bibliotheken • Hardware-Voraussetzungen Mobile App Development Projektstruktur • Android Manifest <manifest xmlns:android="http://schemas.android.com/apk/res/android"! package="de.htwds.emrolab.mada.myproject"! android:versionCode="1"! android:versionName="1.0" >! ! ! ! ! <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="15" />! ! <uses-feature android:name="android.hardware.camera" />! <uses-permission android:name="android.permission.CAMERA"/>! <application! android:icon="@drawable/ic_launcher"! android:label="@string/app_name"! android:theme="@style/AppTheme" >! <activity! android:name=".MainActivity"! android:label="@string/title_activity_main" >! <intent-filter>! <action android:name="android.intent.action.MAIN" />! <category android:name="android.intent.category.LAUNCHER"/>! </intent-filter>! </activity>! </application>! </manifest> Mobile App Development Build Prozess Quelle: http://developer.android.com/tools/building/index.html Mobile App Development Praktikum Toolchain-Installation • Java 6 JDK SDK • Android http://developer.android.com/sdk/index.html • Eclipse >= 3.7.2 http://www.eclipse.org/downloads • Eclipse ADT Plugin Eclipse > Help > Install New Software https://dl-ssl.google.com/android/eclipse Mobile App Development Toolchain-Test • Android-Projekt in Eclipse anlegen • Erstellung eines virtuellen Gerätes Eclipse > Window > AVD Manager • Start der Anwendung auf dem Emulator • Start der Anwendung auf einem realen Gerät Mobile App Development Hello World • Ziel • Eingabe des Namens • Klick auf Say Hello => „Hello Name“ Mobile App Development