Mobile Application Development

Werbung
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
Herunterladen