Android 9 (API-Ebene 28) bietet neue Funktionen und APIs, die Sie in Ihren Apps nutzen können, sowie neue Verhaltensänderungen. In diesem Dokument erhalten Sie einen Überblick über die Migrationsschritte. deine Apps in zwei wichtigen Phasen auf Android 9 zu übertragen:
- Grundlegende Kompatibilität mit Android 9 sicherstellen
Prüfen Sie, ob Ihre vorhandene App auf der neuen Version der Plattform voll funktionsfähig ist. In dieser Phase verwenden Sie keine neuen APIs und ändern auch nicht die
targetSdkVersion
Ihrer App. Gegebenenfalls sind jedoch kleinere Änderungen erforderlich. - Auf die neue Plattform ausrichten, mit dem Android 9 SDK kompilieren und mit Android 9-Funktionen erstellen
Wenn Sie die neuen Funktionen der Plattform nutzen möchten, aktualisieren Sie Ihre
targetSdkVersion
auf28
, prüfen Sie, ob die App weiterhin wie erwartet funktioniert, und verwenden Sie dann die neuen APIs.
Gerät mit Android 9 vorbereiten
Wenn Sie ein kompatibles Gerät haben, besorgen Sie sich das Android 9-Systemabbild des Herstellers für Ihr Gerät klicken Sie hier für Factory-Images für Pixel Eine allgemeine Anleitung zum Flashen eines System-Images finden Sie hier.
Sie können auch das Android 9-Systemabbild für den Android-Emulator herunterladen. Es ist in der SDK-Manager unter Android API 28 als Google APIs Intel x86 Atom-System-Image.
Hinweis: Das Emulator-System-Image für Android 9 kann in Android Studio 3.1 und höher Android Studio 3.2 bietet maximale Kompatibilität. Weitere Informationen finden Sie unter Android 9 SDK herunterladen.
Kompatibilität mit Android 9 gewährleisten
Ziel ist es, dafür zu sorgen, dass Ihre vorhandene App unter Android 9 unverändert funktioniert. Da sich einige Plattformänderungen auf das Verhalten Ihrer App auswirken können, sind möglicherweise einige Anpassungen erforderlich. Sie müssen jedoch keine neuen APIs verwenden oder Ihre targetSdkVersion
ändern.
Kompatibilitätstests durchführen
Größtenteils wird die Kompatibilität mit Android 9 getestet beinhaltet dieselben Tests, die Sie bei der Vorbereitung auf die Veröffentlichung Ihrer App durchführen. Jetzt ist ein guter Zeitpunkt, um sich die Qualitätsrichtlinien für Apps und die Best Practices für Tests durchzulesen.
Es gibt jedoch noch einen weiteren Aspekt bei Tests: Android 9 führt Änderungen an der Android-Plattform ein, die sich auf das Verhalten Ihrer App auswirken oder die App sogar zum Absturz bringen können, auch wenn Sie Ihre targetSdkVersion
nicht ändern. Aus diesem Grund ist es wichtig, dass Sie die wichtigsten Änderungen in Tabelle 1 prüfen und alle Korrekturen testen, die Sie zur Anpassung an die Änderungen implementieren.
Tabelle 1 Wichtige Änderungen, die sich auf alle Apps auswirken, die auf Android 9-Geräten ausgeführt werden.
Ändern | Zusammenfassung |
---|---|
Einschränkungen für Nicht-SDK-Schnittstellen |
Der Zugriff auf bestimmte Nicht-SDK-Schnittstellen ist jetzt blockiert, unabhängig davon, ob der Zugriff direkt, über JNI oder über Reflection erfolgt. Versuche, auf eingeschränkte Schnittstellen zuzugreifen, führen zu Fehlern wie NoSuchFieldException und NoSuchMethodException .
Weitere Informationen finden Sie unter Einschränkungen für Nicht-SDK-Schnittstellen.
|
Entfernung des Kryptoanbieters |
Ab Android 9 wurde der Crypto-JCA-Anbieter entfernt. Anrufe
nach SecureRandom.getInstance("SHA1PRNG", "Crypto")
wirft NoSuchProviderException .
|
Strengerer UTF-8-Decoder | In Android 9 ist der UTF-8-Decodierer für die Java-Sprache strenger und folgt dem Unicode-Standard. |
Zugriff auf Kamera, Mikrofon und Sensoren für inaktive Apps blockiert | Wenn Apps inaktiv sind, können sie nicht mehr auf die Kamera, das Mikrofon oder die SensorManager-Sensoren zugreifen. |
Eine ausführlichere Liste der Verhaltensänderungen für alle Apps, die auf Android 9 ausgeführt werden, finden Sie im Dokument Verhaltensänderungen.
Zielversion aktualisieren und Android P-Funktionen verwenden
In diesem Abschnitt wird erläutert, wie Sie die volle Unterstützung für Android 9 aktivieren, indem Sie Ihre targetSdkVersion
auf 28 aktualisieren und neue Funktionen hinzufügen, die unter Android 9 verfügbar sind.
Neben den neuen APIs bietet Android 9 auch einige Funktionen,
ändert sich, wenn du targetSdkVersion
auf 28 aktualisierst. Da sich einige Verhaltensänderungen
Codeänderungen erfordern, um Fehler zu vermeiden, sollten Sie sich zunächst
betroffen, wenn du die targetSdkVersion
änderst, indem du alle Verhaltensänderungen für Apps, die auf Android 9 ausgerichtet sind überprüfen.
Hinweis: Die oben beschriebenen Schritte zur Plattformkompatibilität sind eine Voraussetzung für die Ausrichtung Ihrer App auf Android 9. Führen Sie diese Schritte daher zuerst aus.
Android 9 SDK abrufen
Du kannst die SDK-Pakete abrufen, um deine App mit Android 9 zu erstellen Sie benötigen Android Studio 3.1 oder höher. Wenn du die neuen Funktionen von Android 9 noch nicht benötigst und nur entsprechend kompilieren möchtest können Sie Android Studio 3.1 verwenden. Android Studio 3.2 bietet umfassende Unterstützung für Funktionen von Android 9
App für Android 9 testen
Wenn Sie die oben genannten Vorbereitungen getroffen haben, können Sie Ihre App erstellen und um sicherzustellen, dass sie ordnungsgemäß funktioniert, wenn sie auf Android 9 ausgerichtet ist. (API-Level 28). Es ist auch an der Zeit, sich die Qualitätsrichtlinien für Apps und die Best Practices für Tests noch einmal anzusehen.
Wenn Sie Ihre App mit der targetSdkVersion
auf „P“ ausführen, sollten Sie sich über bestimmte Plattformänderungen im Klaren sein. Einige dieser Änderungen können sich erheblich auf das Verhalten Ihrer App auswirken oder sie sogar vollständig zum Absturz bringen, auch wenn Sie keine neuen Funktionen in Android 9 implementieren.
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 die Berechtigung FOREGROUND_SERVICE anfordern . Da es sich um eine normale Berechtigung handelt, wird sie der anfragenden App automatisch vom System gewährt. Wenn ein Dienst im Vordergrund ohne die Berechtigung gestartet wird, wird eine SecurityException geworfen. |
Einstellung der Bouncy Castle-Chiffren |
In Android 9 werden mehrere Chiffren des Bouncy Castle-Anbieters zugunsten der vom Conscrypt-Anbieter bereitgestellten Chiffren eingestellt. Anrufe an getInstance() , die
Bouncy anfordern
Schlossanbieter generiert NoSuchAlgorithmException Fehler. Um die Fehler zu beheben, geben Sie in getInstance() keinen Anbieter an (fordern Sie also die Standardimplementierung an).
|
Direkter Zugriff auf Build.serial entfernt
|
Apps, die die Build.serial-Kennung benötigen, müssen jetzt das READ_PHONE_STATE anfordern.
und dann die neue in Android 9 hinzugefügte Methode Build.getSerial() verwenden.
|
Unzulässige Freigabe des WebView-Datenverzeichnisses | Es ist nicht mehr möglich, ein einziges WebView-Datenverzeichnis für mehrere Prozesse freizugeben. Wenn Ihre App mit WebView, CookieManager oder einer anderen API in der -Paket enthält, 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 App über den Pfad ist ist jetzt nicht mehr zulässig. Apps können Daten weiterhin über IPC-Mechanismen freigeben, z. B. indem sie FDs. |
Eine ausführlichere Liste der Verhaltensänderungen für Apps, die auf Android 9 ausgerichtet sind, finden Sie im Dokument Verhaltensänderungen.
Informationen zu den neuen Funktionen und APIs von Android 9 finden Sie unter Funktionen und APIs unter Android 9.