Softwareentwicklung für Android Carsten Taubert
Ablauf installieren der SDK installieren der Entwicklungsumgebung programmieren der Anwendung testen durch Emulatoren deployen der fertigen Anwendung (installieren auf Mobilgerät) (Veröffentlichen im WWW)
Ablauf mit Java ME SDK: Java ME (Wireless Toolkit) NetBeans oder Eclipse mit EclipseME Plugin Testen durch Standardemulatoren von Sun <name>.jar Datei exportieren (auf Handy installieren) (im Jamba SparAbo verkaufen)
Ablauf mit Java ME Vorteil: läuft auf fast allen gängigen Mobiltelefonen Ausnahme: Smartphones mit Windows mobile (Möglichkeit der Installation) iPhone Smartphones mit Android
Ablauf mit Android installieren der Android SDK installieren des Eclipse Plugin (ADT) programmieren der Anwendung testen durch Android Emulator deployen der fertigen Anwendung signieren der fertigen Anwendung (installieren auf Mobilgerät) (Veröffentlichen im Android Market)
System - Architektur
Erstes Android Programm Starter muss von android.app.Activity erben Keine statische main Methode Beispiel: package net.doncarsten.android; import android.app.Activity; public class EmptyClazz extends Activity { }
Hello Android package net.doncarsten.android; import android.app.Activity; public class HelloWorld extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); tv.setText("Hello, Android"); setContentView(tv); }
Lebenszyklus einer Anwendung public class Activity extends ApplicationContext { protected void onCreate( Bundle savedInstanceState); protected void onStart(); protected void onRestart(); protected void onResume(); protected void onPause(); protected void onStop(); protected void onDestroy(); }
Vergleich zu JavaME Android JavaME public class Activity extends ApplicationContext { protected void onCreate( Bundle savedInstanceState); protected void onStart(); protected void onRestart(); protected void onResume(); protected void onPause(); protected void onStop(); protected void onDestroy(); } public class Midlet { protected void startApp(); protected void pauseApp(); protected void destroyApp(); }
Hello Android mit XML Template package net.doncarsten.android; import android.app.Activity; public class HelloWorld extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); tv.setText("Hello, Android"); setContentView(tv); } setContentView(R.layout.main);
Hello Android mit XML Template XML Datei: res/layout/main.xml <?xml version="1.0" encoding="utf-8" ?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="Hello, Android" />
XML - Java Kommunikation <?xml version="1.0" encoding="utf-8" ?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" > <TextView android:id="@+id/label" android:text="Hello, Android" /> </RelativeLayout> TextView msgTextView = (TextView) findViewById(R.id.label); msgTextView.setText("Hello, World");
Speichern von Daten Preferences Dateien SQLite Datenbank meist genutzt einfaches aufrufen einer Methode Speichern von Key / Value Dateien SQLite Datenbank Content Provider Speichern von Daten die in mehreren Anwendungen eingesehen werden Netzwerk
Speichern durch Preferences SharedPreferences settings = this.getPreferences(MODE_PRIVATE); SharedPreferences.Editor editor = settings.edit(); editor.putString("myKey", "myValue"); editor.commit(); Öffnen: String elizaText = settings.getString("myKey", "defaultValue");
Kommunikation mit dem Emulator Telnetverbindung telnet localhost <port> Beispiele: SMS: sms send <nummer> <text> Anruf: gsm call <nummer>
Versionierung <?xml version="1.0" encoding="utf-8" ?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="net.doncarsten.android" android:versionCode="1" android:versionName="1.0.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".FormExample" android:label="@string/app_name" > … </activity> </application> </manifest>
Signierung Jede Anwendung muss signiert werden Nicht signierte Anwendungen können nicht installiert werden Selbst erstellte Zertifikate können genuzt werden Keine Zertifizierungsstelle ( Certificate Authority ) wird benötigt Zertifizierung durch RSA Verfahren ( private / public Key )
Signierung Exportieren der Anwendung nach <name>.apk Erstellen eines Keys mit keytool
Signierung der Anwendung mit jarsigner
Veröffentlichen Android Market ( http://market.android.com ) registrieren 25 $ überweisen Programm uploaden
Danke für die Aufmerksamkeit