Apps zu Android 9 migrieren

Android 9 (API-Level 28) bietet neue Funktionen und APIs, die du in deinen Apps nutzen kannst, sowie neue Verhaltensänderungen. In diesem Dokument erhältst du einen Überblick über die Schritte zur Migration deiner Apps zu Android 9 in zwei wichtigen Phasen:

  1. Grundlegende Kompatibilität mit Android 9 gewährleisten

    Prüfen Sie, ob Ihre vorhandene App auf der neuen Version der Plattform voll funktionsfähig ist. Zu diesem Zeitpunkt verwenden Sie keine neuen APIs und ändern die targetSdkVersion Ihrer Anwendung nicht. Möglicherweise sind jedoch geringfügige Änderungen erforderlich.

  2. Auf die neue Plattform ausrichten, mit dem Android 9 SDK kompilieren und mit Android 9-Funktionen entwickeln

    Wenn Sie die neuen Funktionen der Plattform nutzen möchten, aktualisieren Sie targetSdkVersion auf 28. Prüfen Sie dann, ob die Anwendung weiterhin wie erwartet funktioniert, und verwenden Sie dann neue APIs.

Gerät mit Android 9 vorbereiten

Wenn du ein kompatibles Gerät hast, beantrage das Android 9-System-Image für dein Gerät vom Hersteller. Hier findest du Factory Images für Pixel-Geräte. Allgemeine Anweisungen zum Flashen eines System-Images

Sie können das System-Image von Android 9 auch für den Android-Emulator herunterladen. Sie wird im SDK-Manager unter Android API 28 als Google APIs Intel x86 Atom System Image aufgeführt.

Hinweis:Das Systemimage des Android 9-Emulators kann in Android Studio 3.1 und höher heruntergeladen werden. Android Studio 3.2 bietet maximale Kompatibilität. Weitere Informationen finden Sie unter Android 9 SDK herunterladen.

Kompatibilität mit Android 9 sicherstellen

Ziel ist es, sicherzustellen, dass Ihre vorhandene App unter Android 9 unverändert funktioniert. Da sich einige Plattformänderungen auf das Verhalten Ihrer Anwendung auswirken können, sind möglicherweise einige Anpassungen erforderlich. Sie müssen jedoch keine neuen APIs verwenden oder targetSdkVersion ändern.

Schritt für Schritt für Kompatibilität mit Android 9 sorgen

Kompatibilitätstests durchführen

Größtenteils umfasst das Testen der Kompatibilität mit Android 9 dieselbe Art von Tests, die du auch bei der Vorbereitung der Veröffentlichung deiner App durchführst. Wir empfehlen dir, die Qualitätsrichtlinien für Apps und die Best Practices für Tests zu lesen.

Es gibt jedoch noch einen weiteren Aspekt beim Testen: Mit Android 9 werden Änderungen an der Android-Plattform eingeführt, die sich auf das Verhalten deiner App auswirken oder die App vollständig beschädigen können, auch wenn du targetSdkVersion nicht änderst. Aus diesem Grund ist es wichtig, dass Sie die wichtigsten Änderungen in Tabelle 1 überprüfen und alle Korrekturen testen, die Sie implementiert haben, um die Änderungen umzusetzen.

Tabelle 1 Wichtige Änderungen, die alle Apps auf Android 9-Geräten betreffen.

Ändern Zusammenfassung
Einschränkungen für Nicht-SDK-Schnittstellen Der Zugriff auf bestimmte Nicht-SDK-Schnittstellen wird jetzt blockiert, unabhängig davon, ob der Zugriff direkt, über JNI oder über Reflexion erfolgt. Versuche, auf eingeschränkte Schnittstellen zuzugreifen, verursachen Fehler wie NoSuchFieldException und NoSuchMethodException. Weitere Informationen finden Sie unter Einschränkungen für Nicht-SDK-Schnittstellen.
Krypto-Anbieter wird entfernt Ab Android 9 wurde der Krypto-JCA-Anbieter entfernt. Aufrufe von SecureRandom.getInstance("SHA1PRNG", "Crypto") geben NoSuchProviderException aus.
Strengerer UTF-8-Decoder In Android 9 ist der UTF-8-Decoder für Java strenger und entspricht dem Unicode-Standard.
Zugriff auf Kamera, Mikrofon und Sensoren für inaktive Apps gesperrt Solange Apps inaktiv sind, können sie nicht mehr auf Kamera, Mikrofon oder SensorManager-Sensoren zugreifen.

Eine umfassendere Liste der Verhaltensänderungen für alle Apps unter Android 9 findest du im Dokument Verhaltensänderungen.

Zielversion aktualisieren und Android P-Funktionen nutzen

In diesem Abschnitt wird erläutert, wie du die vollständige Unterstützung für Android 9 aktivieren kannst, indem du targetSdkVersion auf 28 aktualisierst und neue Funktionen hinzufügst, die in Android 9 verfügbar sind.

Mit Android 9 werden nicht nur neue APIs, sondern auch einige Verhaltensänderungen eingeführt, wenn du targetSdkVersion auf 28 aktualisierst. Da bei einigen Verhaltensänderungen eventuell Codeänderungen erforderlich sind, um Fehler zu vermeiden, sollten Sie sich zuerst über die Auswirkungen einer Änderung von targetSdkVersion auf Ihre App informieren. Sehen Sie sich dazu alle Änderungen des Verhaltens für Apps, die auf Android 9 ausgerichtet sind an.

Hinweis:Die oben beschriebenen Schritte zum Sicherstellen der Plattformkompatibilität sind Voraussetzung für die Ausrichtung deiner App auf Android 9. Führe sie daher zuerst aus.

Zielversion aktualisieren und Android 9-Funktionen Schritt für Schritt verwenden

Android 9 SDK herunterladen

Du kannst die SDK-Pakete zum Erstellen deiner App mit Android 9 mit Android Studio 3.1 oder höher herunterladen. Falls du die neuen Funktionen in Android 9 noch nicht benötigst und nur für diese Version der Plattform kompilieren möchtest, kannst du Android Studio 3.1 verwenden. Android Studio 3.2 bietet umfassende Unterstützung für die Funktionen von Android 9.

Android 9-App testen

Wenn die oben genannten Vorbereitungen abgeschlossen sind, kannst du deine App erstellen und dann weiter testen, um sicherzustellen, dass sie bei der Ausrichtung auf Android 9 (API-Level 28) richtig funktioniert. Dies ist ein weiterer guter Zeitpunkt, um die Qualitätsrichtlinien für Apps und die Best Practices für Tests zu lesen.

Wenn Sie targetSdkVersion beim Erstellen Ihrer App auf P setzen, gibt es bestimmte Plattformänderungen, die Sie beachten sollten. Einige dieser Änderungen können das Verhalten deiner App erheblich beeinflussen oder sogar deine App vollständig beeinträchtigen, auch wenn du unter Android 9 keine neuen Funktionen implementiert hast.

Tabelle 2 enthält eine Liste dieser Änderungen mit Links zu weiteren Informationen.

Tabelle 2 Wichtige Änderungen, die sich auf Apps auswirken, wenn targetSdkVersion auf 28 gesetzt ist.

Ändern Zusammenfassung
Berechtigung für Dienste im Vordergrund Apps, die Dienste im Vordergrund verwenden möchten, müssen jetzt zuerst die Berechtigung FOREGROUND_SERVICE anfordern. Dies ist eine normale Berechtigung, die vom System automatisch der anfragenden App erteilt wird. Wenn Sie einen Dienst im Vordergrund ohne die Berechtigung starten, wird eine SecurityException ausgelöst.
Einstellung der Bouncy Castle-Chiffren Unter Android 9 werden mehrere Chiffren des Bouncy Castle-Anbieters zugunsten der vom Conscrypt-Anbieter bereitgestellten Verschlüsselungen eingestellt. Aufrufe an getInstance(), die den Bouncy Castle-Anbieter anfordern, generieren NoSuchAlgorithmException-Fehler. Zum Beheben der Fehler geben Sie in getInstance() keinen Anbieter an (d. h. fordern Sie die Standardimplementierung an).
Direkter Zugriff auf Build.serial wurde entfernt Apps, die die Build.serial-ID benötigen, müssen jetzt die Berechtigung READ_PHONE_STATE anfordern und dann die neue Build.getSerial()-Methode verwenden, die in Android 9 hinzugefügt wurde.
Unzulässige Freigabe des WebView-Datenverzeichnisses Es ist nicht mehr möglich, ein einzelnes WebView-Datenverzeichnis für Apps prozessübergreifend freizugeben. Wenn in Ihrer App mehr als ein Prozess mit WebView, CookieManager oder einer anderen API im Paket „android.webkit“ verwendet wird, stürzt die App ab, wenn der zweite Prozess eine WebView-Methode aufruft.
Zugriff auf das Datenverzeichnis der App durch SELinux blockiert Das System erzwingt App-spezifische SELinux-Sandboxes mit App-spezifischen SELinux-Einschränkungen für das private Datenverzeichnis jeder App. Der direkte Zugriff auf das Datenverzeichnis einer anderen Anwendung über den Pfad ist jetzt nicht mehr zulässig. Anwendungen können Daten weiterhin über IPC-Mechanismen, einschließlich der Übergabe von FDs, freigeben.

Eine umfassendere Liste der Verhaltensänderungen für Apps, die auf Android 9 ausgerichtet sind, findest du im Dokument zu Verhaltensänderungen.

Informationen zu den neuen Funktionen und APIs in Android 9 findest du unter Funktionen und APIs von Android 9.