Lange angekündigt erobert Android 10 nun mittlerweile immer mehr Smartphones und bringt dabei viele interessante Neuerungen. Gerade jetzt, wenn in den nächsten Monaten vor allem Samsung und Co. ihre nächsten Modelle auf den Markt bringen, ist es für App-Entwickler höchste Eisenbahn, ihre Apps auf Android 10-Geräten zu testen, denn das Ausführen von Apps unter Android 10 kann ggf. unerwünschte Seiteneffekte mit sich bringen.
Was bei Android 10 neu ist und worauf Ihr ein besonderes Augenmerk legen solltet, haben wir hier kurz zusammengefasst.
Android 10: Änderungen, die alle Apps betreffen
- Private Interfaces können in Zukunft ggf. die App zum Absturz bringen, weil diese jetzt in Blacklists, Greylists, und Whitelists vermerkt werden
- Durch die mit Android 10 eingeführte Gesten-Navigation könnte es passieren, dass es bei bestehenden Apps zu überschneidenden Funktionen bzw. Gesten kommt
- Um bessere Ladezeiten und Sicherheit zu gewährleisten, erzwingt Android 10 die Einschränkung, dass geteilte Objekte „text relocations“ enthalten können (im Kontext von NDK)
- Es gibt Änderungen bzgl. Bionic Bibliotheken und Pfade für dynamische Linker ändern sich
- Beginnend mit Android 10 werden ausführbare Segmente von System Binaries und Bibliotheken strikt ausführbar (nicht lesbar) in den Speicher gemappt
- Es gibt einige Security-Änderungen:
- TLS 1.3 ist per default aktiviert
- Zertifikaten, die den SHA-1 Hash verwenden, wird in TLS-Verbindungen nicht mehr vertraut
- Änderungen im KeyChain-Verhalten und Verbesserungen
- Weitere kleinere TLS- und Kryptographie-Änderungen
- Einige Wi-Fi Direct Broadcasts sind unter Android 10 nicht mehr sticky (müssen mit der passenden get() Methode genutzt werden)
- Android 10 vereinfacht das Erstellen von TCP/UDP Sockets bei der Verwendung von Wi-Fi-bewusster („Wi-Fi Aware“) Kommunikation
- Apps, welche unter Android 10 (Go edition / auf Go Geräten) laufen, können keine SYSTEM_ALERT_WINDOW Berechtigung mehr erhalten
- Geräte mit Android 10 oder höher warnen Benutzer das erste Mal, wenn diese eine App ausführen, welche auf Android 5.1 (API level 22) oder niedriger abzielt
- Es wurden einige „SHA-2 CBC cipher suites“ entfernt
- Android 10 führt folgende Änderungen im Kontext der generellen App-Nutzung ein:
- Verbesserung des UsageStats Zeit-Trackers, wenn Apps im Split-Screen, Picture-in-picture Modus oder als Instant App genutzt werden
- Es unterstützt das Setzen von Graustufen-Display-Modi für einzelne Apps (nicht übergreifend)
- Apps können in einen „Ablenkungs-Zustand“ versetzt werden, in welchem die Notifikationen unterdrückt werden. Außerdem werden sie nicht mehr als vorgeschlagene Apps aufgeführt
- Apps, die suspended wurden, können kein Audio mehr abspielen
- HTTPS-Verbindungen: Das Übergeben von null in setSSLSocketFactory() wirft nun eine IllegalArgumentException aus
- Die android.preference Bibliothek wird deprecated
- Einige Änderungen in der java.util.zip Bibliothek, die für ZIP-Dateien verwendet wird
- Kamera: Mit der wachsenden Zahl an Form-Faktoren (z.B. Foldables) ist die Annahme, dass Geräte in der Portrait-Konfiguration auch physisch in einer Portrait-Orientierung sind, nicht mehr korrekt. Entwickler können dem jetzt manuell entgegensteuern
- Tracking der Batterie-Nutzung: der SystemHealthManager setzt die Nutzungsstatistiken nur noch zurück, wenn das Gerät zum Großteil vollgeladen wurde
- Das Android Beam Feature wird deprecated
- Änderung in der java.math Bibliothek bezüglich angehängter Nullen
- Änderungen in der java.util.regex.Matcher Bibliothek
- Standardmäßige Ausrichtung für GradientDrawable ist jetzt TOP_BOTTOM
- Apps, die auf API Level 23 und niedriger abzielen und auf einer veralteten serialVersionUID beruhen, bekommen zukünftig Warnungen geloggt
Quelle: developer.android.com
Android 10: Änderungen, die Apps mit targetSdkVersion 29+ betreffen
- Mit Android 10 gibt es nun eine aktualisierte Liste an eingeschränkten, nicht-SDK-zugehörigen Interfaces. Auch, wenn verwendete Interfaces noch in der Greylist vermerkt sind, könnten diese zukünftig die App gefährden
- Apps, die für Android 10 entwickelt werden, können nicht mehr direkt ashmem (/dev/asmem/) nutzen und müssen stattdessen die NDK ASharedMemory Klasse verwenden, um auf geteilten Speicher zugreifen zu können
- Android 10 Apps, denen nicht vertraut wird, können nicht mehr exec() auf Dateien im Home-Verzeichnis der App aufrufen. Zusätzlich können Android 10 Apps nicht mehr Dateien „in-memory“ modifizieren, welche mit dlopen() geöffnet wurden
- Die Android Runtime (ART) ruft nicht mehr dex2oat aus dem Prozess der Applikation auf. Das bedeutet, dass ART nur noch OAT Dateien akzeptiert, welche vom System generiert wurden
- Android 10 erfordert, dass die Klassenpfad-Umgebung (Classpath Environment) zur Kompilier- und Laufzeit gleich ist. Bisher konnte das bei Ahead-of-Time(AOT) Kompilation zu Abstürzen führen
- Es gibt Änderungen zu Fullscreen-Intent-Berechtigungen
- Android 10 führt einige Änderungen ein, die Foldable-Geräte und Geräte mit großen Bildschirmen zugutekommen
- Mit der Einführung von Android 10 ist der FileChannel.map() Aufruf aus der java.io Bibliothek nicht mehr für nicht-standard Dateien wie /dev/zero/ möglich
Quelle: developer.android.com
Wir wünschen viel Spaß beim Testing!