Upload
lekien
View
215
Download
0
Embed Size (px)
Citation preview
Verteilte Systeme – Praktikum Matthias Kovatsch – ETH Zürich
Team
2
Simon Mayer Matthias Kovatsch Gábor Sörös Wilhelm Kleiminger
Verteilte Systeme – Praktikum Matthias Kovatsch – ETH Zürich
ÜBERSICHT
Organisation
Android-Plattform
Hausaufgabe
3
Verteilte Systeme – Praktikum Matthias Kovatsch – ETH Zürich
VS-Übungen
Praktikum Programmieraufgaben für Android
Drei vorgegebene Übungsaufgaben
Offenes Projekt
Geht zu 20% in die Gesamtnote ein
Theoretische Aufgaben Klausurvorbereitung
Werden gegen Ende der Vorlesung ausgegeben
4
Verteilte Systeme – Praktikum Matthias Kovatsch – ETH Zürich
Zeitplan
A1: GUI und Hardware 30. Sep 2011 – 10. Okt 2011 (1.5 Wochen)
A2: Client/Server, Web Services, und die Cloud 10. Okt 2011 – 24. Okt 2011 (2 Wochen)
A3: Gruppenkommunikation und logische Zeit 24. Okt 2011 – 07. Nov 2011 (2 Wochen)
A4: Offenes Projekt (mit Präsentation) 04. Nov 2011 – 19. Dez 2011 (6.5 Wochen)
5
Verteilte Systeme – Praktikum Matthias Kovatsch – ETH Zürich
Praktikum
Ablauf
Zweier- und Dreiergruppen
Entwicklung im Emulator
Test auf dem Smartphone
Ein HTC Desire pro Gruppe
Dokumentation in Form eines kurzen Papers
Benotung
Pro Gruppe
«Save-Points»
Werden alle gekennzeichneten Teilaufgaben erfolgreich erfüllt,
gehen die Praktikumspunkte nur noch verbessernd ein
6
Verteilte Systeme – Praktikum Matthias Kovatsch – ETH Zürich
ÜBERSICHT
Organisation
Android-Plattform
Hausaufgabe
7
Verteilte Systeme – Praktikum Matthias Kovatsch – ETH Zürich
Ein wenig Geschichte
09/2003: Android, Inc. Startup in Palo Alto
07/2005: Google-Übernahme von Android
11/2007: Open Handset Alliance
HTC, LG, Samsung, Motorola, …
Texas Instruments, Intel, Nvidia, …
T-Mobile, Vodafone, Telecom Italia, …
09/2008: Markteinführung des T-Mobile G1
10/2008: Android wird Open Source
Apache-Lizenz erlaubt kommerzielle Entwicklungen
8
Andy Rubin Co-Founder, Android
G1 (HTC Dream)
Verteilte Systeme – Praktikum Matthias Kovatsch – ETH Zürich
Android Smartphone-Marktanteil (U.S. 13+)
9
Qu
elle
: w
ww
.co
mS
co
re.c
om
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
Okt 09Jan 10
Apr 10Jul 10
Okt 10Jan 11
Apr 11Jul 11
Apple
RIM
Microsoft
Palm
Verteilte Systeme – Praktikum Matthias Kovatsch – ETH Zürich
Android Eckdaten
Frei erhältlich, auch zur Kommerzialisierung
Jeder Händler kann Android erweitern, z.B. «HTC SenseUI»
Linux-basiertes OS, Java-basierte Anwendungen
Bekanntes, robustes System
Hochoptimierte Java VM «Dalvik»
Relativ schnelle Anwendungsentwicklung
Alle Apps sind gleichgestellt!
Keine OS-Kernanwendungen
Systemteile können komplett ersetzt werden
(Anrufe, SMS, Wecker, WLAN-Verwaltung)
10
Verteilte Systeme – Praktikum Matthias Kovatsch – ETH Zürich
Versionierung
Version Releasename API Level Kernel Releasedatum Bemerkung
1.0 - 1 2.6.25 Sep 2008 Ursprüngliche G1 Firmware
1.1 - 2 2.6.25 Feb 2009 G1 Update
1.5 Cupcake 3 2.6.27 30. Apr 2009 Mehr Apps und Sprachen, Soft-Keyboard
1.6 Donut 4 2.6.29 15. Sep 2009 Neue Suche, Market, Gesten, VPN
2.x Eclair 5–7 2.6.29 26. Okt 2009 Exchange, BT2.1, Multitouch (z.B. Hero)
2.2 FroYo 8 2.6.32 20. Mai 2010 JIT, RAM-Support, PUSH, Apps to SD
2.3.x Gingerbread 9–10 2.6.35 6. Dez 2010 WebM-Video, UI-Verbesserungen, NFC
3.x Honeycomb 11–13 2.6.36 2. Feb 2011 Exklusiv für Tablets
4.x? Ice Cream
Sandwich ? ? Q4 2011? Zusammenführung von 2.3 and 3.x
11
Verteilte Systeme – Praktikum Matthias Kovatsch – ETH Zürich
Plattform-Interna
12
Hardware
Linux 2.6 Kernel Hardware Abstraction Layer
Memory
Management
Process
Management
Network
Stack
I/O
Display
Keypad
Touchscreen
Power
Management
Other Drivers
WiFi, Bluetooth, Camera,
Audio, Telephony, Flash,
Sensors
Dalvik
Virtual Machine
Android
Application
A
Dalvik
Virtual Machine
Android
Application
B
Dalvik
Virtual Machine
Android
Application
C
Security
Linux
User A
Linux
User B
Linux
User C
Qu
elle
: C
on
der,
Darc
ey: A
nd
roid
Wirele
ss A
pp
lica
tion D
eve
lop
men
t, A
dd
ison
-Wesle
y (
p.2
4)
Verteilte Systeme – Praktikum Matthias Kovatsch – ETH Zürich
Android Schlüsselbegriffe
«Activity» Logische Einheit für eine Benutzerinteraktion
(vgl. Fenster einer PC-Anwendung)
Normalerweise kompletter Bildschirm
Auch ohne UI möglich («Service»)
«View» Hierarchisches UI-Element
Können in Gruppen kombiniert werden
«Service» Hintergrundanwendung, z.B. Musikwiedergabe oder FTP-Server
13
Verteilte Systeme – Praktikum Matthias Kovatsch – ETH Zürich
Android Schlüsselbegriffe
«Intent» Startet oder wechselt zwischen «Activitys»
Passive Datastruktur
Beschreibt, was ausgeführt werden soll
Explizit eine bestimmte Klasse
Implizit eine Komponente die zum «Intent-Filter» passt
«BroadcastReceiver» Hört auf globale Ereignisse/Intents,
(z.B. «Headset wurde eingesteckt» vom System)
Weckt oder startet gewünschte Activity
Oder informiert Benutzer
14
Verteilte Systeme – Praktikum Matthias Kovatsch – ETH Zürich
Android Schlüsselbegriffe
«ContentProvider» Erlaubt das freigeben/teilen von Daten
(z.B. alle Kontaktdaten)
Unterstützt Dateisystem, SQLite, … «any way you want»
Apps greifen per «ContentResolver» auf Daten zu
Siehe auch http://www.youtube.com/watch?v=QBGfUs9mQYY&feature=user
http://developer.android.com/guide/topics/fundamentals.html
15
Verteilte Systeme – Praktikum Matthias Kovatsch – ETH Zürich
Programm-Lebenszyklus
Androids Multi-Tasking OS verucht Apps so lange wie
möglich laufen zu lassen
Bei Speicherknappheit werden Prozesse mit niedriger Priorität beendet
Activity-Zustände Running
Paused
Stopped
Finished/killed
16
Verteilte Systeme – Praktikum Matthias Kovatsch – ETH Zürich
Ausgelöste Methoden I
17
Quelle
: http://s
tufft
hath
appens.
com
/blo
g/2
008/1
1/0
5/a
ndro
id-a
ctiv
ity-life
cycle
-update
d/
Verteilte Systeme – Praktikum Matthias Kovatsch – ETH Zürich
Ausgelöste Methoden II
18
Quelle
: http://s
tufft
hath
appens.
com
/blo
g/2
008/1
1/2
6/a
ndro
id-life
cycle
-triggers
-part-2
/
Verteilte Systeme – Praktikum Matthias Kovatsch – ETH Zürich
Nützliche Quellen
Android-Developers: developer.android.com «The Guide» (Einführung): /guide/index.html
«Resources» (Tutorials): /resources/index.html
Videos: /videos/index.html
Android-Blogs http://android-developers.blogspot.com
http://www.androidguys.com/
…
Google-Suche
StackOverflow
19
Verteilte Systeme – Praktikum Matthias Kovatsch – ETH Zürich
ÜBERSICHT
Organisation
Android-Plattform
Hausaufgabe
20
Verteilte Systeme – Praktikum Matthias Kovatsch – ETH Zürich
Gruppen
Anzahl unserer HTC Desires begrenzt (30)
Wer hat selber ein Android-Smartphone? Bitte alsbald eure Gruppe melden
Zweiergruppen solange wie möglich
Danach Dreiergruppen
HTC Desire Ausgabe
Montag 14 – 16 Uhr CNB H 103.2
Dienstag 10 – 12 Uhr CNB H 103.2
Mittwoch 10 – 12 Uhr CNB H 103.2
Donnerstag 14 – 16 Uhr CNB H 108
21
Aktueller Stand unter
http://www.vs.inf.ethz.ch/edu/vs/android/
Verteilte Systeme – Praktikum Matthias Kovatsch – ETH Zürich
HTC Desire
Zunächst die Batterie voll laden
WLAN einrichten
«Settings > Wireless & networks > Wi-Fi settings»
Over-the-Air-Update auf Android 2.29.405.5
«Settings > About Phone > System software updates > Check now»
Debug-Modus aktivieren
«Settings > Applications > Development > USB debugging»
Macht euch mit dem Gerät vertraut
22
Verteilte Systeme – Praktikum Matthias Kovatsch – ETH Zürich
Installation der Toolchain
Java SE JDK 6 http://www.oracle.com/technetwork/java/javase/downloads/index.html
Android SDK http://developer.android.com/sdk/index.html
Irgendwohin entpacken
Eclipse 3.7 «Indigo» («Classic» empfohlen) http://www.eclipse.org/downloads/
ADT Plugin hinzufügen («Help > Install New Software…»)
«Work with» location https://dl-ssl.google.com/android/eclipse/
SDK angeben («Window > Preferences > Android»)
API 8 Pakete install. («Window > Android SDK and AVD Manager»)
23
Verteilte Systeme – Praktikum Matthias Kovatsch – ETH Zürich
Windows
24
ADB-Treiber
2 3 4
5 6 7
1
Sie
he a
uch h
ttp:/
/develo
per.
andro
id.c
om
/sdk/w
in-u
sb.h
tml
Verteilte Systeme – Praktikum Matthias Kovatsch – ETH Zürich
Ubuntu Linux
USB-Konfiguration Erstelle /etc/udev/rules.d/51-android.rules als Superuser
Inhalt für «Gutsy»/«Hardy»
Inhalt für «Dapper»
Zugriffsrechte anpassen
25
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"
SUBSYSTEM=="usb_device",SYSFS{idVendor}=="0bb4",MODE="0666"
chmod a+r /etc/udev/rules.d/51-android.rules
Sie
he a
uch h
ttp://d
evelo
per.
andro
id.c
om
/guid
e/d
evelo
pin
g/d
evic
e.h
tml
Verteilte Systeme – Praktikum Matthias Kovatsch – ETH Zürich
(Computerräume)
Windows Drivers, Eclipse, and ADT Plugin are installed
Download and extract Android SDK to your home directory
Set up SDK location in Eclipse
Install API 8 packages
Linux USB configuration already done
Download and extract Android SDK to your home directory (or /local/)
Red Hat tool ignores empty folders recreate «platforms» and «add-ons» folders
Update Eclipse («Help > Install New Software»)
Software Site http://download.eclipse.org/eclipse/updates/3.5
Install ADT Plugin
Set up SDK location
Install API 8 packages
26
Verteilte Systeme – Praktikum Matthias Kovatsch – ETH Zürich
Test der Toolchain
Kann ein Android-Projekt angelegt werden?
Kompilieren die mitgelieferten «Sample»-Projekte?
Funktioniert der USB-Treiber?
Werden die «Sample»-Projekte installiert und starten?
Legt ein «virtual device» an und startet den Emulator!
27
Verteilte Systeme – Praktikum Matthias Kovatsch – ETH Zürich
ÜBERSICHT
Organisation
Android-Plattform
Hausaufgabe
28