Mit Android 8.0 (API-Ebene 26) werden Verhaltensänderungen sowie neue Funktionen und APIs eingeführt, die Sie in Ihren Apps nutzen können. In diesem Dokument erhalten Sie einen Überblick über die Schritte zur Migration Ihrer Apps zu Android 8.0 in zwei wichtigen Phasen:
- Kompatibilität mit Android 8.0 sicherstellen
Prüfen Sie, ob Ihre App auf der neuen Version der Plattform voll funktionsfähig ist. Zu diesem Zeitpunkt verwenden Sie keine neuen APIs und ändern den
targetSdkVersion
Ihrer Anwendung nicht. Unter Umständen sind jedoch kleinere Änderungen erforderlich. - Zielversion aktualisieren und Android 8.0-Funktionen verwenden
Wenn Sie die neuen Funktionen der Plattform nutzen möchten, aktualisieren Sie Ihre
targetSdkVersion
auf Version 26, prüfen Sie, ob die App weiterhin wie erwartet funktioniert, und verwenden Sie dann die neuen APIs.
Kompatibilität mit Android 8.0 sicherstellen
Ziel ist es, dafür zu sorgen, dass Ihre vorhandene App unter Android 8.0 (API-Level 26) 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.
Gerät mit Android 8.0 vorbereiten
- Wenn Sie ein kompatibles Gerät haben (Pixel, Pixel XL, Pixel C, Nexus 5X, Nexus 6P oder Nexus Player), folgen Sie der Anleitung zum Flashen Ihres Geräts.
- Oder laden Sie das Android 8.0-Systemabbild für den Android-Emulator herunter. Sie ist im SDK-Manager unter Android 8.0 als Google APIs Intel x86 Atom-System-Image aufgeführt.
Hinweis:Das Android 8.0-System-Image kann ab Android Studio 3.0 heruntergeladen werden. Weitere Informationen finden Sie im Abschnitt unten zum Herunterladen des Android 8.0 SDK.
Kompatibilitätstests durchführen
Die Kompatibilität mit Android 8.0 (API-Level 26) lässt sich größtenteils mit denselben Tests prüfen, die Sie bei der Vorbereitung auf die Veröffentlichung Ihrer App durchführen. Sehen Sie sich die Qualitätsrichtlinien für Apps und die Best Practices für Tests noch einmal an.
Es gibt jedoch noch einen weiteren Aspekt bei Tests: Android 8.0 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.
Ändern | Zusammenfassung | Weitere Referenz |
---|---|---|
Seltenere Standortaktualisierungen im Hintergrund | Wenn Ihre App Standortaktualisierungen von einem Hintergrunddienst erhält, werden diese unter Android 8.0 (API-Level 26) seltener als unter älteren Android-Versionen empfangen. Insbesondere darf ein Dienst im Hintergrund nicht mehr als ein paar Mal pro Stunde Standortaktualisierungen erhalten. Wenn sich Ihre App jedoch im Vordergrund befindet, bleibt die Häufigkeit der Standortaktualisierungen unverändert. | Einschränkungen bei der Standortermittlung im Hintergrund |
net.hostname werden nicht mehr unterstützt
|
Die Abfrage der Systemeigenschaft net.hostname ergibt ein Nullergebnis.
|
Keine |
Neue Ausnahme von send(DatagramPacket) |
Die Methode send(DatagramPacket) wirft eine SocketException , wenn die zuvor ausgeführte connect(InetAddress, int) -Methode fehlgeschlagen ist.
|
Verhaltensänderungen: Netzwerk- und HTTP(S)-Verbindung |
Richtige NullPointerException von AbstractCollection -Methoden
|
AbstractCollection.removeAll(null) und AbstractCollection.retainAll(null) werfen jetzt immer eine NullPointerException ; zuvor wurde die NullPointerException nicht geworfen, wenn die Sammlung leer war.
Durch diese Änderung entspricht das Verhalten der Dokumentation.
|
Verhaltensänderungen: Umgang mit Sammlungen |
Korrekter Wert für NullPointerException von Currency.getDisplayName(null)
|
Beim Aufruf von Currency.getDisplayName(null) wird eine NullPointerException geworfen.
|
Verhaltensänderungen: Sprachen und Internationalisierung |
Eine ausführlichere Liste der Verhaltensänderungen in Android 8.0 (API-Level 26) finden Sie unter Verhaltensänderungen unter Android 8.0.
Zielversion aktualisieren und Funktionen von Android 8.0 nutzen
In diesem Abschnitt wird erläutert, wie du die vollständige Unterstützung für Android 8.0 (API-Level 26) aktivierst, indem du targetSdkVersion
auf 26 aktualisierst und neue Funktionen hinzufügst, die in Android 8.0 verfügbar sind.
Neben neuen APIs bietet Android 8.0 einige Verhaltensänderungen, wenn Sie Ihre targetSdkVersion
auf 26 aktualisieren. Da einige Verhaltensänderungen Codeänderungen erfordern können, um Fehler zu vermeiden, sollten Sie zuerst herausfinden, wie sich die Änderung der targetSdkVersion
auf Ihre App auswirken könnte. Lesen Sie dazu alle Verhaltensänderungen für Apps mit Ausrichtung auf Android 8.0.
Hinweis:Die oben beschriebenen Schritte zur Plattformkompatibilität sind eine Voraussetzung, um Ihre App auf Android 8.0 auszurichten. Führen Sie diese Schritte daher zuerst aus.
Android 8.0 SDK herunterladen
Sie können die SDK-Pakete abrufen, um Ihre App mit Android 8.0 (API-Level 26) zu erstellen. Verwenden Sie dazu die neueste Version von Android Studio, empfohlen wird Android Studio 3.0 oder höher. Android Studio 3.0 und höher enthält Tools, die Ihnen bei der Arbeit mit Android 8.0-Funktionen wie adaptiven Symbolen und herunterladbaren Schriftarten helfen. Wenn Sie diese Funktionen noch nicht benötigen, können Sie die stabile Version von Android Studio 2.3.3 verwenden, um Ihre App mit Android 8.0 zu erstellen und die neuen APIs zu verwenden.
So richten Sie eine der beiden Versionen von Android Studio ein:
- Starten Sie Android Studio und öffnen Sie den SDK-Manager, indem Sie auf Tools > SDK-Manager klicken.
- Klicken Sie auf dem Tab SDK-Plattformen auf das Kästchen neben Paketdetails anzeigen. Prüfen Sie unter Vorschau für Android 8.0 Folgendes:
- Android SDK-Plattform 26
- Google APIs Intel x86 Atom-System-Image (nur für den Emulator erforderlich)
- Rufe den Tab SDK Tools auf und setze ein Häkchen bei allen Elementen, für die Updates verfügbar sind. Klicke dazu auf jedes Kästchen mit einem Bindestrich . Dazu sollten die neuesten Versionen der folgenden erforderlichen Elemente gehören:
- Android SDK Build-Tools 26.0.0
- Android SDK Platform-Tools 26.0.0
- Android Emulator 26.0.0
- Klicken Sie auf OK, um alle ausgewählten SDK-Pakete zu installieren.
Jetzt können Sie mit Android 8.0 loslegen.
Buildkonfiguration aktualisieren
Aktualisieren Sie compileSdkVersion
, targetSdkVersion
und die Version der Supportbibliothek auf die neuesten verfügbaren Versionen, z. B.:
android { compileSdkVersion 26 defaultConfig { targetSdkVersion 26 } ... } dependencies { compile 'com.android.support:appcompat-v7:26.0.0' } // REQUIRED: Google's new Maven repo is required for the latest // support library that is compatible with Android 8.0 repositories { google() // If you're using a version of Gradle lower than 4.1, you must instead use: // maven { // url 'https://maven.google.com' // } }
Broadcastempfänger aus der Manifestdatei entfernen
Da mit Android 8.0 (API-Level 26) neue Einschränkungen für Übertragungsempfänger eingeführt werden, sollten Sie alle Übertragungsempfänger entfernen, die für implizite Broadcast-Intents registriert sind. Wenn Sie sie beibehalten, funktioniert Ihre App in der Build- oder Laufzeit weiterhin. Sie haben jedoch keine Auswirkungen, wenn Ihre App unter Android 8.0 ausgeführt wird.
Broadcasts, auf die nur deine App reagieren kann – explizite Broadcast-Intents und Broadcasts, die speziell an den Paketnamen deiner App gesendet werden – funktionieren unter Android 8.0 weiterhin wie gewohnt.
Es gibt jedoch Ausnahmen von dieser neuen Einschränkung. Eine Liste der impliziten Broadcasts, die in Apps mit Ausrichtung auf Android 8.0 weiterhin funktionieren, finden Sie unter Ausnahmen für implizite Broadcasts.
App für Android 8.0 testen
Nachdem Sie die oben genannten Vorbereitungen abgeschlossen haben, können Sie Ihre App erstellen und dann weiter testen, um sicherzustellen, dass sie bei der Ausrichtung auf Android 8.0 (API-Ebene 26) ordnungsgemäß funktioniert. 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 26 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 8.0 implementieren.
Tabelle 2 enthält eine Liste dieser Änderungen mit Links zu weiteren Informationen.
Ändern | Zusammenfassung | Weitere Referenz |
---|---|---|
Datenschutz | Android 8.0 (API-Level 26) unterstützt die Verwendung der Systemeigenschaften „net.dns1“, „net.dns2“, „net.dns3“ oder „net.dns4“ nicht. | Änderungen am Verhalten: Datenschutz |
Schreib- und ausführbare Segmente erzwungen | Bei nativen Bibliotheken gilt in Android 8.0 (API-Ebene 26) die Regel, dass Daten nicht ausführbar und Code nicht beschreibbar sein dürfen. | Änderungen am Verhalten: Native Bibliotheken |
ELF-Header- und Abschnittsüberprüfung | Die dynamische Verknüpfung prüft weitere Werte im ELF-Header und in den Abschnittsüberschriften und schlägt fehl, wenn sie ungültig sind. | Änderungen am Verhalten: Native Bibliotheken |
Benachrichtigungen | Apps, die auf die Android 8.0-Version (API-Ebene 26) des SDK ausgerichtet sind, müssen einen oder mehrere Benachrichtigungskanäle implementieren, um Benachrichtigungen an Nutzer zu senden. | API-Übersicht: Benachrichtigungen |
Die Methode List.sort()
|
Implementierungen dieser Methode dürfen Collections.sort() nicht mehr aufrufen oder deine App löst aufgrund eines Stacküberlaufs eine Ausnahme aus.
|
Verhaltensänderungen: Handhabung von Sammlungen |
Die Methode Collections.sort()
|
In List-Implementierungen löst Collections.sort() jetzt den Fehler ConcurrentModificationException aus.
|
Änderungen am Verhalten: Umgang mit Sammlungen |
Eine ausführlichere Liste der Verhaltensänderungen in Android 8.0 (API-Level 26) finden Sie unter Verhaltensänderungen unter Android 8.0.
Informationen zu den neuen Funktionen und APIs, die mit Android 8.0 (API-Level 26) verfügbar sind, finden Sie unter Funktionen und APIs unter Android 8.0.