Versionshinweise zu Android 10

Auf dieser Seite werden die wichtigsten Funktionen des Android 10-Release zusammengefasst und Links zu weiteren Informationen bereitgestellt. Diese Funktionszusammenfassungen sind nach dem Dokumentationsort der Funktion auf dieser Website organisiert.

Entwickeln

java_sdk_library

Mit Android 10 wird java_sdk_library eingeführt, eine neue Build-Regel zur Behebung von Kompatibilitätsproblemen für gemeinsam genutzte Java-Bibliotheken. Gerätehersteller können diesen Mechanismus für ihre eigenen gemeinsam genutzten Java-Bibliotheken verwenden, um die Abwärtskompatibilität ihrer APIs aufrechtzuerhalten.

Architektur

Modulare Systemkomponenten

In Android 10 werden einige Android-Systemkomponenten modularisiert, sodass sie außerhalb des normalen Android-Releasezyklus aktualisiert werden können. Einige Module:

Hardwareabstraktionsschicht (HAL)

Unter Android 10 wird die Unterstützung für HALs hinzugefügt, die automatisch heruntergefahren werden, wenn sie keine Clients haben.

Kernel

ABI

Android 10 unterstützt neue ABI-Überprüfungstools, mit denen sich Kernel-ABI-Änderungen, die sich auf die Kompatibilität mit Kernelmodulen auswirken, vergleichen, nachverfolgen und minimieren lassen.

In Android 10 wird auch eine symbolbasierte ABI-Nutzungsprüfung eingeführt. Der Checker kann veraltete vorkompilierte Binärdateien zur Build-Zeit erkennen, sodass Entwickler von freigegebenen Bibliotheken wissen, welche vorkompilierten Binärdateien durch ihre Änderung möglicherweise beschädigt werden und welche neu erstellt werden müssen.

Android Live-Lock-Daemon

Android 10 enthält den Android Live-Lock Daemon (llkd), der Kernel-Deadlocks erkennen und beheben soll.

vDSO32 auf ARM64

Android 10 unterstützt die Verwendung von vDSO32 auf 64‑Bit-Kerneln, was zu einer um 0,4 % längeren Akkulaufzeit und anderen Leistungsverbesserungen führt.

fstab-Einträge für frühzeitig eingebundene Partitionen

Unter Android 10 müssen Geräte fstab-Einträge für frühzeitig eingebundene Partitionen mithilfe einer fstab-Datei im Ramdisk der ersten Phase angeben.

HIDL

BroadcastQueue auslagern

Android 10 enthält eine neue Offload-Warteschlange BroadcastQueue zusätzlich zu den vorhandenen Warteschlangen Hintergrund und Vordergrund. Die Offload-Warteschlange hat dieselbe Priorität und dasselbe Zeitlimitverhalten wie die Hintergrundwarteschlange. Um zu verhindern, dass die Hintergrundwarteschlange blockiert wird, in der interessantere oder für Nutzer sichtbare Broadcasts stattfinden können, wird der BOOT_COMPLETED-Broadcast in der Offload-Warteschlange verarbeitet. Viele Apps warten auf diesen Broadcast und die Verarbeitung kann lange dauern. In der Offload-Warteschlange wird derzeit nur die BOOT_COMPLETED-Übertragung verarbeitet, aber es können möglicherweise auch andere lange Übertragungen verarbeitet werden.

SystemSuspend-Dienst

In Android 10 wird der Thread in libsuspend, der für das Einleiten des System-Suspend zuständig ist, durch den SystemSuspend-HIDL-Dienst ersetzt. Diese Implementierung bietet die gleiche Funktionalität wie frühere Versionen und nutzt die Vorteile der Android-HIDL-Infrastruktur.

safe_union in HIDL

In Android 10 wird safe_union, ein explizit getaggter Union-Typ, in HIDL eingeführt.

Konfiguration

ConfigStore HAL

In Android 10 wird der ConfigStore-HAL aufgrund des hohen Arbeitsspeicherverbrauchs und der schwierigen Verwendung eingestellt und durch Systemeigenschaften ersetzt.

Config File Schema API

Die Android-Plattform enthält eine große Anzahl von XML-Dateien zum Speichern von Konfigurationsdaten. Viele der XML-Dateien befinden sich auf der Partition vendor, werden aber auf der Partition system gelesen. In diesem Fall dient das Schema der XML-Datei als Schnittstelle zwischen den beiden Partitionen. Daher muss das Schema explizit angegeben werden und sich abwärtskompatibel entwickeln. Vor Android 10 bot die Plattform keine Mechanismen, um die Angabe und Verwendung des XML-Schemas zu erzwingen oder inkompatible Änderungen am Schema zu verhindern. Android 10 bietet diesen Mechanismus, der als Config File Schema API bezeichnet wird.

Systemeigenschaften als APIs

Systemeigenschaften, auf die über Partitionen hinweg zugegriffen wird, werden in sysprop-Beschreibungsdateien schematisiert. APIs für den Zugriff auf Eigenschaften werden als konkrete Funktionen für C++ und als Klassen für Java generiert.

VINTF-Objekt (Vendor Interface)

VINTF

Änderungen an VINTF in Android 10:

  • Einstellung von AVB-Versions-Tags
  • Kernelinformationen in OTA-Pakete einfügen
  • Offizielles Erstellen von ODM-Manifesten
  • Produktkompatibilitätsmatrix hinzufügen
  • Manifesteintrag mit einem HAL-Modul im Build-System verknüpfen

Bootloader

Ramdisk

In Android 10 ist das Root-Dateisystem nicht mehr in ramdisk.img enthalten, sondern wird in system.img zusammengeführt.

ODM-Partitionen erstellen

Android 10 unterstützt das Erstellen von odm-Partitionen mit dem Android-Build-System. Sie können eine separate /odm-Partition für Anpassungen verwenden, sodass Sie ein einzelnes Anbieterimage für mehrere Hardware-SKUs verwenden können. So können Original Design Manufacturers (ODMs) die Board-Support-Pakete (BSPs) von System-on-Chip-Anbietern (SoC) an ihre spezifischen Geräte (ihre Boards) anpassen. Sie können Kernelmodule für boardspezifische Komponenten, boardspezifische Daemons oder eigene Funktionen auf Hardware-Abstraktionsschichten (Hardware Abstraction Layers, HALs) implementieren. Sie können auch SoC-Komponenten ersetzen oder anpassen.

Versionsverwaltung von Boot-Image-Headern

Unter Android 10 wird der Boot-Image-Header auf Version 2 aktualisiert. Diese Version enthält einen Abschnitt zum Speichern des Gerätebaum-Blob-Images (Device Tree Blob, DTB). Mit den VTS-Tests für Android 10 wird überprüft, ob auf allen Geräten, die mit Android 10 auf den Markt kommen, die Boot-Image-Header-Version 2 verwendet wird und ob ein gültiges DTB-Image als Teil der Boot-/Recovery-Images enthalten ist.

Wiederherstellungsimages für Geräte, die keine A/B‑Geräte sind

In Android 9 und höher muss das Wiederherstellungsimage eines Geräts Informationen aus dem Overlay-Image enthalten. Gerätehersteller können DeviceTree oder ACPI (Advanced Configuration and Power Interface) verwenden, um alle nicht erkennbaren Geräte zu beschreiben. Android 10 und höher unterstützt Architekturen, die ACPI anstelle von Gerätebaum-Blobs für Overlays (Device Tree Blob Overlay, DTBO) verwenden.

Stabile AIDL

Mit Android 10 wird die Unterstützung für die stabile Android Interface Definition Language (AIDL) eingeführt. Damit lässt sich die von AIDL-Schnittstellen bereitgestellte API (Application Programming Interface)/ABI (Application Binary Interface) auf neue Weise nachverfolgen.

Fastboot in den Nutzerbereich verschieben

Mit Android 10 wird die Unterstützung für Partitionen mit variabler Größe eingeführt, indem die Fastboot-Implementierung vom Bootloader in den Nutzerbereich verlagert wird.

Anzeige

HDR-Videowiedergabe

Android 10 unterstützt die Wiedergabe von HDR10, VP9 und HDR10+.

Textklassifizierung

Bei der Textklassifizierung werden Machine-Learning-Techniken verwendet, um Entwicklern bei der Klassifizierung von Text zu helfen. In Android 10 werden zwei Methoden für die TextClassifier API eingeführt: suggestConversationActions und detectLanguage. Die Methode suggestConversationActions generiert vorgeschlagene Antworten und Aktionen aus einer bestimmten Unterhaltung und die Methode detectLanguage erkennt die Sprache des Textes.

Unterstützung für das Rendern von Zawgyi-Schriftarten

Zawgyi ist die beliebteste Schriftart in Myanmar. Android 9 und niedriger unterstützten die Darstellung von Zawgyi nicht, da sie nicht Unicode-kompatibel ist. In Android 10 wird dieses Problem durch die Einbindung einer Unicode-Schriftart behoben, mit der sowohl Unicode-Burmesisch als auch Zawgyi gerendert werden können. Für die Unterstützung der Zawgyi-Schriftart auf Geräten, die mit Android 10 auf den Markt kommen, sind keine Implementierungsarbeiten erforderlich. Wenn auf Ihren Geräten eine benutzerdefinierte Implementierung zur Unterstützung von Zawgyi vorhanden ist, haben Sie folgende Möglichkeiten:

  • Machen Sie diese Änderungen rückgängig und verwenden Sie die von der Plattform unterstützte Methode.
  • Behalten Sie die gängige Zawgyi-Schriftart in Ihrem System bei und verwenden Sie den Gebietsschema-Code my-qaag in Ihrem fonts.xml. Weitere Informationen finden Sie in den Unicode-CLDR-Versionshinweisen zu Zawgyi (Qaag).

Einschränkungen beim Ausblenden von App-Symbolen

Unter Android 10 ist es für Apps nicht mehr möglich, ihre App-Symbole auszublenden. Wenn für eine App keine Launcher-Aktivität aktiviert ist, zeigt das System im Launcher eine synthetisierte Aktivität an. Diese synthetisierte Aktivität stellt die Detailseite der App in den Systemeinstellungen dar.

Weitere Informationen zur Logik, die zum Anzeigen von App-Symbolen verwendet wird, einschließlich der Arten von Apps, deren App-Symbole nicht angezeigt werden, finden Sie in der API-Referenz in der Dokumentation zu getActivityList().

Einstellungen

Um die Barrierefreiheit zu verbessern, bietet Android 10 nutzerdefinierte Zeitüberschreitungseinstellungen. Die API- und Einstellungsänderungen werden mit Android 10 eingeführt. Wenn Sie die Einstellungen anpassen, achten Sie darauf, dass diese Funktion unterstützt wird. Wenn auf Ihrem Gerät UI-Elemente ein Zeitlimit überschreiten, verwenden Sie dafür die Timeouts API. Weitere Informationen finden Sie in den Richtlinien zur Barrierefreiheit für Android-Entwickler.

Kompatibilität

Android Compatibility Definition Document (CDD)

Das Compatibility Definition Document für Android 10 baut auf früheren Versionen auf und enthält Updates für neue Funktionen und Änderungen an den Anforderungen für zuvor veröffentlichte Funktionen.

Tests

Compatibility Test Suite (CTS)

Das Android CTS hat eine separate Seite mit Versionshinweisen, auf der viele wichtige Änderungen für Android 10 aufgeführt sind.

CTS-Downloads

CTS-Pakete, die Android 10 unterstützen, sind auf der Seite CTS-Downloads verfügbar. Der Quellcode für die enthaltenen Tests kann mit dem Tag android-cts-10_r1 im Open-Source-Baum synchronisiert werden.

CTS-Shim APEX

Mit Android 10 wird ein Paket namens CtsShimApex eingeführt, das auf einem Gerät vorinstalliert sein muss, um CTS-Tests für die APEX-Verwaltung zu schreiben.

Test-Harnischmodus

Der CTS-Testharness-Modus hilft Entwicklern, Tests für ein Gerät oder eine Geräteflotte zu automatisieren.

Instant Apps-Modus

Ab Android 10 wird CTS im Instant Apps-Modus ausgeführt. Das bedeutet, dass das Test-APK als Instant App installiert und die Tests ausgeführt werden.

Zusätzlich zum CTS-Modus für Instant Apps enthält Android 10 den CTS-Verifier für Instant Apps.

CTS‑Prüfung für Pro Audio

Unter Android 10 wird ein CTS Verifier-Test für die Pro Audio-Compliance eingeführt.

CTS‑Prüfung – MIDI-Tests

In Android 10 wird mit dem CTS Verifier-MIDI-Test die MIDI-Funktionalität mit USB-MIDI-Schnittstellen, Bluetooth-MIDI-Schnittstellen und einem virtuellen MIDI-Gerätepfad getestet.

CTS-Testergebnisse interpretieren

In Android 10 wurde der Mechanismus zum Interpretieren von CTS-Ergebnissen aktualisiert.

Vendor Test Suite (VTS)

VTS-Tests mit Debug-Ramdisk

In Android 10 ändert sich das generische Systemimage (GSI), das zum Ausführen von CTS‑on‑GSI-/VTS-Konformitätstests verwendet wird, vom Typ „userdebug“ zum Typ „user“, da das GSI release-signiert ist. Der Befehl adb root, mit dem ein Host Root-Berechtigungen für das zu testende Android-Gerät erhält, ist jedoch in einem User-Build nicht verfügbar. Das ist ein Problem, da für VTS adb root erforderlich ist.

Die Debug-Ramdisk wurde eingeführt, um adb root zu ermöglichen, wenn das Gerät entsperrt ist. Dadurch wird der Testablauf vereinfacht, da derselbe Nutzer-Build system.img (entweder GSI oder system.img des OEM) wiederverwendet wird.

Hardware-Composer-Validierung

Unter Android 10 wird eine neue VTS-Testklasse für die Hardware Composer-Validierung über die readback-Schnittstelle in IComposerClient.hal hinzugefügt. Wenn Anbieter readback nicht implementieren, werden die Tests automatisch bestanden.

Fehlerbehebung

Gemeinsam genutzte Bibliotheken mit verschiedenen Klassenladern laden

In Android 9 und niedriger haben Apps ihre verknüpften gemeinsam genutzten Java-Bibliotheken in den Klassenlader der App geladen. In Android 10 verwendet das Framework einen anderen Klassenlader als den Klassenlader der App, um Java-Shared Libraries zu laden, die über uses-library oder uses-static-library verknüpft sind.

Im Allgemeinen sollten Apps nicht auf die Verwendung eines bestimmten Klassenladers angewiesen sein. Daher sollte diese Änderung das App-Verhalten nicht beeinträchtigen. Wenn eine App jedoch auf die Verwendung eines einzelnen Klassenladers angewiesen ist, funktioniert dieses Verhalten nicht mehr. Außerdem wird die Paket-private Sichtbarkeit von Klassen im selben Paket weiterhin unterstützt, aber nicht in gemeinsam genutzten Bibliotheken.

Gerätehersteller stellen möglicherweise App-Kompatibilitätsprobleme fest, wenn sie ihre Geräte mit Android 10 testen.

Sicherheitsfunktionen

Eine ausführlichere Liste der Verbesserungen in Bezug auf Sicherheit und Datenschutz finden Sie auf der Seite Sicherheits- und Datenschutzverbesserungen in Android 10.

Gesichtserkennung

Mit der Gesichtserkennung können Nutzer ihr Gerät entsperren, indem sie einfach auf die Vorderseite des Geräts schauen. Unter Android 10 wird ein neuer Stack für die Gesichtsauthentifizierung unterstützt, mit dem Kamerabilder sicher verarbeitet werden können. So werden Sicherheit und Datenschutz bei der Gesichtsauthentifizierung auf unterstützter Hardware gewährleistet. Android 10 bietet außerdem eine einfache Möglichkeit für sicherheitskonforme Implementierungen, die App-Integration für Transaktionen wie Onlinebanking oder andere Dienste zu aktivieren.

Erweiterter Zugriff

Trust Agents, der zugrunde liegende Mechanismus, der von tertiären Authentifizierungsmechanismen wie Smart Lock verwendet wird, können die Entsperrung in Android 10 nur verlängern. Trust Agents können gesperrte Geräte nicht mehr entsperren und ein Gerät nur noch maximal vier Stunden lang entsperrt halten.

Verschlüsselung

OEMCrypto

Android 10 verwendet die OEMCrypto API-Version 15.

Testen

BoundsSanitizer

In Android 10 wird BoundsSanitizer (BoundSan) in Bluetooth und Codecs eingesetzt. BoundSan verwendet den Bounds-Sanitizer von UBSan. Diese Maßnahme wird auf Modulebene aktiviert. Sie trägt dazu bei, wichtige Komponenten von Android zu schützen, und sollte nicht deaktiviert werden. BoundSan ist in den folgenden Codecs aktiviert:

  • libFLAC
  • libavcdec
  • libavcenc
  • libhevcdec
  • libmpeg2
  • libopus
  • libvpx
  • libspeexresampler
  • libvorbisidec
  • libaac
  • libxaac

Bereinigung von Ganzzahlüberläufen

In Android 10 wird Integer Overflow Sanitization (IntSan) in Software-Codecs aktiviert. Achten Sie darauf, dass die Wiedergabeleistung für alle Codecs akzeptabel ist, die von der Gerätehardware nicht unterstützt werden. IntSan ist in den folgenden Codecs aktiviert:

  • libFLAC
  • libavcdec
  • libavcenc
  • libhevcdec
  • libmpeg2
  • libopus
  • libvpx
  • libspeexresampler
  • libvorbisidec

Nur ausführbarer Speicher

Standardmäßig sind ausführbare Codeabschnitte für AArch64-Systembinärdateien als „nur ausführen“ (nicht lesbar) gekennzeichnet, um das Risiko von Just-in-Time-Code-Wiederverwendungsangriffen zu verringern. Code, in dem Daten und Code vermischt werden, und Code, der diese Abschnitte gezielt untersucht (ohne die Speichersegmente zuerst als lesbar neu zuzuordnen), funktioniert nicht mehr. Apps mit einem Ziel-SDK für Android 10 (API-Level 29 oder höher) sind betroffen, wenn die App versucht, Codeabschnitte von Systembibliotheken mit aktiviertem Execute-Only Memory (XOM) im Arbeitsspeicher zu lesen, ohne den Abschnitt zuerst als lesbar zu markieren.

Scudo

Scudo ist ein dynamischer User-Mode-Prozess für die Arbeitsspeicherzuweisung, der widerstandsfähiger gegen Heap-bezogene Sicherheitslücken ist. Sie bietet die Standard-C-Zuweisungs- und ‑Freigabe-Primitive sowie die C++-Primitive.

ShadowCallStack

ShadowCallStack (SCS) ist ein LLVM-Instrumentierungsmodus, der vor dem Überschreiben von Rücksprungadressen (z. B. durch Stack-Pufferüberläufe) schützt, indem die Rücksprungadresse einer Funktion im Funktionsprolog von Nicht-Leaf-Funktionen in einer separat zugewiesenen ShadowCallStack-Instanz gespeichert und im Funktions-Epilog aus der ShadowCallStack-Instanz geladen wird.

Audio

Audio-HAL

Android 10 bietet die folgenden neuen Funktionen für den Audio-HAL.

  • AudioSource
  • AudioFormat
  • AudioChannelMask

Es wurden zusätzliche Anforderungen für die Implementierung von Audio-HAL und ‑Subsystemen hinzugefügt.

Effekte der Vorverarbeitung

Android bietet Vorverarbeitungseffekte wie akustische Echounterdrückung, automatische Verstärkungsregelung und Rauschunterdrückung. Android 10 enthält neue Anforderungen für die Aufnahme mit VOICE_COMMUNICATION.

Audio-Richtlinienmanager

In Android 10 wurde der Audio Policy Manager grundlegend überarbeitet, um mehr Flexibilität für komplexe Automotive-Anwendungsfälle zu bieten.

Audio mit hoher Auflösung

Android 10 bietet die folgenden Verbesserungen für Audioinhalte mit hoher Auflösung.

  • Unterstützung von Gleitkommazahlen
  • Unterstützung von 192 kHz
  • Unterstützung von acht Kanälen
  • Einbeziehung von Zeitinformationen

Gleichzeitige Aufnahme

Unter Android 10 wurde die Nutzerfreundlichkeit der gleichzeitigen Aufnahme verbessert, bei der mehr als eine aktive Audioaufnahme gleichzeitig stattfindet.

AudioPlaybackCapture

Android 10 enthält eine neue API namens AudioPlaybackCapture, mit der Apps die von anderen Apps wiedergegebenen Audioinhalte kopieren können. Diese Funktion ähnelt der Bildschirmaufnahme, aber für Audio. Der primäre Anwendungsfall besteht darin, Streaming-Apps zu ermöglichen, Audio aufzunehmen, das von Spielen wiedergegeben wird.

Die Capture API hat keine Auswirkungen auf die Latenz der App, deren Audio aufgenommen wird.

MIDI

Mit Android 10 ist es einfacher, professionelle Audio-Apps mit MIDI mithilfe der AMidi NDK API auf die Android-Plattform zu portieren.

Kamera

Eine Zusammenfassung der Änderungen an der Kamera-API, der Kamera-HAL und dem Kameramodul, die in Android 10 eingeführt wurden, finden Sie unter Kamera-Updates in Android 10.

Verbesserungen des Datenschutzes im Kamerasystem

In Android 10 wurden die Datenschutzfunktionen des Kamera-Frameworks verbessert. Um zu vermeiden, dass potenziell vertrauliche statische Kamerainformationen in CameraCharacteristics ohne Einwilligung des Nutzers offengelegt werden, müssen Apps die Berechtigung CAMERA einholen, um statische Metadaten mit einem datenschutzsensiblen Tag über die Methode getCameraCharacteristics abzurufen.

Wenn Sie eine Liste der Schlüssel für Kameraeigenschaften abrufen möchten, für die die Berechtigung CAMERA erforderlich ist, rufen Sie die Methode getKeysNeedingPermission auf.

Sitzung – Anfrage zur Neukonfiguration

In Android 10 wurde die Funktion Abfrage zur Neukonfiguration der Sitzung eingeführt, die eine bessere Leistung durch mehr Kontrolle über die interne Logik zur Neukonfiguration von Sitzungsparametern ermöglicht.

Camera HAL3-APIs für die Pufferverwaltung

Mit Android 10 werden optionale Camera HAL3-APIs für die Pufferverwaltung eingeführt, mit denen Sie die Logik für die Pufferverwaltung implementieren können, um in Camera HAL-Implementierungen unterschiedliche Kompromisse zwischen Arbeitsspeicher und Erfassungslatenz zu erzielen.

Dynamischer physischer Kameraschalter in der Kamera HAL

In Android 10 wird das dynamische Metadaten-Tag ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID eingeführt, das die aktive zugrunde liegende physische Kamera eines logischen Kamerageräts angibt. Weitere Informationen finden Sie unter Unterstützung mehrerer Kameras.

Unterstützung für das Ausblenden physischer Kameras

In Android 10 kann die Kamera-HAL die Anzahl der physischen Kameras reduzieren, die direkt von einer App geöffnet werden können. Weitere Informationen finden Sie unter Unterstützung mehrerer Kameras.

Camera2 VNDK API

In Android 10 können Herstellermodule über zwei neue Standard-HIDL-Schnittstellen, android.frameworks.cameraservice.service@2.0 und android.frameworks.cameraservice.device@2.0, auf Kamerageräte zugreifen und sie steuern. Um die Verwendung der HIDL-Schnittstellen zu vereinfachen, wird mit Android 10 auch eine vom Anbieter verfügbare Bibliothek eingeführt: libcamera2_vendor. Diese Bibliothek ähnelt der Camera NDK library, weist aber einige geringfügige Änderungen auf.

Streamkonfigurationen

Mit Android 10 werden Funktionen eingeführt, mit denen Kameraanbieter empfohlene Kamerastreams für Kameraclienten bewerben und eine API zum Abfragen von Streamkombinationen unterstützen können.

Anforderungen an die Kombination von Kamerastreams

Geräte mit Android 10 müssen keine Streamkombinationen mit physischen Unterkamerastreams mehr unterstützen. Geräte mit Android 10 und der Kamera-HAL-Geräteversion 3.5 müssen jedoch isStreamCombinationSupported() unterstützen, damit Apps abfragen können, ob eine Streamkombination mit physischen Streams unterstützt wird.

Weitere Informationen finden Sie unter Unterstützung mehrerer Kameras.

HEIF-Bildverarbeitung

Android 10 bietet native Kameraunterstützung für HEIF-Bilder (High Efficiency Image File Format), die im Vergleich zu JPEG-Bildern eine bessere Bildqualität und kleinere Dateigrößen bieten. Geräte müssen einen HEIC- oder HEVC-Encoder haben, um HEIF-Bilder zu unterstützen.

Monochrome Kameras

Android 10 bietet zusätzliche Unterstützung für das Y8-Streamformat, statische Metadaten für monochrome und NIR-Farbfilterarrays (Near-Infrared, Nah-Infrarot) sowie DngCreator-Funktionen für monochrome Kameras.

Konnektivität

Anrufe und Nachrichten

Notrufnummern und Notrufe

Android 10 bietet eine verbesserte Unterstützung für Notrufe. Im Notfall können Geräte mit Unterstützung für IRadio HAL v1.4 einen Notruf über Notrufnummern starten, die aus einer Quelle wie einer SIM-Karte, dem Netzwerksignal oder der Android-Datenbank abgerufen werden. Nummern können nach Kategorien für Rettungsdienste wie Polizei, Feuerwehr und Krankenwagen kategorisiert werden.

APIs für Gruppenanrufe

Die Group Call APIs sind eine Erweiterung der eMBMS-APIs, die in Android 9 hinzugefügt wurden. Die neuen APIs definieren einen Standard für Apps, um an Cell Broadcast-Gruppenanrufen teilzunehmen und dort zu senden, indem sie mit eMBMS-Middleware-Paketen interagieren. Gruppenanrufe erfordern die Unterstützung durch den Chiphersteller, den Middleware-Anbieter und den Mobilfunkanbieter, um ordnungsgemäß zu funktionieren. Die Entwicklerdokumentation finden Sie unter developer.google.com.

Remote-SIM-Funktionen

Mit Android 10 werden Remote-SIM-Funktionen eingeführt, mit denen Messaging-Apps auf einem Android-Hostgerät SMS über Smartphones senden können, die Mechanismen wie Bluetooth verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Methode getSubscriptionType und zur Konstante SUBSCRIPTION_TYPE_REMOTE_SIM.

Mehrere eSIMs

In Android 10 unterstützt die Klasse EuiccManager Geräte mit mehreren eingebetteten SIMs (eSIMs) oder eUICCs.

eSIM-Updates

Für Geräte mit Android 10, die eSIMs unterstützen, muss ein Array mit nicht entfernbarer eUICC-Slot-ID definiert werden. Geräte müssen außerdem die IRadio HAL v1.4 und die IRadioConfig HAL v1.2 unterstützen. Weitere Informationen finden Sie unter eSIM implementieren und HAL-Anforderungen.

5G Non-Standalone (NSA)

Android 10 bietet Unterstützung für 5G NSA. 5G NSA ist eine Lösung für 5G-Netzwerke, bei denen das Netzwerk von einer vorhandenen 4G-Infrastruktur unterstützt wird. Unter Android 10 kann auf Geräten ein 5G-Symbol in der Statusleiste angezeigt werden, wenn eine Verbindung zu einem 5G-Netzwerk besteht.

Vorschlag für Telefonkonto

Mit Android 10 wird der Dienst für Vorschläge für Telefonkonten eingeführt, mit dem Nutzern beim Telefonieren Vorschläge für Telefonkonten angezeigt werden können.

Mobilfunkanbieter

Einstellungen für Mobilfunknetze migrieren

In Android 10 wurde der UI-Code für die Mobilfunknetzwerkeinstellungen neu strukturiert und vom Telefonie-Stack in den Einstellungs-Stack verschoben. Um den migrierten Code zu unterstützen, ändern Sie die folgenden Konfigurationswerte für die Einstellungen für Mobilfunknetze von Android-Ressourcen zu CarrierConfig-Ressourcen:

config_world_mode -> CarrierConfigManager#KEY_WORLD_MODE_ENABLED_BOOL

config_support_tdscdma -> CarrierConfigManager#KEY_SUPPORT_TDSCDMA_BOOL

config_support_tdscdma_roaming_on_networks -> CarrierConfigManager#KEY_SUPPORT_TDSCDMA_ROAMING_NETWORKS_STRING_ARRAY

config_enabled_lte -> CarrierConfigManager#KEY_LTE_ENABLED_BOOL

Geräte-IDs

Gleichbleibende Geräte-IDs (IMEI/MEID, IMSI und Build-Seriennummer) sind durch eine Berechtigung mit privilegiertem Zugriff geschützt. Der Zugriff wird auch Apps für Geräte- und Profilinhaber gewährt. Da die IMSI und die SIM-Seriennummer vom Mobilfunkanbieter bereitgestellt werden, wird der Zugriff auf diese Kennungen Paketen mit Mobilfunkanbieterberechtigungen gewährt.

WLAN

Netzwerkauswahl

Android bewertet kontinuierlich die Qualität des verbundenen Netzwerks und die Qualität der verfügbaren Netzwerke. In Android 10 wurden die Algorithmen und Verfahren zum Auswählen und Wechseln zwischen WLANs aktualisiert.

WLAN-Suche zur Entlastung des bevorzugten Netzwerks

In Android 10 wird eine optionale API-Methode namens setDeviceMobilityState() in WifiManager eingeführt, die das Intervall zwischen PNO-Scans (Preferred Network Offload) erhöht, wenn das Gerät nicht bewegt wird, um den Stromverbrauch zu senken.

WLAN eines Mobilfunkanbieters

In Android 10 verbinden sich Geräte mit der WLAN-Funktion des Mobilfunkanbieters automatisch mit konfigurierten WLANs des Mobilfunkanbieters (Netzwerke mit Zertifikaten für öffentliche Schlüssel).

Wi‑Fi Easy Connect

In Android 10 können Geräte Wi‑Fi Easy Connect verwenden, das auf dem von der Wi‑Fi Alliance (WFA) eingeführten Device Provisioning Protocol (DPP) basiert, um WLAN-Geräte bereitzustellen und zu konfigurieren.

WLAN-Modus für geringe Latenzzeit

Mit Android 10 wird ein WLAN-Modus mit geringer Latenz eingeführt, der den WLAN-Chip so konfiguriert, dass die Latenz reduziert wird.

DHCP-Server aktualisiert

Im Rahmen der Bildung eines „IP-Server“-Dienstes wird dnsmasq gelöscht. In Android 10 wird die Funktion des DHCPv4-Servers durch eine separate Komponente ersetzt, die hauptsächlich in Java geschrieben ist, um eine bessere Integration in die Java-Framework-Steuerungsebene zu ermöglichen. Dadurch werden die Sicherheit und die Aktualisierbarkeit des DHCP-Servers verbessert. Weitere Informationen finden Sie unter packages/modules/NetworkStack/src/android/net/dhcp/DhcpServer.java.

Sie müssen nichts unternehmen, um diese Änderung zu implementieren: Alle Geräte, die mit Android 10 ausgeliefert werden oder auf Android 10 aktualisiert werden, verwenden standardmäßig DhcpServer. Wenn Sie den DHCP-Server angepasst haben, können Sie zum Verhalten von Android 9 zurückkehren, indem Sie die globale Einstellung tether_enable_legacy_dhcp_server=1 festlegen. Die neue DhcpServer ist im Modul für Netzwerkkomponenten enthalten. Alle Anpassungen der DHCP-Serverfunktionen sollten daher upstream erfolgen.

WPA3 und Wi‑Fi Enhanced Open

Android 10 bietet Unterstützung für die Sicherheitsstandards Wi-Fi Protected Access 3 (WPA3) und Wi-Fi Enhanced Open, um für mehr Datenschutz und Robustheit gegenüber bekannten Angriffen zu sorgen.

Wi-Fi Direct

Wi‑Fi Direct, auch bekannt als Wi‑Fi P2P, ermöglicht es unterstützten Geräten, sich gegenseitig zu erkennen und direkt über das Wi‑Fi Direct-Protokoll zu verbinden, ohne dass ein Internet- oder Mobilfunknetzwerkzugriff erforderlich ist.

Verbesserungen bei der MAC‑Randomisierung

Ab Android 10 ist die MAC-Adressrandomisierung standardmäßig für den Clientmodus, SoftAP und Wi‑Fi Direct aktiviert. Geräte müssen in der System-UI eine Option zum Aktivieren oder Deaktivieren der MAC-Adressen-Anonymisierung für jede SSID bieten.

Passpoint R2

Android 10 bietet Unterstützung für Passpoint R2-Funktionen. Passpoint R2 implementiert die Online-Registrierung (Online Sign Up, OSU), eine Standardmethode zum Bereitstellen neuer Passpoint-Profile. Android 10 unterstützt die Bereitstellung von EAP-TTLS-Profilen mit SOAP-XML.

NFC

NFC sichern

Mit Sicheres NFC kann die Off-Host-NFC-Kartensimulation nur aktiviert werden, wenn das Display des Geräts entsperrt ist. Durch die Implementierung dieser Funktion haben Nutzer die Möglichkeit, Secure NFC zu aktivieren, um die Sicherheit zu verbessern.

Android Beam eingestellt

In Android 10 ist Android Beam nicht mehr erforderlich und die folgenden Schnittstellen und Methoden wurden eingestellt.

Schnittstellen:

Methoden:

Wenn Sie Android Beam verwenden möchten, melden Sie die Feature-Konstante android.sofware.nfc.beam.

Grafik

ASurfaceControl

In Android 10 wird ASurfaceControl eingeführt, eine neue Methode für SurfaceFlinger zum Akzeptieren von Puffern.

Grafikimplementierung

OpenGL ES-Ebenen

Mit Android 10 wird ein Layering-System für GLES eingeführt.

EGL 1.5

In Android 10 wird die EGL 1.5-Schnittstelle implementiert. Informationen zu neuen Funktionen in EGL 1.5 finden Sie unter Khronos Releases EGL 1.5 Specification.

Vulkan

Android 10 unterstützt Vulkan 1.1-Grafik. Die Plattform unterstützt auch VK_KHR_swapchain v70, sodass die Vulkan-App ein VkImage erstellen kann, das durch Swapchain-Speicher gesichert ist.

Aktualisierungsrate für die Leistung

In Android 10 wird eine Aktualisierungsrate für die Leistung unterstützt. Diese Funktion ist standardmäßig deaktiviert.

Interaktion

Automobil

Audio im Auto

In Android 10 wird der Audio-HAL-Kontext AudioAttributes.usage zugeordnet, um Geräusche zu identifizieren. Android unterstützt eine AUDIO_DEVICE_OUT_BUS-Instanz pro Kontext. IAudioControl Die HAL bietet fahrzeugspezifische Erweiterungen der Audio-HAL.

Bedienung über Gesten

Mit Android 10 wird eine Option für die Systemsteuerung per Geste eingeführt. Informationen dazu, wie Sie Apps für die Verwendung dieser Funktion vorbereiten, finden Sie auf der Seite Gestural navigation (Gestensteuerung) auf der Android-Entwicklerwebsite.

Neuronale Netzwerke

Mit Android 10 werden die Neural Networks API und der Neural Networks HAL aktualisiert. Eine Zusammenfassung der Änderungen finden Sie unter Neuronale Netzwerke.

Neue und aktualisierte Dokumentation zu neuronalen Netzwerken für Android 10:

Sensoren

Sensors HAL 2.0

Sensors HAL 2.0 unterstützt die Verwendung von Fast Message Queues (FMQs), um Sensorereignisse aus der HAL in das Android Sensors Framework zu senden.

Sensoren aus

Android 10 enthält eine Entwicklereinstellung zum Deaktivieren aller Sensoren auf einem Gerät. Mit dieser Funktion können Entwickler die Funktionalität ihrer App in Situationen testen, in denen diese Sensoren nicht verfügbar sind. Außerdem haben Nutzer so die Möglichkeit, die Sensoren auf ihrem Gerät zu steuern.

Wenn auf Ihren Geräten die Standardimplementierung von SensorService, CameraService und AudioPolicyService verwendet wird, ist keine zusätzliche Anpassung des Referenzdesigns erforderlich. Wenn du andere Sensoren hast, findest du unter Anpassung weitere Informationen zur Unterstützung dieser Funktion.

Medien

Aktualisierbare Medienkomponenten

Android 10 bietet aktualisierbare Media-Komponenten, mit denen mediabezogene modulare Systemkomponenten über die Google Play Store-Infrastruktur oder über einen vom Partner bereitgestellten OTA-Mechanismus (Over-the-Air) aktualisiert werden können.

Media DRM

Android 10 verbessert die Nützlichkeit und Nutzerfreundlichkeit der MediaDrm Java- und NDK-APIs.

Dekodierung

Android 10 unterstützt die AV1-Softwaredecodierung.

Berechtigungen

Android 10 bietet zusätzliche Berechtigungskonfigurationen für Transparenz und Datenschutz.

Contacts Provider und Informationen zu Affinitäten

Ab Android 10 wird auf Daten, die sich auf die Kontakthäufigkeit beziehen und von der Contacts Provider-Komponente verwaltet werden, anders zugegriffen als in Android 9 und niedrigeren Versionen. Diese Änderungen in Bezug auf die Datenzugänglichkeit verbessern den Datenschutz für Nutzer auf allen Android 10-Geräten, auf denen die Komponente „Contacts Provider“ verwendet wird. Die zugrunde liegende Datenbank enthält keine Daten zu Kontakt-Affinitäten mehr. Daher können Apps nicht darauf schreiben oder daraus lesen.

Die Änderungen in Android 10 werden sich voraussichtlich stark auf APIs auswirken. Wenn Ihre Apps auf den eingestellten Funktionen basieren, die unter „Contacts Provider and Affinities Information“ (Contacts Provider und Informationen zu Affinitäten) aufgeführt sind, sollten Sie Ihre Apps aktualisieren, um alle Änderungen zu berücksichtigen. Wenn Sie eine abgeleitete Version des Contacts Provider verwenden, müssen Sie diesen außerdem aktualisieren.

Berechtigungen zur Standortermittlung mit drei Status

Mit den dreistufigen Standortberechtigungen in Android 10 haben Nutzer mehr Kontrolle darüber, wie Apps auf die Standorte ihrer Geräte zugreifen.

Erinnerung an den Zugriff auf die Standortermittlung im Hintergrund

Android 10 bietet eine Erinnerung an den Standortzugriff im Hintergrund, die die Transparenz hinsichtlich des Zugriffs von Apps auf den Standort eines Geräts erhöht und Nutzern hilft, die Kontrolle über diesen Zugriff zu behalten.

Opportunistische Standorte einschränken

Wenn eine App den Standort eines Geräts anfordert, kann sie entweder auf die Antwort auf die Anfrage warten oder durch die Verwendung aktiver Standortlistener eine opportunistische Standortaktualisierung erhalten. Ab Android 10 müssen Entwickler angeben, dass sie passive Standortaktualisierungen von der Klasse FusedLocationProviderClient benötigen, um opportunistische Standortaktualisierungen zu erhalten.

Starten von Apps im Hintergrund

In Android 10 können nicht privilegierte Apps ohne sichtbares Fenster nicht automatisch im Vordergrund gestartet werden. Durch diese Änderung werden Pop-up-Anzeigen und böswillige Übernahmen unterdrückt. Sie müssen nichts weiter tun.

App-Sandboxing

In Android 10 haben Apps eine eingeschränkte Rohansicht des Dateisystems und keinen direkten Zugriff auf Pfade wie /sdcard/DCIM. Apps behalten jedoch den vollständigen Rohzugriff auf ihre paketspezifischen Pfade bei, die von allen anwendbaren Methoden wie Context.getExternalFilesDir() zurückgegeben werden. Apps haben weiterhin uneingeschränkten Rohzugriff auf ihre paketspezifischen Pfade.

Verwenden Sie die Richtlinien für die App-Sandbox zum Teilen von Dateien, um eine angemessene Granularität für die Datenfreigabe zu gewährleisten.

Zugriff von Apps auf die Zwischenablage einschränken

In Android 10 wurde der Zugriff auf die Zwischenablage so geändert, dass der Inhalt der Zwischenablage nicht durch Aufrufen von ClipboardManager.getPrimaryClip oder durch Hinzufügen eines onPrimaryClipChangedListener-Listeners für Benachrichtigungen bei Änderungen der Zwischenablage beobachtet werden kann. Dadurch wird der Datenschutz für Nutzer erhöht und verhindert, dass Malvertising-Apps die Zwischenablage ändern.

In Android 10 ist der Lesezugriff nur für die aktuelle App mit Eingabefokus oder für die aktuelle Tastatur zulässig. Der Listener-Aufruf ClipboardManager.onPrimaryClipChanged() wird jetzt nur noch für Apps ausgelöst, die diese Einschränkungen erfüllen. ClipboardManager.getPrimaryClip und ClipboardManager.getPrimaryClipDescription geben null zurück, wenn die anfragende App entweder nicht der Standard-IME (Input Method Editor) ist oder keinen Eingabefokus hat.

Laufzeitberechtigungen umfassen die Aktivitätserkennung

Nutzer sehen jetzt ein Dialogfeld zur Aktivitätserkennung, wenn eine App im Hintergrund auf den Gerätestandort zugreift. Laufzeitberechtigungen mit harten Einschränkungen müssen in Android 10 ordnungsgemäß auf die Zulassungsliste gesetzt werden.

Berechtigung MANAGE_DEVICE_ADMINS

In Android 10 wird die Berechtigung MANAGE_DEVICE_ADMINS von „Signatur oder privilegiert“ zu „Nur Signatur“ geändert. Das bedeutet, dass nur plattformsignierte Apps andere Apps als Geräteadministrator festlegen können.

Verbesserungen bei der Sharing API

Android 10 bietet eine Reihe von neuen Android Platform API-Funktionen für das Teilen. Wenn Sie den Code für das Freigabeblatt in Ihrer Implementierung geändert haben, müssen Sie dafür sorgen, dass Ihre Implementierung diese neuen Funktionen unterstützt. Wenn Sie den Share Sheet-Code in Ihrer Implementierung nicht geändert haben, müssen Sie nichts tun, um diese neuen Funktionen zu unterstützen.

Android Runtime ("ART")

Signierte Konfiguration

Mit der Funktion Signierte Konfiguration können Sie die Konfiguration von Einschränkungen für Nicht-SDK-Schnittstellen in APKs einbetten. Dadurch können bestimmte Nicht-SDK-Schnittstellen von der Blacklist entfernt werden, sodass AndroidX sie sicher verwenden kann. Durch diese Änderung kann AndroidX Unterstützung für neue Funktionen in älteren Android-Versionen hinzufügen.

Leistung

Cgroup-Abstraktionsebene

Android 10 enthält eine cgroup-Abstraktionsschicht und Aufgabenprofile, mit denen Entwickler eine Reihe von Einschränkungen beschreiben können, die auf einen Thread oder Prozess angewendet werden sollen.

Low Memory Killer-Daemon (lmkd)

Android 10 unterstützt einen neuen lmkd-Modus, der PSI-Monitore (Pressure Stall Information) des Kernels zur Erkennung von Arbeitsspeicherbelastung verwendet.

Leistung

Plattform-Energiesparmodus

In Android 10 kann der Stromsparmodus sowohl auf Geräten mit Always-on-Display als auch auf akkubetriebenen Geräten aktiviert werden.

Energiesparmodus für Routinen

In Android 10 wird eine neue Option für den Energiesparmodus eingeführt: Basierend auf Routine. Mit Routine battery saver kann eine vom OEM ausgewählte App Signale an das System senden, um den Energiesparmodus intelligenter zu planen. Diese Option erfordert eine Konfiguration und ist optional.

HAL für Statistiken zur Stromversorgung

In Android 10 ersetzt IPowerStats.hal die APIs zum Erfassen von Statistiken zum Stromverbrauch in IPower.hal. Die APIs werden zwar weiterhin vom Power-HAL unterstützt, werden aber in Zukunft ausschließlich zum Power-Statistik-HAL migriert.

Das Power Stats HAL enthält neue APIs, um die Erfassung von Daten aus der Strommessung auf dem Gerät für unterstützte Geräte zu ermöglichen. Die vorhandenen APIs zum Erfassen von Leistungsstatistiken wurden ebenfalls aktualisiert, um die Flexibilität zu verbessern. Die APIs für Power Hinting bleiben im Power HAL und ändern sich nicht.

Maßnahmen zur Reduzierung der Wärmeentwicklung

Das Thermal Framework in Android 10 abstrahiert Geräteschnittstellen für den Temperatursensor des thermischen Subsystems, einschließlich CPU, GPU, Akku, Haut und Kühlgerät. Das Framework führt eine Polling-Schnittstelle ein, um den thermischen Status abzufragen und die Drosselung zu initiieren, sowie eine Callback-Schnittstelle, um dem Nutzer eine Nachricht zu senden, wenn ein Grenzwert überschritten wird.

Android 10 bietet die neuen Datentypen über die IThermalService-Schnittstelle mit diesen drei neuen Methoden:

Apps fügen Listener hinzu und entfernen sie und greifen in der Klasse PowerManager auf den Temperaturstatus zu. Nur ein vertrauenswürdiger Systemdienst wie eine Android-API oder eine API des Geräteherstellers kann auf Informationen zu zugehörigen kausalen Ereignissen zugreifen. Gerätehersteller oder SoC-Hersteller müssen thermal HAL 2.0 implementieren, um die volle Funktionalität des neuen thermischen Frameworks zu ermöglichen.

Ein Beispiel für die Implementierung der thermischen Eindämmung finden Sie in der Referenzimplementierung.

Updates

APEX-Dateiformat

Android Pony EXpress (APEX) ist ein neues Containerformat, das im Installationsablauf für modulare Systemkomponenten verwendet wird.

Dynamische Partitionen

Mit dynamischen Partitionen wird ein Partitionierungssystem für den Nutzerbereich in Android eingeführt, mit dem Partitionen während OTA-Updates erstellt, in der Größe angepasst oder gelöscht werden können. Gerätehersteller müssen sich keine Gedanken über die einzelnen Größen von Partitionen wie system, vendor und product machen. Stattdessen wird eine große super-Partition zugewiesen, in der die Größe von Unterpartitionen dynamisch angepasst werden kann.

Dynamische Systemupdates

Mit dynamischen Systemupdates (Dynamic System Updates, DSU) können Sie ein Android-System-Image erstellen, das Nutzer aus dem Internet herunterladen und ausprobieren können, ohne das aktuelle System-Image zu beschädigen.

Sichern und Wiederherstellen für mehrere Nutzer

Android 10 unterstützt die Sicherungs- und Wiederherstellungsfunktion für alle Nutzer auf einem Gerät. Bisher war „Sichern und Wiederherstellen“ nur für den Systemnutzer verfügbar. Die Sicherung und Wiederherstellung für Nutzer, die keine Systemnutzer sind, ist standardmäßig deaktiviert, da sie nur teilweise Einstellungen, Hintergrundbilder und Systemkomponenten abdeckt.

Overlayfs

Nutzer, die mit userdebug- oder eng-Builds arbeiten, erwarten, dass sie die Systempartition effizient als Lese-/Schreibzugriff neu bereitstellen und dann beliebig viele Dateien hinzufügen oder ändern können, ohne das System-Image neu flashen zu müssen. Sie können Overlayfs verwenden, um automatisch einen Sicherungsspeicher für ein beschreibbares Dateisystem als obere Referenz einzurichten und über dem unteren Speicher bereitzustellen. Diese Aktionen erfolgen in den Anfragen adb disable-verity und adb remount. Weitere Informationen finden Sie in der Overlayfs-README-Datei in AOSP.

Unterstützung der gemeinsam genutzten Mediathek im Wiederherstellungsmodus

In Android 10 sind freigegebene Bibliotheken in der Wiederherstellungspartition verfügbar. Daher müssen nicht alle ausführbaren Dateien im Wiederherstellungsmodus statisch sein. Die gemeinsam genutzten Bibliotheken befinden sich im Verzeichnis /system/lib (oder /system/lib64 für 64‑Bit-Geräte) in der Partition.

Wenn Sie der Wiederherstellungspartition eine neue gemeinsam genutzte Bibliothek hinzufügen möchten, fügen Sie recovery_available: true oder recovery: true zu Android.bp der gemeinsam genutzten Bibliothek hinzu. Bei der ersten Option wird die Bibliothek sowohl auf der System- als auch auf der Wiederherstellungspartition installiert, bei der zweiten Option nur auf der Wiederherstellungspartition.

Die Unterstützung gemeinsam genutzter Bibliotheken kann nicht mit dem Make-basierten Build-System von Android erstellt werden. Wenn Sie eine vorhandene statische ausführbare Datei für den Wiederherstellungsmodus in eine dynamische Datei umwandeln möchten, entfernen Sie LOCAL_FORCE_STATIC_EXECUTABLE := true in Android.mk oder static_executable: true (in Android.bp).

Nutzerdaten-Prüfpunkt (UDC)

Mit Android 10 wird die Funktion „Nutzerdaten-Prüfpunkt“ (User Data Checkpoint, UDC) eingeführt, mit der Android bei einem fehlgeschlagenen Over-the-Air-Update (OTA) auf den vorherigen Zustand zurückgesetzt werden kann.