Versionshinweise zu Android 10

Diese Seite fasst die wichtigsten Funktionen der Android 10-Version zusammen und bietet Links zu zusätzlichen Informationen. Diese Funktionszusammenfassungen sind nach dem Dokumentationsort der Funktion auf dieser Website geordnet.

Bauen

java_sdk_library

Android 10 führt java_sdk_library ein, 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 nutzen, um die Abwärtskompatibilität ihrer APIs aufrechtzuerhalten.

Die Architektur

Modulare Systemkomponenten

Android 10 modularisiert einige Android-Systemkomponenten und ermöglicht deren Aktualisierung außerhalb des normalen Android-Release-Zyklus. Einige Module umfassen:

Hardware-Abstraktionsschicht (HAL)

Android 10 bietet Unterstützung für das automatische Herunterfahren von HALs, wenn sie keine Clients haben.

Kernel

ABI

Android 10 bietet Unterstützung für neue ABI-Überwachungsdienstprogramme, die beim Vergleichen, Verfolgen und Entschärfen von Kernel-ABI-Änderungen helfen, die sich auf die Kompatibilität mit Kernelmodulen auswirken.

Android 10 führt außerdem einen symbolbasierten ABI-Nutzungsprüfer ein. Der Prüfer kann veraltete vorgefertigte Binärdateien zum Zeitpunkt der Erstellung erkennen, sodass Entwickler von gemeinsam genutzten Bibliotheken wissen können, welche vorgefertigten Binärdateien durch ihre Änderung beschädigt werden könnten und welche vorgefertigten Binärdateien neu erstellt werden müssen.

Android Live-Lock-Daemon

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

vDSO32 auf ARM64

Android 10 unterstützt die Verwendung von vDSO32 auf 64-Bit-Kerneln , was zu einer Verlängerung der Akkulaufzeit um 0,4 Prozent und anderen Leistungsverbesserungen führt.

fstab-Einträge für früh gemountete Partitionen

Android 10 erfordert, dass Geräte fstab Einträge für früh gemountete Partitionen mithilfe einer fstab Datei in der Ramdisk der ersten Stufe angeben.

HIDL

BroadcastQueue auslagern

Android 10 enthält eine neue Offload BroadcastQueue für die vorhandenen Hintergrund- und Vordergrundwarteschlangen . Die Offload-Warteschlange hat die gleiche Priorität und das gleiche Timeout-Verhalten wie die Hintergrundwarteschlange. Um ein Blockieren der Hintergrundwarteschlange zu verhindern, in der interessantere oder für den Benutzer sichtbare Übertragungen stattfinden können, verarbeitet die Offload-Warteschlange die BOOT_COMPLETED -Übertragung, die von vielen Apps abgehört wird und deren Abschluss lange dauern kann. Die Offload-Warteschlange verarbeitet derzeit nur den BOOT_COMPLETED Broadcast, kann aber möglicherweise auch andere lange Broadcasts verarbeiten.

SystemSuspend-Dienst

Android 10 ersetzt den Thread in libsuspend der für die Initiierung der Systemunterbrechung verantwortlich ist, durch den SystemSuspend HIDL-Dienst . Diese Implementierung bietet die gleiche Funktionalität wie frühere Versionen und nutzt gleichzeitig die Vorteile der Android HIDL-Infrastruktur.

safe_union in HIDL

Android 10 führt in HIDL safe_union ein, einen explizit markierten Union-Typ.

Aufbau

ConfigStore HAL

Android 10 veraltet die ConfigStore-HAL aufgrund des hohen Speicherverbrauchs und der schwierigen Nutzung und ersetzt die HAL durch Systemeigenschaften .

Konfigurationsdateischema-API

Die Android-Plattform enthält eine große Anzahl von XML-Dateien zum Speichern von Konfigurationsdaten. Viele der XML-Dateien befinden sich in der vendor , werden jedoch in der 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 abwärtskompatibel weiterentwickelt werden. Vor Android 10 bot die Plattform keine Mechanismen, um die Angabe und Verwendung des XML-Schemas zu erfordern oder inkompatible Änderungen im Schema zu verhindern. Android 10 bietet diesen Mechanismus namens Config File Schema API .

Systemeigenschaften als APIs

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

Anbieterschnittstellenobjekt (VINTF).

VINTF

Zu den Änderungen an VINTF in Android 10 gehören:

  • AVB-Versions-Tags werden abgelehnt
  • Hinzufügen von Kernel-Informationen in OTA-Paketen
  • ODM wird offiziell erstellt
  • Hinzufügen einer Produktkompatibilitätsmatrix
  • Verknüpfen eines Manifesteintrags mit einem HAL-Modul im Build-System

Bootloader

Ramdisk

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

Erstellen Sie ODM-Partitionen

Android 10 bietet Unterstützung für die Erstellung odm Partitionen mithilfe des Android-Build-Systems. Sie können eine separate /odm Partition für Anpassungen verwenden, wodurch Sie ein einzelnes Anbieter-Image für mehrere Hardware-SKUs verwenden können. Dadurch können Original-Design-Hersteller (ODMs) System-on-Chip (SoC)-Anbieter-Board-Support-Pakete (BSPs) an ihre spezifischen Geräte (ihre Boards) anpassen. Sie können Kernelmodule für platinenspezifische Komponenten, platinenspezifische Daemons oder ihre eigenen Funktionen auf Hardware-Abstraktionsschichten (HALs) implementieren. Sie können auch SoC-Komponenten ersetzen oder anpassen.

Versionierung des Boot-Image-Headers

Android 10 aktualisiert den Boot-Image-Header auf Version 2, die einen Abschnitt zum Speichern des Device Tree Blob (DTB)-Image enthält. Android 10 VTS-Tests stellen sicher, dass alle Geräte, die mit Android 10 gestartet werden, den Boot-Image-Header Version 2 verwenden und ein gültiges DTB-Image als Teil der Boot-/Wiederherstellungs-Images enthalten.

Wiederherstellungsimages für Nicht-A/B-Geräte

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

Stabiles AIDL

Android 10 bietet Unterstützung für die stabile Android Interface Definition Language (AIDL) , eine neue Möglichkeit, den Überblick über die von AIDL-Schnittstellen bereitgestellte Anwendungsprogrammschnittstelle (API)/Anwendungsbinärschnittstelle (ABI) zu behalten.

Verschieben Sie Fastboot in den Benutzerbereich

Android 10 bietet Unterstützung für veränderbare Partitionen, indem die Fastboot-Implementierung vom Bootloader in den Benutzerbereich verlagert wird.

Anzeige

HDR-Videowiedergabe

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

Textklassifizierung

Die Textklassifizierung nutzt Techniken des maschinellen Lernens, um Entwicklern bei der Klassifizierung von Text zu helfen. Android 10 führt zwei Methoden in die TextClassifier-API ein: suggestConversationActions und detectLanguage . Die Methode suggestConversationActions generiert vorgeschlagene Antworten und Aktionen aus einer bestimmten Konversation und die Methode detectLanguage erkennt die Sprache des Textes.

Unterstützung für die Wiedergabe von Zawgyi-Schriftarten

Zawgyi ist die beliebteste Schriftart in Myanmar. Android 9 und niedriger unterstützten das Rendern von Zawgyi nicht, da es nicht Unicode-kompatibel ist . Android 10 behebt dieses Problem, indem es eine Unicode-Schriftart enthält, die sowohl Unicode-Burmesisch als auch Zawgyi zusammen darstellen kann. Für die Unterstützung der Zawgyi-Schriftartwiedergabe auf Geräten, die mit Android 10 starten, sind keine Implementierungsarbeiten erforderlich. Wenn Ihre Geräte über eine benutzerdefinierte Implementierung zur Unterstützung von Zawgyi verfügen, können Sie:

  • 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 Gebietsschemacode my-qaag in Ihrer fonts.xml . Weitere Informationen finden Sie in den Versionshinweisen zu Unicode CLDR zu Zawgyi (Qaag) .

Einschränkungen beim Ausblenden von App-Symbolen

Android 10 schränkt die Möglichkeit für Apps ein, ihre Startsymbole auszublenden. Wenn für eine App keine Launcher-Aktivität aktiviert ist, zeigt das System eine synthetisierte Aktivität im Launcher an; Diese synthetisierte Aktivität stellt die Detailseite der App in den Systemeinstellungen dar.

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

Einstellungen

Um die Barrierefreiheit zu verbessern, enthält Android 10 vom Benutzer anpassbare Timeout-Einstellungen. Die API- und Einstellungsänderungen kommen mit Android 10. Wenn Sie Ihre Einstellungen anpassen, stellen Sie sicher, dass diese Funktion unterstützt wird. Wenn auf Ihrem Gerät UI-Elemente vorhanden sind, bei denen eine Zeitüberschreitung auftritt, verwenden Sie für diese die Zeitüberschreitungs-API . Weitere Informationen finden Sie in den Barrierefreiheitsrichtlinien für Android-Entwickler .

Kompatibilität

Android-Kompatibilitätsdefinitionsdokument (CDD)

Das Android 10-Kompatibilitätsdefinitionsdokument basiert auf früheren Versionen und enthält Aktualisierungen für neue Funktionen und Änderungen der Anforderungen für zuvor veröffentlichte Funktionen.

Tests

Kompatibilitätstest-Suite (CTS)

Android CTS verfügt über 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 CTS-Downloadseite verfügbar. Der Quellcode für die enthaltenen Tests kann mit dem Tag android-cts-10_r1 im Open-Source-Baum synchronisiert werden.

CTS Unterlegscheibe APEX

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

Testen Sie den Kabelbaummodus

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

Instant Apps-Modus

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

Neben einem CTS-Modus für Instant Apps enthält Android 10 CTS Verifier für Instant Apps

CTS Verifier Pro-Audiotest

Android 10 fügt einen CTS-Verifier-Test zur Pro-Audio-Konformität hinzu.

CTS Verifier MIDI-Tests

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

Interpretation des CTS-Tests

Android 10 aktualisiert den Mechanismus zur Interpretation von CTS-Ergebnissen .

Vendor Test Suite (VTS)

VTS-Test mit Debug-Ramdisk

In Android 10 ändert sich das generische Systemabbild (GSI), das zum Ausführen von CTS-on-GSI/VTS-Konformitätstests verwendet wird, von „userdebug“ in „user build type“, da GSI eine Release-Signatur aufweist. Allerdings ist der Befehl adb root , der einem Host Root-Berechtigungen für das zu testende Android-Gerät erteilt, in einem Benutzer-Build nicht verfügbar. Dies ist ein Problem, da für die Ausführung von VTS adb root erforderlich ist.

Die Debug-Ramdisk wird eingeführt, um adb root zu ermöglichen, wenn das Gerät entsperrt ist. Dies vereinfacht den Testablauf durch die Wiederverwendung desselben Benutzer-Builds system.img (entweder GSI oder system.img des OEM).

Hardware Composer-Validierung

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

Debuggen

Laden Sie gemeinsam genutzte Bibliotheken mit verschiedenen Klassenladern

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 der Klassenlader der App, um gemeinsam genutzte Java-Bibliotheken 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, ist dieses Verhalten fehlerhaft. Darüber hinaus wird die paketprivate Sichtbarkeit von Klassen im selben Paket weiterhin unterstützt, in gemeinsam genutzten Bibliotheken jedoch nicht.

Gerätehersteller können Probleme mit der App-Kompatibilität feststellen, wenn sie ihre Geräte mit Android 10 testen.

Sicherheitsfunktionen

Eine vollständigere Liste der Verbesserungen, die sich nur auf Sicherheit und Datenschutz beziehen, finden Sie auf der Seite „Sicherheits- und Datenschutzverbesserungen“ für Android 10 .

Gesichtsauthentifizierung

Mit der Gesichtsauthentifizierung können Benutzer ihr Gerät entsperren, indem sie einfach auf die Vorderseite des Geräts schauen. Android 10 bietet Unterstützung für einen neuen Gesichtsauthentifizierungsstapel, der Kamerabilder sicher verarbeiten kann und so 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, um die App-Integration für Transaktionen wie Online-Banking oder andere Dienste zu ermöglichen.

Erweiterter Zugriff

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

Verschlüsselung

OEMCrypto

Android 10 verwendet OEMCrypto API Version 15.

Testen

BoundsDesinfektionsmittel

Android 10 stellt BoundsSanitizer (BoundSan) in Bluetooth und Codecs bereit. BoundSan verwendet den Grenzendesinfektionsmittel von UBSan. Diese Schadensbegrenzung wird auf Modulebene aktiviert. Es trägt dazu bei, wichtige Android-Komponenten 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

Android 10 ermöglicht Integer Overflow Sanitization (IntSan) in Software-Codecs. Stellen Sie sicher, dass die Wiedergabeleistung für alle Codecs akzeptabel ist, die von der Hardware des Geräts 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ührbar“ (nicht lesbar) markiert, um eine Absicherung gegen Just-in-Time-Angriffe zur Wiederverwendung von Code zu gewährleisten. Code, der Daten und Code miteinander vermischt, und Code, der diese Abschnitte gezielt überprüft (ohne die Speichersegmente zunächst als lesbar zuzuordnen) funktioniert nicht mehr. Apps mit einem Ziel-SDK von Android 10 (API-Level 29 oder höher) sind betroffen, wenn die App versucht, Codeabschnitte von XOM-fähigen Systembibliotheken (Execute-Only Memory) im Speicher zu lesen, ohne den Abschnitt zuvor als lesbar zu markieren.

Scudo

Scudo ist ein dynamischer Speicherzuweiser im Benutzermodus, der widerstandsfähiger gegen Heap-bezogene Schwachstellen ist. Es stellt die standardmäßigen C-Zuweisungs- und Freigabeprimitive sowie die C++-Primitive bereit.

ShadowCallStack

ShadowCallStack (SCS) ist ein LLVM-Instrumentierungsmodus , der vor Überschreibungen von Rücksprungadressen (wie Stapelpufferüberläufen) schützt, indem er die Rücksprungadresse einer Funktion in einer separat zugewiesenen ShadowCallStack Instanz im Funktionsprolog von Nichtleaf-Funktionen speichert und die Rücksprungadresse von der ShadowCallStack Instanz in lädt der Funktionsepilog.

Audio

Audio-HAL

Android 10 enthält die folgenden neuen Funktionen für Audio-HAL .

  • AudioSource
  • AudioFormat
  • AudioChannelMask

Für die Audio-HAL- und Subsystem-Implementierung werden zusätzliche Anforderungen hinzugefügt.

Vorverarbeitungseffekte

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 .

Audiorichtlinien-Manager

Android 10 beinhaltet eine erhebliche Umgestaltung des Audio-Richtlinien-Managers , um mehr Flexibilität bei der Unterstützung komplexer Anwendungsfälle im Automobilbereich zu bieten.

Hochauflösendes Audio

Android 10 enthält die folgenden Verbesserungen für hochauflösendes Audio .

  • Float-Unterstützung
  • 192-kHz-Frequenzunterstützung
  • Acht-Kanal-Unterstützung
  • Einbeziehung von Timing-Informationen

Gleichzeitige Erfassung

Android 10 verbessert das Benutzererlebnis bei gleichzeitiger Aufnahme , bei der mehr als eine aktive Audioaufnahme gleichzeitig erfolgen muss.

AudioPlaybackCapture

Android 10 enthält eine neue API namens AudioPlaybackCapture , die Apps die Möglichkeit gibt, die von anderen Apps abgespielten Audiodaten zu kopieren. Diese Funktion ähnelt der Bildschirmaufnahme, jedoch für Audio. Der Hauptanwendungsfall besteht darin, Streaming-Apps die Aufnahme des von Spielen abgespielten Audios zu ermöglichen.

Die Aufnahme-API hat keinen Einfluss auf die Latenz der App, deren Audio aufgenommen wird.

MIDI

Android 10 erleichtert die Portierung professioneller Audio-Apps mit MIDI auf die Android-Plattform mithilfe der AMidi NDK-API .

Kamera

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

Verbesserungen des Datenschutzes des Kamera-Frameworks

Android 10 führt Datenschutzverbesserungen im Kamera-Framework ein. Um zu vermeiden, dass potenziell vertrauliche statische Kamerainformationen in CameraCharacteristics ohne Zustimmung des Benutzers offengelegt werden, müssen Apps die CAMERA Berechtigung zum Abrufen statischer Metadaten mit einem datenschutzrelevanten Tag mithilfe der Methode getCameraCharacteristics erhalten.

Um eine Liste der Kameramerkmalsschlüssel zu erhalten, die die CAMERA Berechtigung erfordern, rufen Sie die Methode getKeysNeedingPermission auf.

Abfrage zur Sitzungsneukonfiguration

Android 10 fügt eine Abfragefunktion zur Sitzungsneukonfiguration hinzu, die eine verbesserte Leistung durch mehr Kontrolle über die interne Sitzungsparameter-Neukonfigurationslogik ermöglicht.

Kamera-HAL3-Pufferverwaltungs-APIs

Android 10 führt optionale Kamera-HAL3-Pufferverwaltungs-APIs ein, die es Ihnen ermöglichen, Pufferverwaltungslogik zu implementieren, um unterschiedliche Speicher- und Erfassungslatenz-Kompromisse in Kamera-HAL-Implementierungen zu erreichen.

Kamera HAL dynamischer physischer Kameraschalter

Android 10 führt ein dynamisches Metadaten-Tag ein, ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID , das die aktive zugrunde liegende physische Kamera eines logischen Kamerageräts angibt. Weitere Informationen finden Sie unter Multi-Kamera-Unterstützung .

Unterstützung für das Ausblenden physischer Kameras

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

Camera2 VNDK-API

In Android 10 können Anbietermodule über zwei neue Standard-HIDL-Schnittstellen, android.frameworks.cameraservice.service@2.0 und android.frameworks.cameraservice.device@2.0 , auf Kamerageräte zugreifen und diese steuern. Um die Nutzung der HIDL-Schnittstellen komfortabler zu gestalten, führt Android 10 außerdem eine vom Hersteller verfügbare Bibliothek ein, libcamera2_vendor . Diese Bibliothek ähnelt mit einigen geringfügigen Änderungen der Camera NDK-Bibliothek .

Stream-Konfigurationen

Android 10 fügt Funktionen hinzu, die es Kameraherstellern ermöglichen, Kamera-Clients empfohlene Kamera-Streams anzukündigen und eine API zum Abfragen von Stream-Kombinationen zu unterstützen.

Anforderungen an die Kamera-Stream-Kombination

Geräte mit Android 10 müssen Stream-Kombinationen mit physischen Subkamera-Streams nicht mehr unterstützen. Allerdings müssen Geräte, auf denen Android 10 mit der Kamera-HAL-Geräteversion 3.5 ausgeführt wird isStreamCombinationSupported() unterstützen, damit Apps abfragen können, ob eine Stream-Kombination mit physischen Streams unterstützt wird.

Weitere Informationen finden Sie unter Multi-Kamera-Unterstützung .

HEIF-Bildgebung

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

Monochrome Kameras

Android 10 bietet zusätzliche Unterstützung für das Y8-Stream-Format, statische Metadaten für Monochrom- und Nahinfrarot-Farbfilter-Arrays (NIR) sowie DngCreator Funktionen für Monochrom-Kameras .

Konnektivität

Anrufen und Nachrichten senden

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 mithilfe von Notrufnummern auslösen, die von einer Quelle wie einer SIM-Karte, dem Netzwerksignal oder der Android-Datenbank abgerufen werden. Nummern können nach Notdienstkategorien wie Polizei, Feuerwehr und Krankenwagen kategorisiert werden.

Gruppenaufruf-APIs

Die Gruppenaufruf-APIs sind eine Erweiterung der in Android 9 hinzugefügten eMBMS-APIs. Die neuen APIs definieren einen Standard für Apps, die durch Interaktion mit eMBMS-Middleware-Paketen an Cell-Broadcast-Gruppenaufrufen teilnehmen und diese übertragen können. Gruppenanrufe erfordern die Unterstützung des Chipsatz-Anbieters, des Middleware-Anbieters und des Mobilfunkanbieters, um ordnungsgemäß zu funktionieren. Die Entwicklerdokumentation finden Sie unter Developer.google.com .

Remote-SIM-Funktionen

Android 10 führt Remote-SIM-Funktionen ein, die es Messaging-Apps auf einem Android-Hostgerät ermöglichen, SMS-Nachrichten über Telefone mithilfe von Mechanismen wie Bluetooth zu senden. Weitere Informationen finden Sie in der Referenzdokumentation zur getSubscriptionType Methode und zur SUBSCRIPTION_TYPE_REMOTE_SIM Konstante.

Mehrere eSIMs

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

eSIM-Updates

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

5G Non-Standalone (NSA)

Android 10 bietet Unterstützung für 5G Non-Standalone (NSA) . 5G NSA ist eine Lösung für 5G-Netzwerke, bei der das Netzwerk durch eine bestehende 4G-Infrastruktur unterstützt wird. Unter Android 10 können Geräte ein 5G-Symbol in der Statusleiste anzeigen, wenn ein Gerät eine Verbindung zu einem 5G-Netzwerk herstellt.

Vorschlag für ein Telefonkonto

Mit Android 10 wird der Vorschlagsdienst für Telefonkonten eingeführt, mit dem Benutzern beim Tätigen eines Anrufs Vorschläge für Telefonkonten angezeigt werden können.

Träger

Migrieren Sie die Mobilfunknetzeinstellungen

Android 10 hat den UI-Code für die Mobilfunknetzeinstellungen neu strukturiert und vom Telefoniestapel in den Einstellungsstapel verschoben. Um den migrierten Code zu unterstützen, ändern Sie die folgenden Konfigurationswerte für die Mobilfunknetzeinstellungen von Android-Ressourcen in 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ätekennungen

Permanente Gerätekennungen (IMEI/MEID, IMSI und Build-Seriennummer) werden durch eine privilegierte Berechtigung geschützt, wobei der Zugriff auch Geräte- und Profilbesitzer-Apps gewährt wird. Da die IMSI- und SIM-Seriennummer vom Netzbetreiber bereitgestellt werden, wird der Zugriff auf diese Kennungen Paketen mit Netzbetreiberprivilegien gewährt.

W-lan

Netzwerkauswahl

Android bewertet kontinuierlich die Qualität des verbundenen Netzwerks und bewertet die Qualität der verfügbaren Netzwerke. Android 10 verfügt über aktualisierte Algorithmen und Verfahren zum Auswählen und Wechseln zwischen Wi-Fi-Netzwerken .

Wi-Fi-bevorzugtes Netzwerk-Offload-Scannen

Android 10 führt in WifiManager eine optionale API-Methode namens setDeviceMobilityState() ein, die das Intervall zwischen Preferred Network Offload (PNO) -Scans verlängert, wenn das Gerät stationär ist, um den Stromverbrauch zu reduzieren.

Mobilfunkanbieter-WLAN

In Android 10 stellen Geräte mit der WLAN-Funktion des Mobilfunkanbieters automatisch eine Verbindung zu konfigurierten WLAN-Netzwerken des Mobilfunkanbieters her (Netzwerke mit Public-Key-Zertifikaten).

Wi-Fi Easy Connect

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

WLAN-Modus mit geringer Latenz

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

Aktualisierter DHCP-Server

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

Zur Implementierung dieser Änderung sind keine Maßnahmen erforderlich: Alle Geräte, die Android 10 veröffentlichen und auf Android 10 aktualisieren, verwenden standardmäßig DhcpServer . Wenn Sie Anpassungen am DHCP-Server vorgenommen haben, können Sie zum Android 9-Verhalten zurückkehren, indem Sie die globale Einstellung tether_enable_legacy_dhcp_server=1 festlegen. Der neue DhcpServer ist im Netzwerkkomponentenmodul enthalten, sodass jede Anpassung der DHCP-Serverfunktionalität vorab erfolgen sollte.

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 einen besseren Datenschutz und Robustheit gegen bekannte Angriffe zu gewährleisten.

Wi-Fi Direct

Mit Wi-Fi Direct , auch bekannt als Wi-Fi P2P, können unterstützende Geräte mithilfe des Wi-Fi Direct-Protokolls ohne Internet- oder Mobilfunknetzzugriff direkt einander erkennen und eine Verbindung zueinander herstellen.

Verbesserungen der MAC-Randomisierung

Ab Android 10 ist die MAC-Randomisierung standardmäßig für den Client-Modus, SoftAp und Wi-Fi Direct aktiviert. Geräte müssen eine Option zum Aktivieren oder Deaktivieren der MAC-Randomisierung für jede SSID in der Systembenutzeroberfläche bieten.

Passpunkt R2

Android 10 führt Unterstützung für Passpoint R2-Funktionen ein. Passpoint R2 implementiert die Online-Anmeldung (OSU), eine Standardmethode zur Bereitstellung neuer Passpoint-Profile. Android 10 unterstützt die Bereitstellung von EAP-TTLS-Profilen mithilfe von SOAP-XML.

NFC

Sicheres NFC

Secure NFC ermöglicht die Aktivierung der Off-Host-NFC-Kartenemulation nur, wenn der Bildschirm des Geräts entsperrt ist. Durch die Implementierung dieser Funktion haben Benutzer die Möglichkeit, Secure NFC für mehr Sicherheit zu aktivieren.

Android Beam veraltet

In Android 10 ist Android Beam nicht mehr erforderlich und die folgenden Schnittstellen und Methoden sind veraltet.

Schnittstellen:

Methoden:

Um Android Beam zu verwenden, melden Sie die Funktionskonstante android.sofware.nfc.beam .

Grafik

ASurfaceControl

Android 10 fügt ASurfaceControl hinzu, eine neue Möglichkeit für SurfaceFlinger , Puffer zu akzeptieren.

Grafische Umsetzung

OpenGL ES-Ebenen

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

EGL 1.5

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

Vulkan

Android 10 bietet Unterstützung für Vulkan 1.1-Grafiken. Die Plattform unterstützt auch VK_KHR_swapchain v70, sodass die Vulkan-App ein VkImage erstellen kann, das durch Swapchain-Speicher unterstützt wird.

Aktualisierungsrate der Leistung

Android 10 bietet Unterstützung für eine Leistungsaktualisierungsrate. Diese Funktion ist standardmäßig deaktiviert.

Interaktion

Automobil

Automotive-Audio

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

Gestenische Navigation

Android 10 führt eine Option für eine vollständig gestische Systemnavigation ein. Informationen zum Vorbereiten von Apps für die Verwendung dieser Funktion finden Sie auf der Seite „Gestische Navigation“ auf der Android-Entwicklerseite.

Neuronale Netze

Android 10 führt Updates für die Neural Networks API und die Neural Networks HAL ein. Eine Zusammenfassung der Änderungen finden Sie unter Neuronale Netze .

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

Sensoren

Sensoren HAL 2.0

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

Sensoren aus

Android 10 enthält eine Entwicklereinstellung zum Abschalten aller Sensoren auf einem Gerät. Diese Funktion hilft Entwicklern, die Funktionalität ihrer App in Situationen zu testen, in denen diese Sensoren nicht verfügbar sind, und gibt Benutzern außerdem die Möglichkeit, die Sensoren in ihrem Gerät zu steuern.

Wenn Ihre Geräte die Standardimplementierung von SensorService , CameraService und AudioPolicyService verwenden, ist keine zusätzliche Anpassung des Referenzdesigns erforderlich. Wenn Sie über andere Sensoren verfügen, finden Sie unter „Anpassung“ weitere Einzelheiten zur Unterstützung dieser Funktion.

Medien

Aktualisierbare Medienkomponenten

Android 10 bietet aktualisierbare Medienkomponenten , die die Aktualisierung medienbezogener modularer Systemkomponenten über die Google Play Store-Infrastruktur oder über einen von Partnern bereitgestellten Over-the-Air-Mechanismus (OTA) ermöglichen.

Medien-DRM

Android 10 verbessert den Nutzen und die Benutzerfreundlichkeit der MediaDrm Java- und NDK-APIs.

Dekodierung

Android 10 unterstützt die AV1 SW-Dekodierung.

Berechtigungen

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

Kontaktanbieter und Informationen zu Affinitäten

Ab Android 10 erfolgt der Zugriff auf kontaktaffinitätsbezogene Daten, die von der Kontaktanbieterkomponente verwaltet werden, anders als in Android 9 und niedriger. Diese Änderungen hinsichtlich der Datenzugänglichkeit verbessern den Datenschutz der Benutzer auf allen Android 10-Geräten, die die Komponente „Kontaktanbieter“ verwenden. Die zugrunde liegende Datenbank enthält keine Kontaktaffinitätsdaten mehr. Daher können Apps nicht darauf schreiben oder davon lesen.

Die Änderungen in Android 10 werden voraussichtlich große Auswirkungen auf APIs haben. Wenn Ihre Apps auf den veralteten Funktionen basieren, die in den Kontaktanbieter- und Affinitätsinformationen erwähnt werden, möchten Sie möglicherweise Ihre Apps aktualisieren, um etwaige Änderungen auszugleichen. Wenn Sie außerdem eine abgespaltene Version des Kontaktanbieters verwenden, müssen Sie Ihren Kontaktanbieter aktualisieren.

Tristate-Standortberechtigungen

Tristate-Standortberechtigungen in Android 10 geben Benutzern mehr Kontrolle darüber, wie Apps auf ihre Gerätestandorte zugreifen.

Erinnerung an den Standortzugriff im Hintergrund

Android 10 verfügt über eine Hintergrundzugriffs-Standorterinnerung , die die Transparenz darüber erhöht, wie viel Zugriff Apps auf den Standort eines Geräts haben, und Benutzern dabei hilft, die Kontrolle über diesen Zugriff zu behalten.

Beschränken Sie opportunistische Standorte

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

Hintergrund-Apps werden gestartet

In Android 10 können sich nichtprivilegierte Apps ohne sichtbares Fenster nicht automatisch im Vordergrund starten. Diese Änderung unterdrückt Werbe-Popups und böswillige Übernahmen. Es sind keine Maßnahmen erforderlich, um dies zu aktivieren.

App-Sandboxing

In Android 10 verfügen Apps über 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, wie sie von allen anwendbaren Methoden wie Context.getExternalFilesDir() zurückgegeben werden. Apps haben weiterhin vollen Rohzugriff auf ihre paketspezifischen Pfade.

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

Beschränken Sie den Zugriff auf die App-Zwischenablage

In Android 10 hat sich der Zugriff auf die Zwischenablage geändert, sodass der Inhalt der Zwischenablage nicht durch Aufrufen ClipboardManager.getPrimaryClip oder durch Hinzufügen eines onPrimaryClipChangedListener Listeners zur Benachrichtigung bei Änderungen der Zwischenablage überwacht werden kann. Dies erhöht die Privatsphäre der Benutzer und verhindert, dass Malvertizing-Apps die Zwischenablage ändern.

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

Zu den Laufzeitberechtigungen gehört die Aktivitätserkennung

Benutzern wird jetzt ein Aktivitätserkennungsdialogfeld angezeigt, wenn eine App im Hintergrund auf den Gerätestandort zugreift. Stark eingeschränkte Laufzeitberechtigungen müssen in Android 10 ordnungsgemäß auf die Whitelist gesetzt werden.

MANAGE_DEVICE_ADMINS-Berechtigung

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

Teilen von API-Verbesserungen

Android 10 bietet eine Reihe neuer Android-Plattform-API-Funktionen im Zusammenhang mit der Freigabe . Wenn Sie den Share Sheet-Code in Ihrer Implementierung geändert haben, stellen Sie sicher, 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

Die Signed Config- Funktion ermöglicht das Einbetten der Konfiguration von Nicht-SDK-Schnittstelleneinschränkungen in APKs. Dies ermöglicht das Entfernen bestimmter Nicht-SDK-Schnittstellen von der Blacklist, sodass AndroidX sie sicher verwenden kann. Mit dieser Änderung kann AndroidX Unterstützung für neue Funktionen auf älteren Android-Versionen hinzufügen.

Leistung

Cgroup-Abstraktionsschicht

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

Low Memory Killer Daemon (lmkd)

Android 10 unterstützt einen neuen lmkd Modus , der PSI-Monitore (Kernel Pressure Stall Information) zur Speicherdruckerkennung verwendet.

Leistung

Plattform-Energieverwaltung

In Android 10 kann der Doze-Modus sowohl auf Always-on-Geräten als auch auf batteriebetriebenen Geräten aktiviert werden.

Routinemäßiger Batteriesparmodus

Android 10 führt eine neue Zeitplanoption für den Batteriesparmodus namens „Routinebasiert“ ein. Der routinemäßige Batteriesparmodus ermöglicht es einer vom OEM ausgewählten App, Signale an das System für eine intelligentere Batteriesparplanung zu senden. Diese Option erfordert eine Konfiguration und kann optional implementiert werden.

Leistungsstatistiken HAL

In Android 10 ersetzt IPowerStats.hal die Power Statistics Collection APIs in IPower.hal . Während die Power HAL die APIs immer noch unterstützt, werden sie in Zukunft ausschließlich in die Leistungsstatistiken HAL migriert.

Die Power-Statistiken HAL enthält neue APIs, um die Erfassung von Daten aus der Leistungsmessung von On-Device-Leistungen für unterstützte Geräte zu unterstützen. Die vorhandenen APIs zur Sammlung von Leistungsstatistiken werden ebenfalls aktualisiert, um die Flexibilität zu verbessern. Die Macht, die APIs in Kraft zu setzen, bleibt HAL in Macht und ändert sich nicht.

Wärmeleitminderung

Das thermische Gerüst in Android 10 Abstracts -Gerätegrenzflächen für den thermischen Subsystem -Temperatursensor, einschließlich CPU, GPU, Batterie, Haut und Kühlvorrichtung. Das Framework führt eine Umfrageberechnung ein, um den thermischen Status zu befragen, um das Drossel zu initiieren, und eine Rückrufschnittstelle, um eine Nachricht an den Benutzer zu senden, wenn ein Schwellenwert überschritten wird.

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

Apps addieren und entfernen die Hörer und Zugriff auf Temperaturstatus in der PowerManager -Klasse. Nur ein vertrauenswürdiger Systemdienst wie eine Android -API oder eine API Hersteller von Geräten kann auf Informationen zu den 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 Rahmens zu ermöglichen.

Für ein Beispiel für eine thermische Minderungsimplementierung siehe Referenzimplementierung .

Aktualisierung

Apex -Dateiformat

Android Pony Express (Apex) ist ein neues Containerformat, das im Installationsfluss für modulare Systemkomponenten verwendet wird.

Dynamische Partitionen

Dynamische Partitionen führen Android ein UserSpace -Partitionierungssystem ein, sodass Partitionen während der OTA -Updates erstellt, geändert oder zerstört werden können. Gerätehersteller müssen sich keine Sorgen um die einzelnen Größen von Partitionen wie system , vendor und product machen. Stattdessen wird eine große super -Partition zugewiesen, und die Unterteile können dynamisch in ihr dynamisch dimensioniert werden.

Dynamische Systemaktualisierungen

Mit Dynamic System Updates (DSU) können Sie ein Android -Systembild erstellen, das Benutzer aus dem Internet herunterladen und ausprobieren können, ohne das aktuelle Systembild zu korrumpieren.

Multiuser -Backup und Wiederherstellung

Android 10 unterstützt die Sicherungs- und Wiederherstellung der Funktionen für alle Benutzer auf einem Gerät. Zuvor war Backup und Wiederherstellung nur für den Systembenutzer verfügbar. Sicherung und Wiederherstellung für Nichtsystembenutzer wird standardmäßig ausgeschaltet, da sie nur eine teilweise Abdeckung für Einstellungen, Tapeten und Systemkomponenten enthält.

Overlayfs

Benutzer, die mit userdebug oder eng -Builds arbeiten, erwarten, die Systempartition effizient als Leseschreiber neu zu renovieren und dann eine beliebige Anzahl von Dateien hinzuzufügen oder zu ändern, ohne das Systembild zu reflaschen. Sie können Overlayfs verwenden, das automatisch den Sicherungsspeicher für ein beschreibbares Dateisystem als obere Referenz einrichtet und über den unteren montiert wird. Diese Maßnahmen erfolgen in den Anfragen adb disable-verity und adb remount . Weitere Informationen finden Sie in der Overlayfs Readme in AOSP.

Unterstützung der gemeinsamen Bibliothek im Wiederherstellungsmodus

In Android 10 sind in der Wiederherstellungspartition freigegebene Bibliotheken verfügbar, wodurch alle ausführbaren Wiederherstellungsmodus statisch sind. Die gemeinsam genutzten Bibliotheken befinden sich im Verzeichnis /system/lib (OR /system/lib64 für 64-Bit-Geräte) in der Partition.

Um der Wiederherstellungspartition eine neue gemeinsame Bibliothek hinzuzufügen, fügen Sie recovery_available: true oder recovery: true Android.bp der gemeinsam genutzten Bibliothek hinzu. Ersteres installiert die Bibliothek sowohl auf System- als auch Wiederherstellungspartitionen, während letztere sie nur an der Wiederherstellungspartition installiert.

Der Shared Library-Support kann nicht mit Androids Made-basiertem Build-System erstellt werden. Um eine vorhandene statische ausführbare Datei für den Wiederherstellungsmodus in eine dynamische Umwandlung zu konvertieren, entfernen Sie LOCAL_FORCE_STATIC_EXECUTABLE := true in Android.mk oder static_executable: true (in Android.bp ).

Benutzerdatenkontrollpunkt (UDC)

Android 10 führt die UDC-Funktion (User Data Checkpoint) vor, mit der Android in den vorherigen Status zurückkehren kann, wenn ein Android Over-the-Air-Update (OTA) fehlschlägt.