Mobile App Development - Einführung -
Inhalt Organisatorisches Vorlesungsinhalt Mobile Geräte Android Architektur App Aufbau Praktikum
Organisatorisches 4 SWS, 5 ECTS 2 Vorlesung / 2 Praktikum 10 Wochen 3V / 1P 5 Wochen Projekt
Organisatorisches Prüfungsleistung: Übungen + Projekt Voraussetzungen Übungsgruppen Leihgeräte
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
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
Smartphone-Nutzung Wo werden Smartphones benutzt? Quelle: Lookout - Mobile Mindset Study, 2012
Smartphone-Nutzung Wo werden Smartphones benutzt?!!!!! Quelle: Lookout - Mobile Mindset Study, 2012 App: Holy Bible
Smartphone-Nutzung Wo werden Smartphones benutzt?!!!!! Quelle: Lookout - Mobile Mindset Study, 2012 App: Torque
Smartphone-Nutzung Wo werden Smartphones benutzt? Quelle: Lookout - Mobile Mindset Study, 2012 App: ibeer
Smartphone-Nutzung Wo werden Smartphones benutzt? App: idragpaper!!!!! App: WC Sucher Quelle: Lookout - Mobile Mindset Study, 2012
Smartphone-Nutzung Wo werden Smartphones benutzt? App: Wecker Quelle: Lookout - Mobile Mindset Study, 2012
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
Smartphone-Markt Marktanteile der Betriebssysteme am Endkundenabsatz von Smartphones weltweit von 2009 bis 2013 46,9 37,6 18,7 4,2 0 0 1,9 0,8 0 0,3 5 15,6 14,8 13,7 19,1 2,5 10,9 78,4 80,2 77,6 6,1 3,8 3,01 2,7 0,9 3,2 0,7 3,5 2,1 6,4 18,88 1,85 66,4 16 19,9 8,7 14,4 4,2 15,7 22,7 46,66 3,9 2009 2010 2011 2012 2013 (2014) (2018) Quelle: http://de.statista.com/
Smartphone-Markt Marktanteile der Betriebssysteme am Endkundenabsatz von Smartphones weltweit von 2009 bis 2013 46,9 37,6 18,7 4,2 0 0 1,9 0,8 0 0,3 5 15,6 14,8 13,7 19,1 2,5 10,9 78,4 80,2 77,6 6,1 3,8 3,01 2,7 0,9 3,2 0,7 3,5 2,1 6,4 18,88 1,85 66,4 16 19,9 8,7 14,4 4,2 15,7 22,7 46,66 3,9 2009 2010 2011 2012 2013 (2014) (2018) Android ios Microsoft RIM Symbian Andere Quelle: http://de.statista.com/
Architektur
Architektur
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
Architektur - Libraries C/C++-Bibliotheken, die Grundfunktionalität zur Verfügung stellen, wie: Web-Engine, 2D/3D-Rendering Datenbanken, Codecs Secure Socket Layer
Architektur - Runtime! Android Runtime (ART) Virtual Machine (ab 5.0) Dalvik VM (vorher)
Architektur - App FW Basis Framework zum Erstellen von Apps Dienste zum Verwalten von Activities, Ressourcen, Fenstern,... Zugriff aus Statuszeile, Benachrichtigungen Anwendungskommunikation
Architektur - Apps Ebene enthält die eigentlichen Apps Core: Mail, SMS, Calendar, Maps, Browser,...
App Aufbau
App Komponenten Android Apps bestehen aus lose gekoppelten Komponenten Die wichtigsten sind: Activities, Fragments, Services, Content Provider, Broadcast Receiver, Intents
App Komponenten Activities bilden die Präsentationsschicht der App Controller (analog zu MVC)
App Komponenten Fragments (seit API Level 11) stellt eine spezielle Aktion dar flexiblere UI Erstellung Bessere Unterstützung von unterschiedlichen Displaygrößen
App Komponenten Services Softwarebestandteile, die im Hintergrund laufen haben kein eigenes UI Verwendung für Downloads, E-Mail Abruf
App Komponenten Intents Nachrichtenkonzept unter Android Lose Kopplung zwischen Komponenten z. B. Starten von Activities & Services, Senden von Benachrichtigungen (Batteriestatus)
App Komponenten Broadcast Receiver Verarbeitung systemweiter Broadcasts Reaktion auf Ereignisse mit unbestimmtem Empfänger
App Komponenten Content provider definierte Schnittstelle zum Zugriff oder zur Bereitstellung von Daten für andere Apps z. B. Auslesen von Kontakten
Projektstruktur src enthält den Standard Java Code Dateien z. B. Activities & Services
Projektstruktur gen Verzeichnis für generierte Dateien R.java: generierte Java Datei mit Referenzen zu Ressourcen (res) BuildConfig.java AIDL Interfaces
Projektstruktur Android x.x Plattform Bibliothek für die Zielplattform Android Dependencies
Projektstruktur assets Verzeichnis für Nicht-Standard -Dateien z. B. Texturen, Schriftarten
Projektstruktur bin Zielverzeichnis für das Kompilat dex, resouces, apk libs eigene App-Bibliotheken
Projektstruktur res drawable: Bilder layout: XML GUIs menu: XML Menüdefinition values: XML Strings, Colors
Projektstruktur Android Manifest Komponenten-Deklaration Berechtigungen API Level API Bibliotheken Hardware-Voraussetzungen
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>
Build Prozess Quelle: http://developer.android.com/tools/building/index.html
Praktikum
Toolchain-Installation Java 6 JDK Android SDK 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
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
Hello World Ziel Eingabe des Namens Klick auf Say Hello => Hello Name