Android Entwicklung GTUG München 2009

33 %
67 %
Information about Android Entwicklung GTUG München 2009
Technology
web

Published on July 25, 2009

Author: greenrobot

Source: slideshare.net

Description

Eine Einführung in die Android Entwicklung von Markus Junginger. Neben den Basics werden auch Erfahrungswerte vorgestellt.

Android Entwicklung Google Technology Group München, 23. Juli 2009 Markus Junginger

Über mich Java Guy (Java 1.0 – 6, JEE, Web, UI, …) Windows Mobile (C++ & .NET), JME Erste Android App Ende 2007 greenrobot: Android Startup (+iPhone) Derzeit Android Projekt bei dt. Telco Android Entwicklung, Beratung, Schulung markus@greenrobot.de

Java Guy (Java 1.0 – 6, JEE, Web, UI, …)

Windows Mobile (C++ & .NET), JME

Erste Android App Ende 2007

greenrobot: Android Startup (+iPhone)

Derzeit Android Projekt bei dt. Telco

Android Entwicklung, Beratung, Schulung

markus@greenrobot.de

Outline Einführung Activities & Intents Hello World User Interface (UI) Typische Tasks (Entwicklung) Erfahrungswerte

Einführung

Activities & Intents

Hello World

User Interface (UI)

Typische Tasks (Entwicklung)

Erfahrungswerte

Warum ist Android interessant? Was ist Android? Open Source Betriebsystem (Linux) für Mobile 20 Android Geräte bis Ende 2009 3stellige Wachstumsrate (Studie: 900%) (Einzige?) Ernsthafte iPhone Konkurrenz Gute Adoption durch Industrie (Preis, …) Konkurrenz  Massenmarkt?

Was ist Android? Open Source Betriebsystem (Linux) für Mobile

20 Android Geräte bis Ende 2009

3stellige Wachstumsrate (Studie: 900%)

(Einzige?) Ernsthafte iPhone Konkurrenz

Gute Adoption durch Industrie (Preis, …)

Konkurrenz  Massenmarkt?

 

Vier Entwicklungsarten Android SDK: Entwicklung mit Java Webseiten (Chrome/WebKit) Cross Platform Apps Native Entwicklung NDK in Verbindung mit Android SDK Eigene Android Firmware

Android SDK: Entwicklung mit Java

Webseiten (Chrome/WebKit)

Cross Platform Apps

Native Entwicklung

NDK in Verbindung mit Android SDK

Eigene Android Firmware

Vier Entwicklungsarten Android SDK: Entwicklung mit Java Webseiten (Chrome/WebKit) Cross Platform Apps Native Entwicklung NDK in Verbindung mit Android SDK Eigene Android Firmware

Android SDK: Entwicklung mit Java

Webseiten (Chrome/WebKit)

Cross Platform Apps

Native Entwicklung

NDK in Verbindung mit Android SDK

Eigene Android Firmware

Entwicklung mit Android SDK Java 5 (Scala, JRuby) Java 5 SE APIs teilweise vorhanden (io, nio, lang, util, math, etc.) Proprietäre Android APIs (android.*) Java Bytecode wird in DEX umgewandelt Dalvik Virtual Machine IDE: Eclipse (oder von Hand) Device Emulator

Java 5 (Scala, JRuby)

Java 5 SE APIs teilweise vorhanden (io, nio, lang, util, math, etc.)

Proprietäre Android APIs (android.*)

Java Bytecode wird in DEX umgewandelt

Dalvik Virtual Machine

IDE: Eclipse (oder von Hand)

Device Emulator

Activities Einstiegspunkt in Android Programm Aktiver Programmteil Eine Activity setzt (mind.) ein View (GUI) Activities unterliegen Life Cycle onResume und onPause (Persistenz!) Android OS kann Activities killen Alternative: Background Services

Einstiegspunkt in Android Programm

Aktiver Programmteil

Eine Activity setzt (mind.) ein View (GUI)

Activities unterliegen Life Cycle

onResume und onPause (Persistenz!)

Android OS kann Activities killen

Alternative: Background Services

 

Intents Eine Absicht etwas zu tun ohne zu definieren wie es getan werden soll Vernetzung von Apps über lose Kopplung Angelehnt an URLs (Beispiel: „tel:123“) Auch für das Aktivieren eines neuen Zustand einer App: Starten einer Activity

Eine Absicht etwas zu tun ohne zu definieren wie es getan werden soll

Vernetzung von Apps über lose Kopplung

Angelehnt an URLs (Beispiel: „tel:123“)

Auch für das Aktivieren eines neuen Zustand einer App: Starten einer Activity

Hello World

Hello World public class HelloAndroid extends Activity { @Override public void onCreate(Bundle state) { super.onCreate(state); TextView tv = new TextView(this); tv.setText("Hello, Android"); setContentView(tv); } }

public class HelloAndroid extends Activity {

@Override

public void onCreate(Bundle state) {

super.onCreate(state);

TextView tv = new TextView(this); tv.setText("Hello, Android"); setContentView(tv);

}

}

Android Projekt anlegen IDE erstellt Gerüst R.java ist generiert res Verzeichnis AndroidManifest.xml

IDE erstellt Gerüst

R.java ist generiert

res Verzeichnis

AndroidManifest.xml

UI Prinzipien: Klassisch… Als Resourcen oder programmatisch UI Komponenten: Basisklasse View Layouts (Linear, Grid, Table, Relative, …) UI Thread: Änderungen an der GUI Events (OnClick, …) Visueller GUI Editor in Eclipse Low-Level Canvas API

Als Resourcen oder programmatisch

UI Komponenten: Basisklasse View

Layouts (Linear, Grid, Table, Relative, …)

UI Thread: Änderungen an der GUI

Events (OnClick, …)

Visueller GUI Editor in Eclipse

Low-Level Canvas API

 

Typische Views TextView EditText Button Checkbox ImageView WebView (Achtung: JavaScript aktivieren) MapView (benötigt Registrierung/Key)

TextView

EditText

Button

Checkbox

ImageView

WebView (Achtung: JavaScript aktivieren)

MapView (benötigt Registrierung/Key)

Beispiel ListView Adapter ( M VC) hält die Daten der Liste vor ListActivity vereinfacht Handhabung setListAdapter z.B. mit ArrayAdapter aufrufen Eigene Adapter von BaseAdapter ableiten Object getItem (int position) View getView (int position, View convertView, ViewGroup parent)

Adapter ( M VC) hält die Daten der Liste vor

ListActivity vereinfacht Handhabung

setListAdapter z.B. mit ArrayAdapter aufrufen

Eigene Adapter von BaseAdapter ableiten

Object getItem (int position)

View getView (int position, View convertView, ViewGroup parent)

Asynchrone Verarbeitung & UI UI Thread darf niemals blockiert werden Nach 5s Android System Dialog Netzwerkzugriffe, etc. in eigenem Thread ProgressDialog, Progress Indicator UI Update aber wieder im UI Thread Verschiedene Möglichkeiten: Activity.runOnUiThread, View.post, Handler Android 1.5: AsyncTask

UI Thread darf niemals blockiert werden

Nach 5s Android System Dialog

Netzwerkzugriffe, etc. in eigenem Thread

ProgressDialog, Progress Indicator

UI Update aber wieder im UI Thread

Verschiedene Möglichkeiten: Activity.runOnUiThread, View.post, Handler Android 1.5: AsyncTask

Client-/Server Kommunikation Apache HttpClient 4 Kein SOAP out of the box  kSOAP REST mit XML XML: SAX, DOM, Pull aber kein XPath REST mit JSON JSON integriert Einfach zu parsen

Apache HttpClient 4

Kein SOAP out of the box  kSOAP

REST mit XML

XML: SAX, DOM, Pull aber kein XPath

REST mit JSON

JSON integriert

Einfach zu parsen

Persistenz Files für XML, Objekte, … Preferences mit Key/Value Paaren  Vorteil: einfache UI Erstellung SQLite Über Applikations-/Prozessgrenzen: Content Provider

Files für XML, Objekte, …

Preferences mit Key/Value Paaren  Vorteil: einfache UI Erstellung

SQLite

Über Applikations-/Prozessgrenzen: Content Provider

Performance Hohe Performance für normale Apps Optimierungen nötig für: Background Services (be nice) Spiele, Multimedia (flüssiger Ablauf) GC legt VM für 100-200ms lahm Regel #1: GC vermeiden. Keine neuen Objekte in zentralen Schleifen anlegen Versteckte Anlage von Objekten

Hohe Performance für normale Apps

Optimierungen nötig für:

Background Services (be nice)

Spiele, Multimedia (flüssiger Ablauf)

GC legt VM für 100-200ms lahm

Regel #1: GC vermeiden. Keine neuen Objekte in zentralen Schleifen anlegen

Versteckte Anlage von Objekten

Android Market Google Alternative App Stores existieren Registrierung notwendig, einmalig $25 Signieren mit Zertifikat (self-signed) Kein Review Prozess, sofort im Market Bezahlung über Google Checkout 70% der Einnahmen an Entwickler

Google

Alternative App Stores existieren

Registrierung notwendig, einmalig $25

Signieren mit Zertifikat (self-signed)

Kein Review Prozess, sofort im Market

Bezahlung über Google Checkout

70% der Einnahmen an Entwickler

Pluspunkte Schneller Einstieg für Java Entwickler Sicherheit (Permissions, Prozesse, User) All-in: Eclipse-basierte IDE Loose Coupling zwischen Apps (Intents) Einfache Integration WebKit, Maps UI Customization mit Themes GPS, Kamera, Beschleunigungssensor

Schneller Einstieg für Java Entwickler

Sicherheit (Permissions, Prozesse, User)

All-in: Eclipse-basierte IDE

Loose Coupling zwischen Apps (Intents)

Einfache Integration WebKit, Maps

UI Customization mit Themes

GPS, Kamera, Beschleunigungssensor

Minuspunkte Nach schnellem Einstieg komplexe Details Dalvik VM erinnert an Java 1.0/1.1 VM Homescreen Widgets sehr eingeschränkt Fehlende Event Unterstütztung UI Editor Ressourcen (R) vs. mehrere Projekte Unit Testing ist kompliziert Android Market Bugs

Nach schnellem Einstieg komplexe Details

Dalvik VM erinnert an Java 1.0/1.1 VM

Homescreen Widgets sehr eingeschränkt

Fehlende Event Unterstütztung UI Editor

Ressourcen (R) vs. mehrere Projekte

Unit Testing ist kompliziert

Android Market Bugs

Weitere Ressourcen Android.com SDK: Dev Guide mit guten How-tos, Referenz und API Demos mit Source Android Developer Blog android-hilfe.de Forum XING Gruppe

Android.com

SDK: Dev Guide mit guten How-tos, Referenz und API Demos mit Source

Android Developer Blog

android-hilfe.de Forum

XING Gruppe

Mitmachen! Android User Group München sites.google.com/site/androidmunich/ groups.google.de/group/android-muenchen Droidcon: 3. & 4. November in Berlin Android Barcamp & Konferenz Call for Paper bis 1.9. droidcon.com

Android User Group München

sites.google.com/site/androidmunich/

groups.google.de/group/android-muenchen

Droidcon: 3. & 4. November in Berlin

Android Barcamp & Konferenz

Call for Paper bis 1.9.

droidcon.com

Vielen Dank! Q&A groups.google.de/group/ android-muenchen Markus Junginger [email_address] http://greenrobot.de http://jars.de Twitter: greenrobot_de

groups.google.de/group/

android-muenchen

Markus Junginger

[email_address]

http://greenrobot.de

http://jars.de

Twitter: greenrobot_de

Add a comment

Related presentations

Presentación que realice en el Evento Nacional de Gobierno Abierto, realizado los ...

In this presentation we will describe our experience developing with a highly dyna...

Presentation to the LITA Forum 7th November 2014 Albuquerque, NM

Un recorrido por los cambios que nos generará el wearabletech en el futuro

Um paralelo entre as novidades & mercado em Wearable Computing e Tecnologias Assis...

Microsoft finally joins the smartwatch and fitness tracker game by introducing the...

Related pages

GTUG Android Präsentation ist online - greenrobot ...

GTUG Android Präsentation ist online. Die Folien zu meinem Android Vortrag für die GTUG München stehen jetzt zum ... 2009 | greenrobot | 2 Comments. ...
Read more

GTUG Munich

GTUG steht für Google Technology ... Android, Web und mehr in München. ... + Alain Ekambi - native Android and iOs Entwicklung mit Google Web Tookit ...
Read more

Treffen am 01/04/09 - Google Kantine - GTUG Munich

GDG Android München. In deiner Nähe. ... 01.04.2009. Fazit: Der Abend ... GTUG München wird es jedenfalls definitiv wieder geben, ...
Read more

GTUG München - Google Groups

GTUG München. Willkommen in der ... Eine GTUG in eurer Nähe findet ihr auf ... Meetup Android tonight at Werk1: Markus Greve:
Read more

Sponsoren - GTUG Munich

Die GTUG München ist eine Gruppe von Enthusiasten ... GDG Android München. In ... Dabei sehen wir technische Entwicklungen als Motor für ...
Read more

Google Technology User Group Hamburg

... (Designing and Implementing Android UIs for Phones and Tablets) ... GTUG Verzeichnis; GTUG München; ... 2009 (7) ...
Read more

Google Technology User Group Hamburg: August 2009

Samstag, 29. August 2009. ... Die Themen Wave und Android sowie die schöne Location bei Google haben rund 90 Entwickler ... GTUG München; GTUG Berlin ...
Read more

Benjamin Broll - Geschäftsführer - NEXT Munich GmbH. The ...

Hochwertige Lösungen für iOS / Android / Windows Phone / Windows 8; ... Beratung für Entwicklungen im Mobilfunkmarkt; ... 12/2009 ...
Read more