8 2D- und 3D-Grafiken zeichnen... 253 Eigene Widgets gestalten... 253 Augenschmaus... 280. Nebenläufigkeit in Android... 120 Serialisierung...



Ähnliche Dokumente
Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Anleitung zur Installation von Thunderbird

Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. ist einer davon.

G DATA INTERNET SECURITY FÜR ANDROID

Anleitung Thunderbird Verschlu sselung

Memeo Instant Backup Kurzleitfaden. Schritt 1: Richten Sie Ihr kostenloses Memeo-Konto ein

4.1 Download der App über den Play Store

Die YouTube-Anmeldung

Anmeldung, Registrierung und Elternkontrolle des MEEP!-Tablet-PC

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

2. Die eigenen Benutzerdaten aus orgamax müssen bekannt sein

Import des persönlichen Zertifikats in Outlook 2003

Verschlüsseln Sie Ihre Dateien lückenlos Verwenden Sie TrueCrypt, um Ihre Daten zu schützen.

TeamViewer App für Outlook Dokumentation

etermin Einbindung in Outlook

Steganos Secure Schritt für Schritt-Anleitung für den Gastzugang SCHRITT 1: AKTIVIERUNG IHRES GASTZUGANGS

MetaQuotes Empfehlungen zum Gebrauch von

Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Import des persönlichen Zertifikats in Outlook Express

Registrierung am Elterninformationssysytem: ClaXss Infoline

Thunderbird Portable + GPG/Enigmail

Leichte-Sprache-Bilder

Registrierung als Android Market Developer

-Verschlüsselung mit S/MIME

Wordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten

TeamSpeak3 Einrichten

Die Cloud der Gruppe Clubmädchen

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Anleitung für den Zugriff auf Mitgliederdateien der AG-KiM

etoken mit Thunderbird verwenden

Thunderbird herunterladen, Installieren und einrichten Version (portable)

Institut für Existenzgründungen und Unternehmensführung Wilfried Tönnis, M.A. Installationshandbuch

Bedienungsanleitung. Matthias Haasler. Version 0.4. für die Arbeit mit der Gemeinde-Homepage der Paulus-Kirchengemeinde Tempelhof

Die Dateiablage Der Weg zur Dateiablage

GeoPilot (Android) die App

TELIS FINANZ Login App

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Zeiterfassung mit Aeonos. Bedienungsanleitung für die App

Beantragen und installieren eines Nutzerzertifikats der CA HS-Bochum - Basic

Inhalt... 1 Einleitung... 1 Systemanforderungen... 1 Software Download... 1 Prüfdokumentation... 4 Probleme... 5 Hintergrund... 5

ÖKB Steiermark Schulungsunterlagen

Primzahlen und RSA-Verschlüsselung

Registrierungsanleitung Informatik-Biber

Hinweise zum Update des KPP Auswahltools (Netzwerkinstallation) auf Version 7.2

Einrichten eines POP-Mailkontos unter Thunderbird Mail DE:

Anleitung für die Registrierung und das Einstellen von Angeboten

Grid Player für ios Version 1.1

Der einfache Weg zum CFX-Demokonto

Handbuch für Nutzer von Zertifikaten der Zertifizierungsstellen (CAs) des Bayerischen Behördennetzes (BYBN) zur Sicherung von s Teil D7:

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

S TAND N OVEMBE R 2012 HANDBUCH DUDLE.ELK-WUE.DE T E R M I N A B S P R A C H E N I N D E R L A N D E S K I R C H E

Fülle das erste Bild "Erforderliche Information für das Google-Konto" vollständig aus und auch das nachfolgende Bild.

EASYINSTALLER Ⅲ SuSE Linux Installation

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

Seite 1 von 6

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Google Analytics einrichten

FrogSure Installation und Konfiguration

Beispiel Shop-Eintrag Ladenlokal & Online-Shop im Verzeichnis 1

QUECHUA PHONE 5 DAS ERSTE MOUNTAINPROOF SMARTPHONE. Gebrauchsanleitung Android. Schlagfest Dichtigkeit Autonomie Apps die für das Wandern

DRM geschützte ebooks auf dem ipad

Mediumwechsel - VR-NetWorld Software

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar ZID Dezentrale Systeme

Installation und Test von Android Apps in der Entwicklungs- und Testphase

Anleitung zur Installation und Nutzung des Sony PRS-T1 ebook Readers

Anleitung zur Installation und Nutzung des Sony PRS-T1 ebook Readers

WordPress installieren mit Webhosting

Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista

Alltag mit dem Android Smartphone

Android-Apps Google-Maps v2

Netzsicherheit I, WS 2008/2009 Übung 12. Prof. Dr. Jörg Schwenk

Anleitung zum erfassen von Last Minute Angeboten und Stellenangebote

Der vorliegende Konverter unterstützt Sie bei der Konvertierung der Datensätze zu IBAN und BIC.

Import des persönlichen Zertifikats in Outlook2007

Eine Google adresse anlegen und loslegen

Diese Anleitung beschreibt das Vorgehen mit dem Browser Internet Explorer. Das Herunterladen des Programms funktioniert in anderen Browsern ähnlich.

PayPal API Zugang aktivieren und nutzen Version / Datum V 1.5 / a) Aktivierung auf der PayPal Internetseite. 1 von 7

Meldung Lokale Anwendung inkompatibel oder Microsoft Silverlight ist nicht aktuell bei Anmeldung an lokal gespeicherter RWE SmartHome Anwendung

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Diese Anleitung enthält Anweisungen, die nur durch erfahrene Anwender durchgeführt werden sollten!

OP-LOG

PeDaS Personal Data Safe. - Bedienungsanleitung -

Installation Benutzerzertifikat

Anleitung: Sammel-Rechnungen für Lizenzen bei Swiss Basketball

Fotostammtisch-Schaumburg

Erste Schritte mit TeamSpeak 3

BüroWARE Exchange Synchronisation Grundlagen und Voraussetzungen

-Verschlüsselung mit Geschäftspartnern

Clientkonfiguration für Hosted Exchange 2010

Um sich zu registrieren, öffnen Sie die Internetseite und wählen Sie dort rechts oben

Die Anleitung zur Web Opac App Schritt für Schritt (Stand: )

ANLEITUNG PREMIUM-PROFIL

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11

Anleitung BFV-Widget-Generator

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten

Internationales Altkatholisches Laienforum

Senden von strukturierten Berichten über das SFTP Häufig gestellte Fragen

Windows 10. Vortrag am Fleckenherbst Bürgertreff Neuhausen.

Transkript:

Inhalt Vorwort.... Teil I: Werkzeuge und Grundlagen... 1 1 Das Android-SDK... 3 Das Android-SDK und die Voraussetzungen installieren... 3 Testlauf: Prüfen, ob die Installation funktioniert... 15 Komponenten des SDKs... 26 Aktualisierungen... 34 Beispielcode... 37 Über das Lesen von Code... 38 2 Java für Android... 41 Android verändert das clientseitige Java... 41 Das Java-Typsystem... 42 Geltungsbereiche... 66 Idiome der Java-Programmierung... 70 3 Die Zutaten einer Android-Anwendung... 87 Traditionelle Programmiermodelle im Vergleich zur Android-Programmierung... 87 Activities, Intents und Tasks... 89 Weitere Android-Komponenten... 91 Der Lebenszyklus von Komponenten... 96 Statische Anwendungsressourcen und Kontext... 100 Die Android-Laufzeitumgebung für Anwendungen... 109 Android erweitern... 113 XI V

Nebenläufigkeit in Android... 120 Serialisierung... 136 4 Ihre Anwendung in die Hände des Benutzers bringen... 145 Anwendungssignierung... 145 Eine App auf Google Play bringen... 156 Alternativen für den Vertrieb... 159 Google Maps-API-Schlüssel... 161 Die API-Level-Kompatibilität angeben... 162 Kompatibilität mit vielen Displays... 163 5 Eclipse bei der Android-Softwareentwicklung... 165 Eclipse-Konzepte und Terminologie... 166 Eclipse-Views und Perspektiven... 172 Java-Programmierung in Eclipse... 175 Eclipse und Android... 177 Bugs verhindern und den Code sauber halten... 178 Eclipse-Eigenarten und Alternativen... 187 Teil II: Das Android-Framework... 189 6 Einen View aufbauen... 191 Die Android-GUI-Architektur... 191 Eine grafische Benutzerschnittstelle zusammenbauen... 196 Den Controller einbinden... 202 Das Menü und die Aktionsleiste... 224 View-Debugging und -Optimierung... 227 7 Fragmente und die Unterstützung unterschiedlicher Plattformen... 231 Ein Fragment erstellen... 232 Fragment-Lebenszyklus... 235 Der Fragment-Manager... 237 Fragmenttransaktionen... 238 Die Support Library... 243 Fragmente und Layout... 245 8 2D- und 3D-Grafiken zeichnen... 253 Eigene Widgets gestalten... 253 Augenschmaus... 280 VI Inhalt

9 Datenverarbeitung und -speicherung... 295 Einführung in relationale Datenbanken... 295 SQLite... 296 Die Sprache SQL... 297 SQL und das datenbankzentrierte Datenmodell für Android-Anwendungen 308 Die Android-Datenbankklassen... 310 Datenbankdesign für Android-Anwendungen... 311 Die Datenbank-API nutzen: MJAndroid... 315 Teil III: Ein Anwendungsgerüst für Android... 329 10 Ein Framework für ordentliche Anwendungen... 331 Den Lebenszyklus visualisieren... 332 Der Fragment-Lebenszyklus... 346 Die Activity-Klasse und ordentliche Anwendungen... 349 Lebenszyklusmethoden der Klasse Application... 350 11 Eine Benutzerschnittstelle aufbauen... 355 Übergeordnetes Design... 356 Grafische Bearbeitung der Benutzerschnittstelle... 359 Mit einem leeren Blatt beginnen... 360 Das Layout der Fragmente... 364 Ein skalierbares UI in Komponenten zerlegen... 367 Activity, Fragment, Aktionsleiste und mehrere Layouts zur Zusammenarbeit bringen... 374 Die andere Activity... 378 12 Content-Provider nutzen... 383 Wie Content-Provider funktionieren... 385 Die öffentliche Provider-API implementieren... 389 Einen Content-Provider schreiben und integrieren... 394 Dateimanagement und Binärdaten... 396 Android-MVC und Content-Observation... 398 Ein vollständiger Content-Provider: Der SimpleFinchVideoContentProvider-Code... 400 Ihren Content-Provider deklarieren... 409 Inhalt VII

13 Ein Content-Provider als Fassade für einen REST-basierten Webservice 411 REST-basierte Android-Anwendungen entwickeln... 412 Ein»Netzwerk-MVC«... 413 Zusammenfassung der Vorteile... 415 Codebeispiel: YouTube-Videoinhalte dynamisch anzeigen und cachen... 417 Die Struktur des Quellcodes für das Finch-YouTube-Videobeispiel... 419 Die Videoanwendung Schritt für Schritt... 420 Schritt 1: Das UI nimmt Benutzereingaben entgegen... 421 Schritt 2: Unser Controller überwacht Events... 421 Schritt 3: Der Controller führt mit einer ManagedQuery einen Request auf Content-Provider bzw. Modell aus... 421 Schritt 4: Den REST-Request implementieren... 422 Teil IV: Fortgeschrittenere Themen... 443 14 Suche... 445 Die Suchschnittstelle... 445 Suchvorschläge... 454 15 Location und Mapping... 461 Positionsbasierte Dienste... 462 Mapping... 463 Die Google Maps-Activity... 463 MapView und MapActivity... 464 Mit MapViews arbeiten... 465 MapView- und MyLocationOverlay-Initialisierung... 466 Eine MapActivity aussetzen und wiederaufnehmen... 469 Die Karte mit Menübuttons steuern... 471 Die Karte mit dem Keypad steuern... 473 Positionsdaten ohne Karten... 474 StreetView... 482 16 Multimedia... 485 Audio und Video... 485 Audio- und Videowiedergabe... 486 Audio- und Videoaufzeichnung... 490 Gespeicherte Medieninhalte... 496 VIII Inhalt

17 Sensoren, NFC, Sprache, Gesten und Barrierefreiheit... 499 Sensoren... 499 Near Field Communication (NFC)... 505 Gesteneingabe... 517 Barrierefreiheit... 519 18 Kommunikation, Identität, Synchronisierung und Social Media... 523 Kontaktkonten... 523 Authentifizierung und Synchronisierung... 526 Bluetooth... 542 19 Das Android Native Development Kit (NDK)... 559 Native Methoden und JNI-Aufrufe... 560 Das Android-NDK... 562 Native Bibliotheken und Header aus dem NDK... 566 Eigene Bibliotheksmodule erstellen... 567 Native Activitys... 571 Index.... 579 Inhalt IX

KAPITEL 4 Ihre Anwendung in die Hände des Benutzers bringen Dieses Kapitel behandelt alles, was erforderlich ist, um Ihre Anwendung»an den Mann«bzw. die Benutzerinnen und Benutzer zu bringen. In den vorangegangenen Kapiteln haben wir Ihnen alles vorgestellt, was Sie brauchen, um mit dem Lesen von Beispielcode und dem Erstellen einfacher Beispielanwendungen zu beginnen. Hier vervollständigen wir das Bild mit allen anderen Operationen, die Sie ausführen müssen, um Ihre Anwendungen zu verbreiten, sie zu verkaufen (wenn das Ihr Ziel ist) und daraufhin von Google (das ja hinter Google Play steht) bezahlt zu werden. Vielleicht sind Sie noch nicht bereit, Ihre Anwendung auf Google Play anzubieten. Aber dass Sie diesen Prozess im Hinterkopf haben, wird Ihnen beim Entwurf und bei der Implementierung Ihrer Anwendung helfen. Das Geschäft verlangt Überlegungen, die sich von den meisten anderen Aspekten der Softwareentwicklung unterscheiden unter anderem, dass Sie sich selbst gegenüber Google Play und Ihren Kunden ausweisen, die Berechtigung zur Verwendung bestimmter APIs erhalten, Ihre Identität schützen und Ihre App darauf vorbereiten müssen, dass sie auf einer Vielzahl von Geräten läuft und mit der Zeit aktualisiert werden kann. Anwendungssignierung Die Anwendungs- oder Codesignierung ermöglicht es Android-Geräten, Google Play und alternativen Distributionskanälen, zu erkennen, welche Anwendungen vom Besitzer eines Signierungszertifikats stammen. Außerdem geben sie die Sicherheit, dass der Code seit der Signierung nicht mehr verändert wurde. Asymmetrische Verschlüsselung und Signierung Asymmetrische Kryptografie basiert auf folgendem mathematischen Prinzip: Es ist leicht, große Primzahlen zu multiplizieren, aber es ist äußerst schwierig, das resultierende Produkt zu faktorisieren (also in ihre Primfaktoren zu zerlegen). Die Multiplikation dauert vielleicht nur Millisekunden, während die Faktorisierung Hun- 145

derte von Millionen Jahren dauern und einen astronomisch leistungsfähigen Rechner erfordern würde. Diese Asymmetrie zwischen der Multiplikation und der Faktorisierung ermöglicht es, dass ein Schlüssel, der aus dem Produkt zweier großer Primzahlen gebildet wurde, veröffentlicht werden kann. Die Entschlüsselung verschlüsselter Nachrichten erfolgt auf Basis jener beiden großen Primzahlen, die den privaten Schlüssel bilden. Das heißt, dass Dokumente, die mit dem öffentlichen Schlüssel verschlüsselt wurden, als sicher gelten und nur vom Besitzer des privaten Schlüssels entschlüsselt werden können. Das Signieren, d.h. der Vorgang, den wir für Android-Anwendungen durchführen werden, basiert auf damit verwandten Eigenschaften der asymmetrischen Verschlüsselung. Die Schritte zur Signierung eines Dokuments sind: 1. Eine eindeutige Zahl einen Hash für das Dokument berechnen. Diese Zahl bezeichnet man als Message-Digest. 2. Den Message-Digest mit dem privaten Schlüssel des Signierers»verschlüsseln«. Das ist die Signatur. Voilà! Jetzt haben Sie eine Zahl eine Signatur, die durch den Hash-Algorithmus an das Dokument und an den privaten Schlüssel des Signierers gebunden ist. Die Schritte zur Überprüfung eines signierten Dokuments sind: 1. Eine eindeutige Zahl einen Hash für das Dokument berechnen. 2. Die Signatur mit dem öffentlichen Schlüssel»entschlüsseln«, was die gleiche Zahl ergeben sollte wie der Hash. Indem dieses Verfahren durchlaufen wird, wird Folgendes sichergestellt: Das Dokument in unserem Fall eine Anwendung kam von einer Person mit einem privaten Schlüssel. Dieser enstpricht dem öffentlichen Schlüssel, den Sie für die Überprüfung genutzt haben. Außerdem wurde verifiziert, dass das Dokument nicht verändert wurde andernfalls würde der Hashwert, der aus der Signatur entschlüsselt wurde, nicht dem entsprechen, der aus dem Dokument berechnet wurde. Die Überprüfung einer Signatur schließt auch ein, dass die Signatur nicht von einem anderen Dokument kopiert wurde. Signaturen sind unveränderlich an das Dokument gebunden, auf dessen Basis sie erstellt wurden. Vielleicht ist Ihnen aufgefallen, dass wir die Wörter verschlüsseln und entschlüsseln in Anführungszeichen gesetzt haben, als wir sagten, dass der Message-Digest oder der Hashwert verschlüsselt ist. Damit soll ausgedrückt werden, dass es sich dabei um keine Verschlüsselung im üblichen Sinne handelt. Sie hat nicht das Ziel, neugierige Augen von Nachrichten fernzuhalten. Die Daten werden hier also nicht mit einem öffentlichen Schlüssel verschlüsselt, damit nur die Person mit dem privaten Schlüssel sie entschlüsseln kann. 146 Kapitel 4: Ihre Anwendung in die Hände des Benutzers bringen

Hier heißt»verschlüsseln«einfach»eine Zahl berechnen«. Sie verbergen keine Informationen, wenn Sie einen Hash oder Message-Digest mit dem privaten Schlüssel des Signierers»verschlüsseln«. Verschlüsseln und Entschlüsseln meint hier, dass Sie den gleichen Hash oder Message-Digest erhalten, wenn Sie die Daten mit dem öffentlichen Schlüssel entschlüsseln. Jeder, der im Besitz des öffentlichen Schlüssels ist und den verwendeten Algorithmus kennt, kann die Daten»entschlüsseln«. Das ist genau der Punkt, bei dem es im Rahmen dieser Überprüfung geht: Sie wollen sehen, ob Sie tatsächlich den Hash erhalten, den der Sender signiert hat. Das beweist, dass der Sender im Besitz des privaten Schlüssels ist, der zu dem öffentlichen Schlüssel gehört, den Sie benutzt haben. Außerdem beweist es auch, dass das Dokument tatsächlich das Dokument ist, das der Sender signiert hat (und dass es nachträglich nicht verändert wurde). Da die Überprüfung mit einem öffentlichen Schlüssel berechnet werden kann, kann Ihr Android-System und jede andere interessierte Partei prüfen, dass eine Anwendung mit einem bestimmten Schlüssel signiert wurde und dass sie seit der Signierung nicht verändert wurde. Allgemeiner formuliert: Jedes elektronische Dokument jede Menge von Bits kann kryptografisch signiert werden, und kryptografische Signaturen oder»digitale Signaturen«können eingesetzt werden, um Dokumente auf eine Weise zu signieren, die rechtlich die handgeschriebene Unterschrift einer Person ersetzen kann. Wie Signaturen Softwarenutzer, Hersteller und sichere Verbindungen schützen Als Nutzer von Computer-Software haben Sie wahrscheinlich gelegentlich bereits Folgendes gedacht:»es wäre schon nett, wenn ich wüsste, woher meine Software kommt, und ich die Garantie hätte, dass sie auf dem Weg zu meinem Gerät nicht verändert wurde.«signierte Anwendungen bieten Ihnen diese Sicherheit. Das ist eine Form des auf kryptografischen Signaturen basierenden Vertrauens, das einer Form ähnelt, die Sie bereits nutzen. Wenn Sie im Web surfen, verlassen Sie sich bereits auf kryptografische Signaturen. Sie vertrauen dann darauf, dass die Site, mit der Sie gerade kommunizieren, authentisch ist und kein böswilliger Hochstapler dahinter steckt, der Ihr Geld nimmt und sich von dannen macht. Beim E-Commerce überprüft der Client die Signatur des Serverzertifikats anhand eines öffentlichen Schlüssels, der von einer Zertifizierungsstelle stammt. Ihr Browser bringt Schlüssel mehrerer Zertifizierungsstellen mit, die zu diesem Zweck eingesetzt werden. Die Rolle der Zertifizierungsstellen besteht darin, die Anzahl der Parteien, denen Sie trauen müssen, überschaubar zu halten: Sie vertrauen darauf, dass der Hersteller Ihres Browsers nur Schlüssel von angesehenen Zertifizierungsstellen nutzt, und E-Commerce-Unternehmen erhalten Zertifikate von Stellen, denen Browser-Herstel- Anwendungssignierung 147

ler vertrauen. Die Zertifizierungsstellen haben die Verantwortung, zu überprüfen, dass Leute, die behaupten, beispielsweise Amazon.com zu sein, tatsächlich Amazon.com sind. Jedes Mal, wenn Ihr Browser eine sichere Session mit Amazon.com initiiert, wissen Sie zwei Dinge: Ihre Daten sind durch eine Verschlüsselung, die nur der Server des E-Commerce-Unternehmens entschlüsseln kann, vor Lauschern geschützt. Sie können hinreichend sicher sein, dass der Server, mit dem Sie verbunden sind, ein Zertifikat nutzt, das von einer Zertifizierungsstelle an das E-Commerce-Unternehmen ausgegeben wurde. Die Zertifizierungsstelle hat bereits alle Schritte unternommen, um zu überprüfen, dass sie Zertifikate nur an eindeutig identifizierte Parteien ausgibt. Selbst signierte Zertifikate für Android-Software Beim Signieren von Android-Software muss das signierende Zertifikat nicht von einer Zertifizierungsstelle kommen. Es kann vom Softwareherausgeber in diesem Fall von Ihnen selbst erstellt werden. Bei E-Commerce-Transaktionen gibt es die zusätzliche Anforderung, dass Sie sicherstellen wollen, dass auch wirklich alle Verbindungen, die Ihr Browser (eventuell über einen Link unbekannter Herkunft) herstellt, an das echte Amazon.com gehen. Bei der Verwendung von Software oder Apps ist es im Vergleich wesentlich weniger wichtig, die Identität der signierenden Partei zu kennen. Für Organisationen, die erwägen, eine Signatur einzusetzen, die von einer Zertifizierungsstelle ausgegeben wurde, führt die Google-Dokumentation explizit an, dass es nicht notwendig ist, Anwendungen über eine Zertifizierungsstelle zu signieren. Die Selbst-Zertifizierung ist der informelle Standard für Android-Anwendungen. Auf Android werden digitale Signaturen nicht nur zur anfänglichen Überprüfung der Entwickleridentität eingesetzt, sondern auch während der Aktualisierung von Anwendungen. Sie stellen sicher, dass auf Dateien, die von einer früheren Version einer Anwendung erstellt wurden, nur Aktualisierungspakete für diese Anwendung zugreifen können, und verhindern, dass die aktualisierende Anwendung eine Schurkenanwendung ist, die versucht, Benutzerdaten zu stehlen. Solange Sie sicher sind, dass Aktualisierungen der Software von eben der Partei stammen, von der Sie die Software ursprünglich erhalten haben, können Sie hinreichend sicher sein, dass die Programme, die Sie nutzen, sicher sind und dass der Herausgeber der Software dem Verteiler der Software, also Google Play, bekannt ist. Neben der Gewährleistung, dass Aktualisierungen vom ursprünglichen Herausgeber stammen, gibt es noch weitere Sicherheitsmaßnahmen: das Sandboxing von Anwendungen und die Einforderung von Berechtigungen für den Zugang zu Funktionen, die zu einer Verletzung Ihrer Daten genutzt werden könnten oder über die auf kostenpflichtige Mobildienste zugegriffen werden könnte. Mehr dazu können Sie unter http://developer.android.com/guide/topics/security/security.html nachlesen. 148 Kapitel 4: Ihre Anwendung in die Hände des Benutzers bringen

Eine Anwendung signieren Die Konzepte hinter der kryptografischen Signierung sind subtil und komplex. Aber diese Komplexität wird von der SDK-Werkzeugen verwaltet. Wenn Sie Android- Code kompilieren und auf einem Gerät oder einem Emulator ausführen, führen Sie signierten Code aus. Debugging-Zertifikate Wenn Sie die Beispiele in diesem Buch nachgearbeitet, ein Android-Projekt erstellt und es in einem Emulator oder auf einem Gerät ausgeführt haben, haben Sie vielleicht bemerkt, dass Sie kein Zertifikat erstellen mussten und dass Ihre Anwendung auf einem Gerät installiert werden konnte, obwohl Android-Code eigentlich doch immer signiert sein muss. Dies wird durch die Verwendung eines automatisch erstellten Debugging-Zertifikats erreicht. Werfen wir einen Blick auf dieses Debugging-Zertifikat. Schauen Sie in den.android-ordner in Ihrem Home-Verzeichnis. Dort finden Sie eine Datei namens debug.keystore. Mit dem keytool-befehl können Sie herausfinden, was in dieser Datei steckt: keytool -list -keystore debug.keystore Wenn Sie zur Eingabe eines Passworts aufgefordert werden, geben Sie android ein. Sie werden eine Ausgabe folgender Form sehen: Keystore-Typ: JKS Keystore-Provider: SUN Ihr Keystore enthält 1 Einträge. androiddebugkey, 13.01.2013, PrivateKeyEntry, Zertifikatsfingerabdruck (MD5): E4:3C:2B:27:B5:39:B6:DE:EC:A4:CA:52:3E:75:CB:AA»Keystore-Typ«und»Keystore-Provider«zeigen an, dass der Keystore (Schlüsselspeicher) ein Java-Keystore ist, der mit der Java Cryptography Architecture und Java-Klassen kompatibel ist. Sie ermöglichen es Android, die Codesignierung und andere kryptografische Tools zu nutzen. Mehr Informationen zur Java Cryptography Architecture finden Sie unter http://download.oracle.com/javase/6/docs/technotes/tools/solaris/keytool.html. Der keytool-befehl ist Teil des JDKs und wird kurz im Abschnitt»keytool«auf Seite 33 und ausführlicher unter http://developer.android.com/tools/publishing/appsigning.html beschrieben. Eine ausführliche Dokumentation zu keytool finden Sie außerdem unter http://download.oracle.com/javase/6/docs/technotes/tools/solaris/ keytool.html. Die letzte von der list-option in keytool hervorgebrachte Zeile ist ein Zertifikatsfingerabdruck. Das ist eine eindeutige Zahl, die aus einem Schlüssel generiert wird. Eine Möglichkeit, wie diese Zahl genutzt wird, können Sie im Abschnitt»Anwen- Anwendungssignierung 149

dungssignierung«auf Seite 145 sehen, wo sie genutzt wurde, um einen API-Schlüssel zu erhalten. Dieses Zertifikat läuft nach so kurzer Zeit aus, dass es nur für Testzwecke geeignet ist und nicht genutzt werden kann, um Android-Software zu verteilen. Dass Sie während der Entwicklung bequem mit Debugging-Zertifkaten arbeiten können, sollte Sie nicht zu der Annahme verleiten, dass Sie Ihre Anwendung auch ohne ein Signierzertifikat vertreiben können. Ein selbst signiertes Zertifikat erstellen Sind Sie bereit, Ihren Code für die Veröffentlichung zu signieren? Zunächst erstellen Sie mit dem keytool-befehl einen privaten Schlüssel: keytool -genkey -v -keystore my-release-key.keystore -alias alias_name \ -keyalg RSA -keysize 2048 -validity 50000 Das \-Zeichen zeigt einen Zeilenumbruch an und ist unter Unix und Mac OS X für mehrzeilige Befehle zulässig. Wenn Sie unter Windows arbeiten, müssen Sie alles auf einer Zeile ohne das \ eingeben. Für my-release-key können Sie einen Namen Ihrer Wahl angeben und für alias_name einen Alias Ihrer Wahl. Die Parameter -keysize und -validity sollten so bleiben wie im Code oben. Wie im folgenden Code zu sehen ist, fordert keytool Sie zur Eingabe eines Passworts für den Keystore auf. Dieses Passwort müssen Sie sich merken und wieder eingeben, wenn Sie auf den Keystore zugreifen. Außerdem müssen Sie eine Reihe von Fragen über sich, Ihre Organisationsstruktur und Ihren Standort beantworten. keytool generiert einen privaten Schlüssel, der als Signierzertifikat genutzt werden kann und eine Gültigkeitsdauer von rund 150 Jahren hat, und steckt ihn dann in eine Datei namens <my-release_key>.keystore. example-user@default-hostname:~$ keytool -genkey -v \ -keystore example-release-key.keystore -alias example_alias_name \ -keyalg RSA -keysize 2048 -validity 50000 Geben Sie das Keystore-Passwort ein: Geben Sie das Passwort erneut ein: Wie lautet Ihr Vor- und Nachname? [Unknown]: Max Mustermann Wie lautet der Name Ihrer organisatorischen Einheit? [Unknown]: Unternehmen XYZ Wie lautet der Name Ihrer Organisation? [Unknown]: Unternehmen XYZ Wie lautet der Name Ihrer Stadt oder Gemeinde? [Unknown]: Irgendwo Wie lautet der Name Ihres Bundeslandes oder Ihrer Provinz? [Unknown]: Nirgends Wie lautet der Landescode (zwei Buchstaben) für diese Einheit? [Unknown]: NI Ist CN=Max Mustermann, OU=Unternehmen XYZ, O=Unternehmen XYZ, 150 Kapitel 4: Ihre Anwendung in die Hände des Benutzers bringen

L=Irgendwo, ST=Nirgends, C=NI richtig? [Nein]: ja Erstellen von Schlüsselpaar (Typ RSA, 2.048 Bit) und selbstunterzeichnetem Zertifikat (SHA1withRSA) mit einer Gültigkeit von 50.000 Tagen für: CN=Max Mustermann, OU=Unternehmen XYZ, O=Unternehmen XYZ, L=Irgendwo, ST=Nirgends, C=NI Geben Sie das Passwort für <example_alias_name> ein. (EINGABETASTE, wenn Passwort dasselbe wie für Keystore): [example-release-key.keystore wird gesichert.] Jetzt haben Sie einen gültigen Schlüssel in einem Keystore. Bewahren Sie Ihr Signierzertifikat gut auf Obwohl kryptografische digitale Signaturen in vielerlei Hinsicht zuverlässiger und sicherer sind als handgeschriebene Signaturen, gibt es eine Hinsicht, in der sie auch Nachteile aufweisen: Sie können Ihre Fähigkeit verlieren, ein Dokument digital zu signieren. Wenn Sie Ihr Signierzertifikat verlieren, verlieren Sie Ihre Identität für Android- Geräte und Google Play. Das heißt, dass Sie, obwohl Sie den gleichen Code wie zuvor kompilieren und veröffentlichen, die neu kompilierten Anwendungen nicht nutzen können, um bereits veröffentlichte Anwendungen zu aktualisieren, da weder Android-Geräte noch Google Play Sie als den App-Urheber wiedererkennen. Bewahren Sie mehrere Sicherungskopien Ihres Signierzertifikats auf unterschiedlichen Typen von Medien (auch auf Papier) an verschiedenen Orten auf. Und sorgen Sie dafür, dass diese Sicherungskopien sicher sind. Wenn Ihr Signierzertifikat von anderen als Ihnen selbst genutzt wird, können diese Leute Ihre Programme auf den Android-Geräten Ihrer Benutzer ändern. Ausführliche Empfehlungen von der Android-Entwicklerseite zur Sicherung Ihres Signierzertifikats finden Sie unter http://developer.android.com/guide/publishing/appsigning.html#secure-key. Umgekehrt ist Ihre kryptografische Signatur nur deswegen Ihre Signatur, weil Sie sie besitzen. Bis Sie eine Andriod-Anwendung veröffentlichen und dauerhaft als ihr Herausgeber identifizierbar sein müssen, können Sie Signaturen nach Vergnügen generieren, nutzen und wegwerfen. Haben Sie keine Angst, zu experimentieren und zu lernen! Eine Anwendung mit einem selbst signierten Zertifikat signieren Jetzt wird es Zeit, eine Anwendung zu signieren. Wählen Sie in Eclipse das Projekt für die Anwendung, die Sie für die Veröffentlichung signieren wollen, und wählen Sie den Befehl File Export.»Warum den Befehl Export?«, fragen Sie vielleicht. Schließlich können Sie, wenn Sie jemandem Ihre App zum Ausprobieren geben Anwendungssignierung 151

wollen, einfach eine Kopie der.apk-datei im bin-verzeichnis Ihrer Projekt-Dateihierarchie weitergeben. Das ist so willkürlich, wie es scheint: Der Export-Dialog ist eine Wundertüte an Funktionalitäten und war einfach ein bequemer Ort für eine Einrichtung, die nicht ganz das Gleiche wie»verteilen«ist. In diesem Beispiel nutzen wir das TestActivity-Projekt, aber Sie können eine beliebige Ihrer Anwendungen nutzen Ihre eigene oder ein beliebiges Projekt aus den Beispielen zu diesem Buch. Ihnen wird eine Liste mit in Ordner sortierten Optionen für das Exportieren angezeigt. Wählen Sie den Ordner Android, dann Export Android Application (wie Sie es in Abbildung 4-1 sehen), und klicken Sie schließlich auf den Button Next. Abbildung 4-1:»Exportieren«einer Android-Anwendung 152 Kapitel 4: Ihre Anwendung in die Hände des Benutzers bringen

Zunächst werden Sie sehen, ob die Konfiguration Ihrer Anwendung Fehler aufweist, die verhindern könnten, dass sie zur Veröffentlichung bereit ist, beispielsweise weil im Manifest das debuggable-attribut auf true gesetzt ist. Wenn Ihre App einsatzbereit ist, werden Sie den Dialog aus Abbildung 4-2 sehen, der keine Fehler anzeigt. Abbildung 4-2: Eine Android-Anwendung ohne Probleme, die das Signieren und Veröffentlichen verhindern könnte. Nachfolgende Dialoge in diesem mehrschrittigen Prozess konzentrieren sich auf das Signieren. Die Informationen, die angefordert werden, spiegeln die Informationen wider, die Sie bei der Erstellung Ihres Veröffentlichungsschlüssels im Abschnitt»Ein selbst signiertes Zertifikat erstellen«auf Seite 150 eingegeben haben. Als Nächstes werden Sie Ihren Keystore auswählen, wie Abbildung 4-3 zeigt. Der Keystore ist die Datei, die Ihren Schlüssel enthält. Anwendungssignierung 153

Abbildung 4-3: Den Keystore auswählen Nachdem Sie den Namen des Keystores und das Passwort eingegeben haben, klicken Sie auf Next und gehen zum nächsten Schritt über: zur Auswahl des Schlüssels und zur Eingabe des Passworts für den Alias, wie in Abbildung 4-4 gezeigt. 154 Kapitel 4: Ihre Anwendung in die Hände des Benutzers bringen

Abbildung 4-4: Den Schlüsselalias auswählen Wenn Sie die Schritte im Abschnitt»Ein selbst signiertes Zertifikat erstellen«auf Seite 150 befolgt haben, haben Sie nur einen Schlüssel mit einem Alias in Ihrem Keystore. Geben Sie das Passwort ein, und klicken Sie auf Next. Der nächste Schritt ist die Angabe der Ziel-.apk-Datei und das Bestehen einiger Tests, die prüfen, ob mit Ihrer App vielleicht etwas anderes nicht in Ordnung ist. Wenn alles okay ist, sehen Sie ein Fenster wie das in Abbildung 4-5. Wenn Sie auf Finish klicken, erhalten Sie eine signierte.apk-datei am angegebenen Ort. Anwendungssignierung 155

Abbildung 4-5: Auswahl des Ziels und endgültige Überprüfungsmaßnahmen Eine App auf Google Play bringen Eine App auf Google Play zu bringen, ist erstaunlich einfach, insbesondere im Vergleich zum App Store von itunes. Die einzige Voraussetzung ist, dass Sie ein Google-Konto, z.b. einen Gmail-Account, haben. Eine 25 US $-Kreditkartentransaktion und ein paar Informationen über sich selbst sind alles, was Sie benötigen, um mit dem Hochladen von Anwendungen auf Google Play loszulegen. Wenn Sie für Ihre Anwendungen Geld verlangen und erhalten wollen, sind ein paar zusätzliche Informationen und Mühen nötig Sie brauchen aber nicht einmal eine eigene Website oder ein Unternehmen. (Es ist allerdings empfehlenswert, vor dem Verkauf 156 Kapitel 4: Ihre Anwendung in die Hände des Benutzers bringen

von Produkten einen Anwalt zu konsultieren. Ein Anwalt könnte vorschlagen, ein Unternehmen zu gründen oder andere Maßnahmen zu ergreifen, um Ihre persönlichen Güter vor Verpflichtungen zu schützen, die aus kommerziellen Aktivitäten entstehen können.) Ein offizieller Android-Entwickler werden Um ein offizieller Android-Entwickler zu werden, melden Sie sich mit Ihrem Google- Account bei der Google Play Developer Console unter https://play.google.com/apps/ publish/ an. Diese Site fordert Sie erst einmal auf, sich die Vereinbarungen für den Entwicklervertrieb von Google Play anzusehen und ihre Kenntnis zu bestätigen. Dann geht es weiter zur Zahlung einer einmaligen Aufnahmegebühr von (derzeit) 25 US $. Wenn Sie noch kein Konto bei Google Wallet haben, werden Sie zuvor aufgefordert, ein solches einzurichten. Danach bezahlen Sie den Betrag und bestätigen dadurch, dass Sie eine von Google Wallet akzeptierte Zahlungsmöglichkeit (z.b. eine Kreditkarte) haben. Nachdem Sie sich als Entwickler angemeldet haben, können Sie Ihren Google-Account nutzen, um sich in die Google Play-Site einzuloggen. An diesem Punkt hat Google eine hinreichende Gewissheit, dass Sie wirklich die Person sind, die Sie zu sein behaupten, denn Sie sind immerhin in der Lage, unter Ihrem Namen per Kreditkarte zu zahlen. In Kombination mit der notwendigen Signierung der Anwendungen ist es einigermaßen sicher, dass sich der Schlüssel, den Sie zum Erstellen Ihrer Anwendungen nutzen, tatsächlich im Besitz der Person befindet, die den Google Play-Account eingerichtet hat, um Anwendungen auf Google Play hochzuladen. Wenn sich herausstellt, dass Sie ein Spammer oder eine Quelle von Malware sind, werden Sie ausgeschlossen, und Sie müssen sich erst eine neue Identität verschaffen, mit der Sie einen neuen Google Wallet- und einen Google Play-Account erstellen können. Anwendungen auf Google Play hochladen Die Google Play Developer Console unter https://play.google.com/apps/publish ist der Ort, an dem Sie Ihre hochgeladenen Anwendungen verwalten und neue Anwendungen hochladen können. Da die Funktionsweise der Developer Console schon öfter verändert wurde und und dies vermutlich auch in Zukunft geschehen wird, geben wir hier nur einen groben Überblick. Die Einzelheiten werden Sie ohne Probleme selbst erkunden können, zumal die Site vollständig deutsch lokalisiert ist. Auf der Startseite der Developer Console sehen Sie die Liste Ihrer angemeldeten Anwendungen, die am Anfang natürlich noch leer ist. Sie finden dort aber einen Link zum Hinzufügen einer neuen App, der Sie durch verschiedene Dialoge führt, in denen Sie Ihre Anwendung beschreiben und die.apk-datei Ihrer Anwendung sowie zugehörige Logos, Symbole, Abbildungen und Videos hochladen können. Um das Ganze auszuprobieren, können Sie zum Test die.apk-datei nutzen, die Sie im Eine App auf Google Play bringen 157

Abschnitt»Eine Anwendung mit einem selbst signierten Zertifikat signieren«auf Seite 151 erstellt haben. Machen Sie sich keine Gedanken darüber, dass es nicht Ihre Anwendung und nur ein Beispiel ist. Sie können die Anwendung veröffentlichen und die Veröffentlichung unmittelbar wieder rückgängig machen, wie Sie in den Anweisungen im Rest dieses Abschnitts sehen werden. Am Anfang hat Ihre Anwendung den Status Entwurf. Um das zu ändern, müssen Sie auf den Link Veröffentlichen klicken. Wenn das nicht möglich ist, liegt das wahrscheinlich daran, dass Sie noch nicht alle benötigten Informationen eingegeben haben. Sie bekommen dann aber einen Link auf eine Seite, die Ihnen auflistet, was alles konkret noch fehlt. Als dieses Buch geschrieben wurde, wurden neben verschiedenen Texten zwei Screenshots und ein Icon-Bild verlangt. Sie können dafür Bilder im doc-ordner des Beispielprojekts verwenden. Wenn alles fertig ist, klicken Sie auf Veröffentlichen. Herzlichen Glückwunsch, Sie haben eine Android-App veröffentlicht. Wenn Sie auf die Startseite der Developer Console gehen, sehen Sie nun Ihre erste veröffentlichte Anwendung (wenn Sie nicht schon zuvor eine Anwendung veröffentlicht hatten). Wenn Sie zu https://play.google.com/store gehen und z.b. nach Ihrem Namen suchen, sollte die Suchfunktion die Anwendung finden, die Sie gerade veröffentlicht haben, und sie so zeigen, wie sie ein möglicher Kunde auf Google Play sähe. Aus dem Suchergebnis können Sie sich zur Seite der Anwendung auf Google Play durchklicken. Jetzt können Sie zur Developer Console zurückkehren und dort in der Liste auf den Namen Ihrer neuen Anwendung tippen. Das führt Sie zu dem Verwaltungsbereich der Anwendung, den Sie schon von der Erfassung her kennen, wo Sie die Anwendungsinformationen ändern und aktualisieren können. Hier machen Sie die Veröffentlichung der App rückgängig, indem Sie auf Unpublish klicken. Gerade noch geschafft! Wahrscheinlich hatten Sie schon befürchtet, bald die ersten Support-Anfragen von Benutzern zu erhalten! Eine Anwendung, deren Veröffentlichung aufgehoben wurde, wird nicht aus dem Market-System entfernt. Sie wird immer noch unter Ihren Anwendungen aufgeführt, steht aber nicht mehr zum Download bereit. Sie können die Entscheidung, die Veröffentlichung aufzuheben, jederzeit rückgängig machen, indem Sie wieder auf Veröffentlichen klicken. Zahlungen erhalten Google Wallet (ehemals Google Checkout) ist das Zahlungssystem für Google Play aus der Sicht des Händlers. Google Play bietet Ihnen daher auch einen direkten Weg zur Registrierung bei Google Wallet als Händler für Google Wallet-Transaktionen. Bevor Sie auf der Seite Preisgestaltung & Vertrieb Ihre Anwendung als»kostenpflichtig«kennzeichnen, müssen Sie zunächst ein Händlerkonto einrichten; zu diesem Zweck finden Sie dort auch einen Link zu einer Seite, auf der Sie ein Google 158 Kapitel 4: Ihre Anwendung in die Hände des Benutzers bringen