Mobile Application Development Android Einführung Mobile Application Development Android: Einführung Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Lernziele Der/die Kursbesucher/in kann das Android Programmiermodell für die Entwicklung mobiler Anwendungen beschreiben und anwenden kann die Komponenten und Strukturen des Android Frameworks beschreiben und anwenden kann die Werkzeuge des Android SDK effizient einsetzen und kennt deren Einsatzbereich und Grenzen kann einfache GUIs auf Android realisieren und kennt Optimierungsmöglichkeiten kann eine mobile verteilte Anwendungen auf Android realisieren Institute for Mobile and Distributed Systems Institute for Mobile and Distributed Systems J. Luthiger J. Luthiger 2 1 Mobile Application Development Android Einführung Ziele heute Eine Einführung in Android vermittelt die wichtigsten Konzepte Die Entwicklungsumgebung ist installiert Eine erste kleine Applikation ist geschrieben und im Emulator ausführbar Institute for Mobile and Distributed Systems J. Luthiger 3 Android System Architecture Institute for Mobile and Distributed Systems Institute for Mobile and Distributed Systems J. Luthiger J. Luthiger 4 2 Mobile Application Development Android Einführung Linux Kernel Android baut auf dem Linux Kernel 2.6 auf Der Linux Kernel ist für Speicherverwaltung, die Prozessverwaltung und die Netzwerkkommunikation zuständig. Zudem stellt er die Gerätetreiber für das System zur Verfügung. Der Linux Kernel bildet die Hardware Abstraktion Schicht für den Rest der Software Dank Linux und der Hardware Abstraktion wird eine Portierung auf eine breite Palette von Plattformen möglich: Mobile Phones (HTC, Motorola, Sony Ericsson, ...) Netbook (Asus, HP, ...) Multimedia Tablet (Archos) Institute for Mobile and Distributed Systems J. Luthiger 5 Android Debug Bridge (adb) adb ist ein Entwicklungstool, um auf der Targetplattform (Emulator, Device) eine Linux Shell zu öffnen $ adb shell adb ist eine Client-Server Applikation. Client als Frontend auf dem Entwicklungsrechner Server als Background Prozess auf dem Entwicklungsrechner Daemon auf dem Targetsystem (TCP Port 5037) Nützliche Kommandos adb pull <remote> <local> Datei oder Folder vom Target System auf den eigenen Rechner kopieren adb push <local> <remote> Daten oder Folder auf das Target System kopieren Institute for Mobile and Distributed Systems Institute for Mobile and Distributed Systems J. Luthiger J. Luthiger 6 3 Mobile Application Development Android Einführung Native Libraries Bibliotheken ausschliesslich in C und C++ und vom Hersteller vorinstalliert Der Entwickler wird diese Bibliotheken nicht direkt nutzen, sondern ausschliesslich über das Application Framework Interessante Bibliotheken sind: Surface Manager Window Manager speziell für Mobile Geräte 2D und 3D Graphics Effiziente Unterstützung der 2D und 3D Graphik, falls vorhanden auch mit Hilfe der Hardware Media Codecs Unterstützung für Video und Audio SQL Database SGLite Datenbank (wie auch Firefox und iPhone) Browser Engine WebKit Library (wie auch iPhone, Google Chrome, ...) Institute for Mobile and Distributed Systems J. Luthiger 7 Android Runtime Die Android Runtime besteht im Wesentlichen aus Dalvik VM Core Libraries Dalvik VM Google's Implementation einer JVM, aber speziell optimiert für mobile Geräte Dalvik VM führt .dex Files aus. Diese werden in der Kompilierungsphase aus den .class und .jar Files erstellt. Core Libraries Sie bilden ein Subset von Java SE Version 5. Unterstützung für Sprachkonstrukte aus Java 6 können in Zukunft folgen. Aber mächtiger als Java ME Institute for Mobile and Distributed Systems Institute for Mobile and Distributed Systems J. Luthiger J. Luthiger 8 4 Mobile Application Development Android Einführung Application Framework Hier findet man die Building Blocks für die eigenen Applikationsentwicklung Activity Manager Kontrolliert den Lebenszyklus einer Applikation Content Providers Abstraktionsschicht auf Daten, die von verschiedenen Anwendungen genutzt werden können. Resource Manager Verwaltung der Resourcen (Bilder, Texte, ...) einer Applikation Location Manager Notification Manager Institute for Mobile and Distributed Systems J. Luthiger 9 Applications Die Applikationen bilden die oberste Schicht der Android Architektur. Der Endbenutzer wird nur diese Applikationen verwenden. Verschiedene Applikationen sind beim Kauf eines Gerätes vorinstalliert: Phone Dialer Email Contacts Calendar Web Browser Android Market Institute for Mobile and Distributed Systems Institute for Mobile and Distributed Systems J. Luthiger J. Luthiger 10 5 Mobile Application Development Android Einführung Die Applikation zur Laufzeit Es gibt immer genau eine einzige Applikation im Vordergrund. Diese Applikation hat den Fokus und normalerweise den gesamten Bildschirm. Beim Start einer neuen Applikation wird diese in den Vordergrund geholt. Der User kann nun wieder eine neue Applikation starten, zu einem weiteren Screen innerhalb der gleichen Applikation wechseln, ... Alle Applikationen und Screens werden durch dem Activity Manager auf einem Application Stack abgelegt. Deshalb kann der Benutzer mit dem Back Button jederzeit auf die vorhergehende Applikation, Screen wechseln. (vgl. mit History im Web Browser!) Institute for Mobile and Distributed Systems J. Luthiger 11 Process != Application Jedes User Interface (Screen) wird durch eine Activity repräsentiert. Jede Activity hat ihren eigenen Lebenszyklus. Eine Applikation besteht demnach aus ein oder mehreren Activities und einem Linux Prozess. ABER: Eine Android Applikation kann ohne Linux Prozess "weiterleben" Institute for Mobile and Distributed Systems Institute for Mobile and Distributed Systems J. Luthiger J. Luthiger 12 6 Mobile Application Development Android Einführung Der Lebenszyklus einer Activity Applikation starten Home Button drücken Institute for Mobile and Distributed Systems J. Luthiger 13 Beispiel: Portrait -> Landscape Institute for Mobile and Distributed Systems Institute for Mobile and Distributed Systems J. Luthiger J. Luthiger 14 7 Mobile Application Development Android Einführung Beispiel: Einkommender Anruf Institute for Mobile and Distributed Systems J. Luthiger 15 Die Android Komponenten Activity Ist ein User Interface Screen. Eine Applikation kann mehrere Activities umfassen. Intent Ist ein Mechanismus um eine bestimmte Aktion zu beschreiben: "Pick a photo", "Open URL in browser" Activities werden über Intents aufgerufen, auch innerhalb einer Applikation. Dadurch können Standardapplikation einfach ersetzt werden, in dem die neue Applikation den gleichen Intent verarbeiten kann wie die alte. Service Ist ein Background Task, analog Unix daemon. Content Provider Zusammenfassung einer Schnittstelle (API) auf gemeinsam genutzte Datenbestände, z.B. in einer SQL DB. Normale Weg um Daten zu teilen Institute for Mobile and Distributed Systems Institute for Mobile and Distributed Systems J. Luthiger J. Luthiger 16 8 Mobile Application Development Android Einführung Resources Beim Build werden alle Resourcen (Text String, Bitmaps, ...) in die Applikation eingebaut. Bei der Applikationsentwicklung werden alle Resourcen im Folder "res" abgelegt. Der Android Resource Compiler komprimiert und packt die Resourcen in die Java Klasse R. Validierung möglich Komprimierung möglich Das Eclipse Plugin automatisiert diesen Schritt! Institute for Mobile and Distributed Systems J. Luthiger 17 Sicherheit Jede Applikation hat eine eigenen Linux Prozess Es gibt keine gemeinsame Speicherbereiche. Jede Applikation hat eine eigene User ID. Zugriffe auf kritische Operationen sind nur mit entsprechenden Zugriffsrechte möglich. Beispiele: Zugriff auf das Internet Kontakte lesen SMS erhalten Institute for Mobile and Distributed Systems Institute for Mobile and Distributed Systems J. Luthiger J. Luthiger 18 9 Mobile Application Development Android Einführung Resources http://developer.android.com/ Die Entwickler Site von Google Android. Hier findet man alle wichtigen Infos zur Applikationsentwicklung auf Android. http://source.android.com/ Das Android Open Source Projekt von Google. Hier findet man den Quellcode zur Android Plattform. http://androidguys.com/ Nützliche Informationen für den Entwickler rund um das Android Projekt. Institute for Mobile and Distributed Systems Institute for Mobile and Distributed Systems J. Luthiger J. Luthiger 19 10