Notes de version d'Android 10

Cette page récapitule les principales fonctionnalités de la version Android 10 et fournit des liens vers des informations supplémentaires. Ces résumés de fonctionnalités sont organisés en fonction de l'emplacement de la documentation de la fonctionnalité sur ce site.

Créer

java_sdk_library

Android 10 introduit java_sdk_library, une nouvelle règle de compilation permettant de résoudre les problèmes de compatibilité des bibliothèques Java partagées. Les fabricants d'appareils peuvent utiliser ce mécanisme pour leurs propres bibliothèques Java partagées afin de maintenir la rétrocompatibilité de leurs API.

Architecture

Composants du système modulaire

Android 10 modularise certains composants du système Android et permet leur mise à jour en dehors du cycle normal de publication d'Android. Voici quelques exemples de modules :

Couche d'abstraction matérielle (HAL)

Android 10 permet aux HAL de s'arrêter automatiquement lorsqu'elles n'ont plus de clients.

Noyau

ABI

Android 10 inclut la prise en charge de nouveaux utilitaires de surveillance de l'ABI pour vous aider à comparer, suivre et atténuer les modifications de l'ABI du noyau qui affectent la compatibilité avec les modules du noyau.

Android 10 introduit également un vérificateur d'utilisation de l'ABI basé sur des symboles. Le vérificateur peut détecter les binaires prédéfinis obsolètes au moment de la compilation, afin que les développeurs de bibliothèques partagées puissent savoir quels binaires prédéfinis peuvent être corrompus par leur modification et quels binaires prédéfinis doivent être recompilés.

Daemon Live-Lock Android

Android 10 inclut le daemon Android Live-Lock (llkd), qui est conçu pour détecter et atténuer les blocages du noyau.

vDSO32 sur ARM64

Android 10 est compatible avec l'utilisation de vDSO32 sur les noyaux 64 bits, ce qui permet d'améliorer l'autonomie de la batterie de 0,4 % et d'améliorer les performances.

Entrées fstab pour les partitions montées de manière anticipée

Android 10 exige que les appareils spécifient des entrées fstab pour les partitions montées tôt à l'aide d'un fichier fstab dans le ramdisk de première étape.

HIDL

Décharger BroadcastQueue

Android 10 inclut une nouvelle décharge BroadcastQueue aux files d'attente arrière-plan et premier plan existantes. La file d'attente de déchargement a le même comportement de priorité et de délai d'expiration que la file d'attente en arrière-plan. Pour éviter de bloquer la file d'attente en arrière-plan, où des diffusions plus intéressantes ou visibles par l'utilisateur peuvent avoir lieu, la file d'attente de déchargement gère la diffusion BOOT_COMPLETED, que de nombreuses applications écoutent et qui peut prendre beaucoup de temps. La file d'attente de déchargement ne gère actuellement que la diffusion BOOT_COMPLETED, mais elle peut potentiellement gérer d'autres diffusions longues.

Service SystemSuspend

Android 10 remplace le thread dans libsuspend responsable du lancement de la suspension du système par le service HIDL SystemSuspend. Cette implémentation offre des fonctionnalités équivalentes aux versions précédentes tout en tirant parti des avantages de l'infrastructure Android HIDL.

safe_union dans HIDL

Android 10 introduit safe_union, un type d'union explicitement tagué, dans HIDL.

Configuration

HAL ConfigStore

Android 10 abandonne la HAL ConfigStore en raison de sa forte consommation de mémoire et de sa difficulté d'utilisation, et la remplace par des propriétés système.

API de schéma de fichier de configuration

La plate-forme Android contient un grand nombre de fichiers XML pour stocker les données de configuration. La plupart des fichiers XML se trouvent dans la partition vendor, mais ils sont lus dans la partition system. Dans ce cas, le schéma du fichier XML sert d'interface entre les deux partitions. Il doit donc être spécifié de manière explicite et évoluer de manière rétrocompatible. Avant Android 10, la plate-forme ne fournissait pas de mécanismes permettant d'exiger la spécification et l'utilisation du schéma XML, ni d'empêcher les modifications incompatibles dans le schéma. Android 10 fournit ce mécanisme, appelé API de schéma de fichier de configuration.

Propriétés système en tant qu'API

Les propriétés système accessibles dans les partitions sont schématisées dans des fichiers de description sysprop, et les API permettant d'accéder aux propriétés sont générées sous forme de fonctions concrètes pour C++ et de classes pour Java.

Objet de l'interface du fournisseur (VINTF)

VINTF

Voici les modifications apportées à VINTF dans Android 10 :

  • Abandon des tags de version AVB
  • Ajout d'informations sur le noyau dans les packages OTA
  • Créer officiellement des fichiers manifestes ODM
  • Ajouter une matrice de compatibilité des produits
  • Associer une entrée de fichier manifeste à un module HAL dans le système de compilation

Bootloader (chargeur d'amorçage)

Ramdisk

Dans Android 10, le système de fichiers racine n'est plus inclus dans ramdisk.img, mais est fusionné dans system.img.

Créer des partitions ODM

Android 10 permet de créer des partitions odm à l'aide du système de compilation Android. Vous pouvez utiliser une partition /odm distincte pour les personnalisations, ce qui vous permet d'utiliser une seule image de fournisseur pour plusieurs SKU matériels. Cela permet aux fabricants de conception d'origine (ODM) de personnaliser les packages de support de carte (BSP) des fournisseurs de systèmes sur une puce (SoC) pour leurs appareils spécifiques (leurs cartes). Ils peuvent implémenter des modules de noyau pour des composants spécifiques à la carte, des daemons spécifiques à la carte ou leurs propres fonctionnalités sur les couches d'abstraction matérielle (HAL). Ils peuvent également remplacer ou personnaliser les composants du SoC.

Gestion des versions de l'en-tête de l'image de démarrage

Android 10 met à jour l'en-tête de l'image de démarrage vers la version 2, qui inclut une section permettant de stocker l'image blob de l'arborescence des périphériques (DTB). Les tests VTS Android 10 vérifient que tous les appareils lancés avec Android 10 utilisent la version 2 de l'en-tête de l'image de démarrage et incluent une image DTB valide dans les images de démarrage/récupération.

Images de récupération pour les appareils non A/B

Dans Android 9 et versions ultérieures, l'image de récupération d'un appareil doit contenir des informations provenant de l'image de superposition. Les fabricants d'appareils peuvent utiliser DeviceTree ou l'interface avancée de configuration et de gestion de l'alimentation (ACPI) pour décrire tous les appareils non détectables. Android 10 et versions ultérieures sont compatibles avec les architectures qui utilisent ACPI au lieu du blob DeviceTree pour la superposition (DTBO).

AILD stable

Android 10 ajoute la prise en charge du langage de définition d'interface Android (AIDL) stable, une nouvelle façon de suivre l'interface de programmation d'application (API)/l'interface binaire d'application (ABI) fournie par les interfaces AIDL.

Déplacer fastboot vers l'espace utilisateur

Android 10 ajoute la prise en charge des partitions redimensionnables en déplaçant l'implémentation fastboot du bootloader vers l'espace utilisateur.

Écran

Lecture de vidéos HDR

Android 10 est compatible avec la lecture HDR10, VP9 et HDR10+.

Classification de texte

La classification de texte utilise des techniques de machine learning pour aider les développeurs à classer du texte. Android 10 introduit deux méthodes dans l'API TextClassifier : suggestConversationActions et detectLanguage. La méthode suggestConversationActions génère des suggestions de réponses et d'actions à partir d'une conversation donnée, et la méthode detectLanguage détecte la langue du texte.

Prise en charge du rendu de la police Zawgyi

Zawgyi est la police la plus populaire au Myanmar. Android 9 et les versions antérieures n'étaient pas compatibles avec l'affichage de Zawgyi, car elle n'est pas conforme à Unicode. Android 10 résout ce problème en incluant une police Unicode capable d'afficher à la fois le birman Unicode et le zawgyi. Aucun travail d'implémentation n'est nécessaire pour prendre en charge le rendu de la police Zawgyi sur les appareils lancés avec Android 10. Si vos appareils disposent d'une implémentation personnalisée pour prendre en charge Zawgyi, vous pouvez :

  • Annulez ces modifications et utilisez la méthode compatible avec la plate-forme.
  • Conservez la police Zawgyi courante dans votre système et utilisez le code de langue my-qaag dans votre fonts.xml. Pour en savoir plus, consultez les notes de version Unicode CLDR sur Zawgyi (Qaag).

Limites applicables au masquage des icônes d'applications

Android 10 limite la possibilité pour les applications de masquer leurs icônes du lanceur d'applications. Si une application n'a pas d'activité de lanceur d'applis activée, le système affiche une activité synthétisée dans le lanceur d'applis. Cette activité synthétisée représente la page d'informations de l'application dans les paramètres système.

Pour en savoir plus sur la logique utilisée pour afficher les icônes d'application, y compris les types d'applications dont les icônes ne sont pas affichées, consultez la documentation getActivityList() dans la documentation de référence de l'API.

Paramètres

Pour améliorer l'accessibilité, Android 10 inclut des paramètres de délai d'inactivité personnalisables par l'utilisateur. Les modifications apportées à l'API et aux paramètres sont incluses dans Android 10. Si vous personnalisez vos paramètres, assurez-vous que cette fonctionnalité est prise en charge. Si des éléments d'interface utilisateur expirent sur votre appareil, utilisez l'API Timeouts sur ceux-ci. Pour en savoir plus, consultez les Consignes d'accessibilité pour les développeurs Android.

Compatibilité

Document de définition de compatibilité Android (CDD)

Le document de définition de compatibilité d'Android 10 s'appuie sur les versions précédentes en ajoutant de nouvelles fonctionnalités et en modifiant les exigences pour les fonctionnalités déjà disponibles.

Tests

La suite de tests de compatibilité

Le CTS Android dispose d'une page de notes de version distincte qui liste de nombreuses modifications importantes pour Android 10.

Téléchargements CTS

Les packages CTS compatibles avec Android 10 sont disponibles sur la page Téléchargements CTS. Le code source des tests inclus peut être synchronisé avec le tag android-cts-10_r1 dans l'arborescence Open Source.

CTS shim APEX

Android 10 introduit un package appelé CtsShimApex, qui doit être préinstallé sur un appareil pour écrire des tests CTS pour la gestion APEX.

Mode Atelier de test

Le mode test harness CTS aide les développeurs à automatiser les tests pour un appareil ou un parc d'appareils.

Mode Applis instantanées

À partir d'Android 10, le CTS s'exécute en mode Applis instantanées, ce qui signifie qu'il installe l'APK de test en tant qu'appli instantanée et exécute les tests.

En plus d'un mode CTS pour les applis instantanées, Android 10 inclut CTS Verifier pour les applis instantanées.

Test audio professionnel du vérificateur CTS

Android 10 ajoute un test CTS Verifier pour la conformité Pro Audio.

Tests MIDI du vérificateur CTS

Dans Android 10, le test MIDI CTS Verifier teste la fonctionnalité MIDI avec des interfaces MIDI USB, des interfaces MIDI Bluetooth et un chemin d'appareil MIDI virtuel.

Interprétation des tests CTS

Android 10 met à jour le mécanisme d'interprétation des résultats CTS.

Vendor Test Suite (VTS)

Tests VTS avec ramdisk de débogage

Dans Android 10, l'image système générique (GSI) utilisée pour exécuter les tests de conformité CTS-on-GSI/VTS passe du type de compilation userdebug au type de compilation user, car la GSI est signée pour la version. Toutefois, la commande adb root qui accorde des autorisations root à l'hôte sur l'appareil Android testé n'est pas disponible dans un build utilisateur. C'est un problème, car VTS nécessite adb root pour s'exécuter.

Le debug ramdisk est introduit pour rendre adb root possible, si l'appareil est déverrouillé. Cela simplifie le flux de test en réutilisant la même version utilisateur system.img (GSI ou system.img de l'OEM).

Validation du compositeur matériel

Android 10 ajoute une nouvelle classe de test VTS pour la validation du compositeur matériel via l'interface readback dans IComposerClient.hal. Si les fournisseurs n'implémentent pas readback, les tests sont automatiquement réussis.

Débogage

Charger des bibliothèques partagées avec différents chargeurs de classe

Dans Android 9 et versions antérieures, les applications chargeaient leurs bibliothèques partagées Java associées dans le chargeur de classe de l'application. Dans Android 10, le framework utilise un chargeur de classe différent de celui de l'application pour charger les bibliothèques partagées Java liées via uses-library ou uses-static-library.

En général, les applications ne doivent pas s'appuyer sur l'utilisation d'un chargeur de classe spécifique. Par conséquent, ce changement ne devrait pas perturber le comportement des applications. Toutefois, si une application repose sur l'utilisation d'un seul chargeur de classe, ce comportement est interrompu. De plus, la visibilité package-private des classes dans le même package est toujours acceptée, mais pas dans les bibliothèques partagées.

Les fabricants d'appareils peuvent rencontrer des problèmes de compatibilité des applications lorsqu'ils testent leurs appareils exécutant Android 10.

Fonctionnalités de sécurité

Pour obtenir une liste plus complète des améliorations liées à la sécurité et à la confidentialité uniquement, consultez la page Améliorations de la sécurité et de la confidentialité dans Android 10.

Authentification faciale

L'authentification faciale permet aux utilisateurs de déverrouiller leur appareil en regardant simplement la face avant. Android 10 ajoute la prise en charge d'une nouvelle pile d'authentification faciale qui peut traiter les frames de la caméra de manière sécurisée, en préservant la sécurité et la confidentialité lors de l'authentification faciale sur le matériel compatible. Android 10 permet également aux implémentations conformes aux exigences de sécurité d'activer facilement l'intégration d'applications pour les transactions telles que les services bancaires en ligne ou d'autres services.

Accès étendu

Les agents de confiance, le mécanisme sous-jacent utilisé par les mécanismes d'authentification tertiaires tels que Smart Lock, ne peuvent prolonger le déverrouillage que dans Android 10. Les agents de confiance ne peuvent plus déverrouiller un appareil verrouillé et ne peuvent le maintenir déverrouillé que pendant quatre heures maximum.

Chiffrement

OEMCrypto

Android 10 utilise la version 15 de l'API OEMCrypto.

Tests

BoundsSanitizer

Android 10 déploie BoundsSanitizer (BoundSan) dans Bluetooth et les codecs. BoundSan utilise le vérificateur de limites d'UBSan. Cette atténuation est activée au niveau de chaque module. Il permet de sécuriser les composants critiques d'Android et ne doit pas être désactivé. BoundSan est activé dans les codecs suivants :

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

Nettoyage des dépassements d'entiers

Android 10 active Integer Overflow Sanitization (IntSan) dans les codecs logiciels. Assurez-vous que les performances de lecture sont acceptables pour tous les codecs non compatibles avec le matériel de l'appareil. IntSan est activé dans les codecs suivants :

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

Mémoire en mode exécution uniquement

Par défaut, les sections de code exécutable pour les binaires système AArch64 sont marquées comme exécutables uniquement (non lisibles) afin de renforcer la protection contre les attaques par réutilisation de code juste à temps. Le code qui mélange les données et le code, ainsi que le code qui inspecte délibérément ces sections (sans remapper d'abord les segments de mémoire comme lisibles) ne fonctionne plus. Les applications dont le SDK cible est Android 10 (niveau d'API 29 ou supérieur) sont concernées si elles tentent de lire des sections de code des bibliothèques système XOM (execute-only memory) activées en mémoire sans d'abord marquer la section comme lisible.

Scudo

Scudo est un allocateur de mémoire dynamique en mode utilisateur conçu pour être plus résistant aux failles liées au tas. Il fournit les primitives d'allocation et de désallocation C standards, ainsi que les primitives C++.

ShadowCallStack

ShadowCallStack (SCS) est un mode d'instrumentation LLVM qui protège contre l'écrasement des adresses de retour (comme les dépassements de tampon de pile) en enregistrant l'adresse de retour d'une fonction dans une instance ShadowCallStack allouée séparément dans le prologue de fonction des fonctions non feuilles et en chargeant l'adresse de retour à partir de l'instance ShadowCallStack dans l'épilogue de fonction.

Audio

HAL audio

Android 10 inclut les nouvelles fonctionnalités suivantes pour audio HAL.

  • AudioSource
  • AudioFormat
  • AudioChannelMask

Des exigences supplémentaires sont ajoutées pour l'implémentation du HAL audio et du sous-système.

Effets de prétraitement

Android fournit des effets de prétraitement, tels que l'annulation de l'écho acoustique, le contrôle automatique du gain et la suppression du bruit. Android 10 inclut de nouvelles exigences pour la capture avec VOICE_COMMUNICATION.

Gestionnaire de règles audio

Android 10 inclut une refactorisation importante du gestionnaire de règles audio pour offrir plus de flexibilité et prendre en charge les cas d'utilisation automobiles complexes.

Audio haute résolution

Android 10 inclut les améliorations suivantes pour l'audio haute résolution.

  • Compatibilité avec les valeurs flottantes
  • Prise en charge de la fréquence de 192 kHz
  • Compatibilité avec huit canaux
  • Inclusion d'informations sur le timing

Capture simultanée

Android 10 améliore l'expérience utilisateur de la capture simultanée, qui nécessite que plusieurs captures audio actives se produisent simultanément.

AudioPlaybackCapture

Android 10 contient une nouvelle API appelée AudioPlaybackCapture, qui permet aux applications de copier l'audio lu par d'autres applications. Cette fonctionnalité est semblable à la capture d'écran, mais pour l'audio. Le principal cas d'utilisation consiste à permettre aux applications de streaming de capturer l'audio lu par les jeux.

L'API Capture n'a pas d'incidence sur la latence de l'application dont l'audio est capturé.

MIDI

Android 10 facilite le portage des applications audio professionnelles utilisant MIDI vers la plate-forme Android à l'aide de l'API NDK AMidi.

Appareil photo

Pour obtenir un récapitulatif des modifications apportées à l'API Appareil photo, à la HAL de l'appareil photo et au module de l'appareil photo dans Android 10, consultez Mises à jour de l'appareil photo dans Android 10.

Améliorations de la confidentialité du framework de l'appareil photo

Android 10 apporte des améliorations en termes de confidentialité au framework de l'appareil photo. Pour éviter d'exposer des informations potentiellement sensibles sur la caméra statique dans CameraCharacteristics sans le consentement de l'utilisateur, les applications doivent obtenir l'autorisation CAMERA pour récupérer les métadonnées statiques avec un tag respectueux de la confidentialité à l'aide de la méthode getCameraCharacteristics.

Pour obtenir la liste des clés de caractéristiques de l'appareil photo qui nécessitent l'autorisation CAMERA, appelez la méthode getKeysNeedingPermission.

Requête de reconfiguration de session

Android 10 ajoute une fonctionnalité de requête de reconfiguration de session, qui permet d'améliorer les performances en offrant un meilleur contrôle sur la logique de reconfiguration des paramètres de session internes.

API de gestion des tampons Camera HAL3

Android 10 introduit des API de gestion des tampons HAL3 de l'appareil photo facultatives qui vous permettent d'implémenter une logique de gestion des tampons pour obtenir différents compromis entre la mémoire et la latence de capture dans les implémentations HAL de l'appareil photo.

Contacteur physique dynamique de l'appareil photo dans la couche HAL de l'appareil photo

Android 10 introduit un tag de métadonnées dynamiques, ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID, qui indique la caméra physique sous-jacente active d'un périphérique de caméra logique. Pour en savoir plus, consultez Compatibilité avec plusieurs caméras.

Prise en charge du masquage des caméras physiques

Dans Android 10, la HAL de l'appareil photo peut réduire le nombre de caméras physiques pouvant être ouvertes directement par une application. Pour en savoir plus, consultez Prise en charge de plusieurs caméras.

API Camera2 VNDK

Dans Android 10, les modules du fournisseur peuvent accéder aux périphériques de caméras et les contrôler via deux nouvelles interfaces HIDL standards, android.frameworks.cameraservice.service@2.0 et android.frameworks.cameraservice.device@2.0. Pour faciliter l'utilisation des interfaces HIDL, Android 10 introduit également une bibliothèque disponible pour les fournisseurs, libcamera2_vendor. Cette bibliothèque est semblable à la bibliothèque Camera NDK, avec quelques modifications mineures.

Configurations de flux

Android 10 ajoute des fonctionnalités qui permettent aux fournisseurs de caméras de faire la publicité des flux de caméras recommandés auprès des clients de caméras et de prendre en charge une API pour interroger les combinaisons de flux.

Conditions requises pour la combinaison de flux de caméras

Les appareils exécutant Android 10 ne sont plus tenus de prendre en charge les combinaisons de flux avec des flux de sous-caméra physiques. Toutefois, les appareils exécutant Android 10 avec la version 3.5 du périphérique HAL de l'appareil photo doivent être compatibles avec isStreamCombinationSupported() pour permettre aux applications de vérifier si une combinaison de flux contenant des flux physiques est prise en charge.

Pour en savoir plus, consultez Compatibilité avec plusieurs caméras.

imagerie HEIF

Android 10 offre une prise en charge native des images au format HEIF (High Efficiency Image File Format), qui offrent une meilleure qualité d'image et une taille plus petite que les images JPEG. Les appareils doivent disposer d'un encodeur HEIC ou HEVC pour être compatibles avec les images HEIF.

Caméras monochromes

Android 10 offre une compatibilité supplémentaire avec le format de flux Y8, les métadonnées statiques du filtre de couleur monochrome et proche infrarouge (NIR), ainsi que les fonctions DngCreator pour les caméras monochromes.

Connectivité

Appels et messages

Numéros d'urgence et appels d'urgence

Android 10 offre une meilleure compatibilité avec les appels d'urgence. En cas d'urgence, les appareils compatibles avec IRadio HAL v1.4 peuvent passer un appel d'urgence à l'aide de numéros d'urgence récupérés à partir d'une source telle qu'une carte SIM, le signal réseau ou la base de données Android. Les numéros peuvent être classés en fonction des catégories de services d'urgence, comme la police, les pompiers et les ambulances.

API d'appel de groupe

Les API d'appel de groupe sont une extension des API eMBMS ajoutées dans Android 9. Les nouvelles API définissent une norme permettant aux applications de rejoindre et de diffuser des appels de groupe par diffusion cellulaire en interagissant avec les packages middleware eMBMS. Pour fonctionner correctement, les appels de groupe nécessitent la prise en charge du fournisseur de chipset, du fournisseur de middleware et de l'opérateur mobile. La documentation pour les développeurs est disponible sur developer.google.com.

Fonctionnalités de carte SIM à distance

Android 10 introduit des fonctionnalités de carte SIM à distance qui permettent aux applications de messagerie sur un appareil hôte Android d'envoyer des SMS via des téléphones à l'aide de mécanismes tels que le Bluetooth. Pour en savoir plus, consultez la documentation de référence sur la méthode getSubscriptionType et la constante SUBSCRIPTION_TYPE_REMOTE_SIM.

Plusieurs eSIM

Dans Android 10, la classe EuiccManager est compatible avec les appareils dotés de plusieurs cartes SIM intégrées (eSIM) ou eUICCs.

Modifications de l'eSIM

Pour les appareils exécutant Android 10 et compatibles avec les eSIM, un tableau d'ID d'emplacement eUICC non amovible doit être défini. Les appareils doivent également être compatibles avec IRadio HAL v1.4 et IRadioConfig HAL v1.2. Pour en savoir plus, consultez Implémenter eSIM et Exigences HAL.

5G Non-Standalone (NSA)

Android 10 est compatible avec la 5G non autonome (NSA). La 5G NSA est une solution pour les réseaux 5G où le réseau est pris en charge par une infrastructure 4G existante. Sur Android 10, les appareils peuvent afficher une icône 5G dans la barre d'état lorsqu'ils se connectent à un réseau 5G.

Suggestion de compte téléphonique

Android 10 introduit le service de suggestion de compte téléphonique, qui permet d'afficher des suggestions de comptes téléphoniques aux utilisateurs lorsqu'ils passent un appel.

Opérateur

Migrer les paramètres du réseau mobile

Android 10 a réarchitecturé le code de l'UI des paramètres réseau mobile et l'a déplacé de la pile Téléphonie vers la pile Paramètres. Pour prendre en charge le code migré, remplacez les valeurs de configuration des paramètres du réseau mobile suivantes, qui proviennent des ressources Android, par des ressources CarrierConfig :

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

Identifiants des appareils

Les identifiants d'appareil persistants (IMEI/MEID, IMSI et numéro de série de la build) sont protégés par une autorisation privilégiée, dont l'accès est également accordé aux applications propriétaires de l'appareil et du profil. Étant donné que l'IMSI et le numéro de série de la carte SIM sont fournis par l'opérateur, l'accès à ces identifiants est accordé aux packages disposant de privilèges d'opérateur.

Wi-Fi

Sélection du réseau

Android évalue en permanence la qualité du réseau connecté et des réseaux disponibles. Android 10 a mis à jour les algorithmes et les procédures pour sélectionner et changer de réseau Wi-Fi.

Recherche de délestage réseau préféré Wi-Fi

Android 10 introduit une méthode d'API facultative nommée setDeviceMobilityState() dans WifiManager, qui augmente l'intervalle entre les analyses Preferred Network Offload (PNO) lorsque l'appareil est immobile afin de réduire la consommation d'énergie.

Wi-Fi de l'opérateur

Dans Android 10, les appareils dotés de la fonctionnalité Wi-Fi de l'opérateur se connectent automatiquement aux réseaux Wi-Fi de l'opérateur configurés (réseaux avec certificats à clé publique).

Wi-Fi Easy Connect

Dans Android 10, les appareils peuvent utiliser Wi-Fi Easy Connect, qui utilise le protocole de provisionnement d'appareil (DPP) introduit par la Wi-Fi Alliance (WFA), pour provisionner et configurer les appareils Wi-Fi.

Mode à faible latence Wi-Fi

Android 10 introduit un mode Wi-Fi à faible latence, qui configure la puce Wi-Fi pour réduire la latence.

Serveur DHCP mis à jour

Dans le cadre de la création d'un groupe de services "Serveur IP", dnsmasq est supprimé. Android 10 remplace l'utilisation fonctionnelle de son serveur DHCPv4 par un composant distinct, principalement écrit en Java pour mieux s'intégrer au plan de contrôle du framework Java. Cela améliore la sécurité et la capacité de mise à jour du serveur DHCP. Pour en savoir plus, consultez packages/modules/NetworkStack/src/android/net/dhcp/DhcpServer.java.

Aucune action n'est requise pour implémenter ce changement : tous les appareils qui sortent et qui passent à Android 10 utilisent DhcpServer par défaut. Si vous avez personnalisé le serveur DHCP, vous pouvez revenir au comportement d'Android 9 en définissant le paramètre global tether_enable_legacy_dhcp_server=1. Le nouveau DhcpServer est inclus dans le module de composants réseau. Toute personnalisation de la fonctionnalité du serveur DHCP doit donc être transmise en amont.

WPA3 et Wi-Fi Enhanced Open

Android 10 est compatible avec les normes de sécurité Wi-Fi Protected Access 3 (WPA3) et Wi-Fi Enhanced Open, qui offrent une meilleure confidentialité et une plus grande robustesse contre les attaques connues.

Wi-Fi Direct

Wi-Fi Direct, également appelé Wi-Fi P2P, permet aux appareils compatibles de se découvrir et de se connecter directement les uns aux autres à l'aide du protocole Wi-Fi Direct, sans accès à Internet ni au réseau mobile.

Améliorations de la sélection aléatoire de l'adresse MAC

À partir d'Android 10, la randomisation MAC est activée par défaut pour le mode client, SoftAp et Wi-Fi Direct. Les appareils doivent fournir une option permettant d'activer ou de désactiver la randomisation de l'adresse MAC pour chaque SSID dans l'UI système.

Passpoint R2

Android 10 est compatible avec les fonctionnalités Passpoint R2. Passpoint R2 implémente l'inscription en ligne (OSU, Online Sign-Up), une méthode standard pour provisionner de nouveaux profils Passpoint. Android 10 est compatible avec le provisionnement des profils EAP-TTLS à l'aide de SOAP-XML.

NFC

Sécuriser la fonctionnalité NFC

La NFC sécurisée permet d'activer l'émulation de carte NFC hors hôte uniquement lorsque l'écran de l'appareil est déverrouillé. L'implémentation de cette fonctionnalité permet aux utilisateurs d'activer le NFC sécurisé pour une sécurité renforcée.

Android Beam obsolète

Dans Android 10, Android Beam n'est plus nécessaire. Les interfaces et méthodes suivantes sont donc obsolètes.

Interfaces :

Méthodes :

Pour utiliser Android Beam, signalez la constante de fonctionnalité android.sofware.nfc.beam.

Graphiques

ASurfaceControl

Android 10 ajoute ASurfaceControl, une nouvelle façon pour SurfaceFlinger d'accepter les tampons.

Implémentation des graphiques

Couches OpenGL ES

Android 10 introduit un système de superposition pour GLES.

EGL 1.5

Android 10 implémente l'interface EGL 1.5. Pour en savoir plus sur les nouvelles fonctionnalités d'EGL 1.5, consultez Khronos Releases EGL 1.5 Specification.

Vulkan

Android 10 est compatible avec les graphiques Vulkan 1.1. La plate-forme est également compatible avec VK_KHR_swapchain v70, ce qui permet à l'application Vulkan de créer un VkImage soutenu par la mémoire de la chaîne d'échange.

Fréquence d'actualisation des performances

Android 10 est compatible avec une fréquence d'actualisation des performances. Cette fonctionnalité est désactivée par défaut.

Interaction

Automobile

Audio automobile

Dans Android 10, le contexte Audio HAL correspond à AudioAttributes.usage pour identifier les sons. Android accepte une instance AUDIO_DEVICE_OUT_BUS par contexte. IAudioControl HAL fournit des extensions spécifiques au véhicule à la couche d'abstraction du matériel audio.

Navigation par gestes

Android 10 introduit une option de navigation système entièrement gestuelle. Pour savoir comment préparer les applications à utiliser cette fonctionnalité, consultez la page Navigation par gestes sur le site Android Developers.

Réseaux de neurones

Android 10 introduit des mises à jour de l'API Neural Networks et de la couche HAL Neural Networks. Pour obtenir un récapitulatif des modifications, consultez Réseaux de neurones.

Nouvelle documentation et documentation mise à jour sur les réseaux de neurones pour Android 10 :

Capteurs

Sensors HAL 2.0

Sensors HAL 2.0 est compatible avec l'utilisation de files d'attente de messages rapides (FMQ) pour envoyer des événements de capteur du HAL au framework Android Sensors.

Capteurs désactivés

Android 10 inclut un paramètre développeur permettant de désactiver tous les capteurs d'un appareil. Cette fonctionnalité aide les développeurs à tester les fonctionnalités de leur application dans les situations où ces capteurs deviennent indisponibles. Elle permet également aux utilisateurs de contrôler les capteurs de leur appareil.

Si vos appareils utilisent l'implémentation par défaut de SensorService, CameraService et AudioPolicyService, aucune personnalisation supplémentaire n'est nécessaire pour la conception de référence. Si vous disposez d'autres capteurs, consultez Personnalisation pour en savoir plus sur la prise en charge de cette fonctionnalité.

Contenus multimédias

Composants multimédias pouvant être mis à jour

Android 10 fournit des composants multimédias pouvant être mis à jour qui permettent de mettre à jour les composants système modulaires liés au multimédia via l'infrastructure du Google Play Store ou via un mécanisme OTA (Over-The-Air) fourni par un partenaire.

Media DRM

Android 10 améliore l'utilité et la facilité d'utilisation des API Java et NDK MediaDrm.

Décodage

Android 10 est compatible avec le décodage logiciel AV1.

Autorisations

Android 10 fournit des configurations d'autorisations supplémentaires pour la transparence et la confidentialité des utilisateurs.

Fournisseur de contacts et informations sur les affinités

À partir d'Android 10, les données liées à l'affinité des contacts, gérées par le composant Contacts Provider, sont accessibles différemment que dans Android 9 et les versions antérieures. Ces modifications concernant l'accessibilité des données améliorent la confidentialité des utilisateurs sur tous les appareils Android 10 qui utilisent le composant Contacts Provider. La base de données sous-jacente ne contient plus de données sur les affinités des contacts. Par conséquent, les applications ne peuvent pas y écrire ni y lire.

Les modifications apportées à Android 10 devraient avoir un impact important sur les API. Si vos applications s'appuient sur les fonctionnalités obsolètes mentionnées dans les informations sur le fournisseur de contacts et les affinités, vous pouvez les mettre à jour pour compenser les modifications. De plus, si vous utilisez une version dérivée du fournisseur de contacts, vous devez mettre à jour votre fournisseur de contacts.

Autorisations d'accéder à la position à trois états

Les autorisations de localisation à trois états dans Android 10 offrent aux utilisateurs un meilleur contrôle sur la façon dont les applications accèdent à la position de leur appareil.

Rappel concernant l'accès à la position en arrière-plan

Android 10 inclut un rappel concernant l'accès à la localisation en arrière-plan, qui permet aux utilisateurs de mieux comprendre le niveau d'accès des applications à la localisation d'un appareil et de mieux contrôler cet accès.

Restreindre les emplacements opportunistes

Lorsqu'une application demande la position d'un appareil, elle peut attendre la réponse à la requête ou obtenir une mise à jour opportuniste de la position en utilisant des écouteurs de position actifs. À partir d'Android 10, pour obtenir des mises à jour de position opportunistes, les développeurs doivent spécifier qu'ils ont besoin de mises à jour de position passives à partir de la classe FusedLocationProviderClient.

Lancement d'applications en arrière-plan

Dans Android 10, les applications non privilégiées sans fenêtre visible ne peuvent pas se lancer automatiquement au premier plan. Cette modification supprime les pop-ups publicitaires et les prises de contrôle malveillantes. Aucune action n'est requise pour activer cette fonctionnalité.

Bac à sable d'application

Dans Android 10, les applications ont une vue brute limitée du système de fichiers, sans accès direct aux chemins d'accès tels que /sdcard/DCIM. Toutefois, les applications conservent un accès brut complet à leurs chemins d'accès spécifiques aux packages, tels qu'ils sont renvoyés par toutes les méthodes applicables, comme Context.getExternalFilesDir(). Les applications ont toujours un accès brut complet à leurs chemins spécifiques aux packages.

Utilisez les consignes relatives au partage de fichiers du bac à sable d'application pour fournir une granularité de partage de données appropriée.

Restreindre l'accès au presse-papiers des applications

Dans Android 10, l'accès au presse-papiers a changé. Il n'est plus possible de surveiller le contenu du presse-papiers en appelant ClipboardManager.getPrimaryClip ni en ajoutant un écouteur onPrimaryClipChangedListener pour recevoir une notification lorsque le presse-papiers change. Cela renforce la confidentialité des utilisateurs et empêche les applications de malvertising de modifier le presse-papiers.

Dans Android 10, l'accès en lecture n'est autorisé qu'à l'application actuelle avec focus sur la saisie ou au clavier actuel. L'appel du listener ClipboardManager.onPrimaryClipChanged() ne se déclenche désormais que pour les applications qui respectent ces restrictions. ClipboardManager.getPrimaryClip et ClipboardManager.getPrimaryClipDescription renvoient null si l'application qui effectue la requête n'est pas l'éditeur de méthode d'entrée (IME) par défaut ou si elle n'a pas le focus sur l'entrée.

Les autorisations d'exécution incluent la reconnaissance de l'activité

Les utilisateurs voient désormais une boîte de dialogue de reconnaissance d'activité lorsqu'une application accède à la localisation de l'appareil en arrière-plan. Les autorisations d'exécution avec restriction stricte doivent être correctement ajoutées à la liste blanche dans Android 10.

Autorisation MANAGE_DEVICE_ADMINS

Android 10 modifie l'autorisation MANAGE_DEVICE_ADMINS, qui passe de "signature ou privilégiée" à "signature uniquement". Cela signifie que seules les applications signées par la plate-forme peuvent définir d'autres applications comme administrateur de l'appareil.

Améliorations apportées à l'API Sharing

Android 10 propose un certain nombre de nouvelles fonctionnalités de l'API de plate-forme Android liées au partage. Si vous avez modifié le code de la feuille de partage dans votre implémentation, assurez-vous que celle-ci est compatible avec ces nouvelles fonctionnalités. Si vous n'avez pas modifié le code de la feuille de partage dans votre implémentation, vous n'avez rien à faire pour prendre en charge ces nouvelles fonctionnalités.

Environnement d'exécution Android Runtime ("ART")

Configuration signée

La fonctionnalité Configuration signée permet d'intégrer la configuration des restrictions d'interface non SDK dans les APK. Cela permet de supprimer des interfaces non SDK spécifiques de la liste noire afin qu'AndroidX puisse les utiliser en toute sécurité. Grâce à cette modification, AndroidX peut ajouter la prise en charge de nouvelles fonctionnalités sur les anciennes versions d'Android.

Performances

Couche d'abstraction Cgroup

Android 10 inclut une couche d'abstraction cgroup et des profils de tâches, que les développeurs peuvent utiliser pour décrire un ensemble de restrictions à appliquer à un thread ou à un processus.

Daemon du tueur de mémoire faible (lmkd)

Android 10 est compatible avec un nouveau mode lmkd qui utilise des moniteurs d'informations sur la pression du noyau (PSI) pour la détection de la pression de la mémoire.

Puissance

Gestion de l'alimentation de la plate-forme

Dans Android 10, le mode Sommeil peut être activé sur les appareils toujours connectés ainsi que sur les appareils fonctionnant sur batterie.

Économiseur de batterie de routine

Android 10 introduit une nouvelle option de programmation de l'économiseur de batterie appelée Basé sur une routine. L'économiseur de batterie de routine permet à une application choisie par l'OEM de fournir des signaux au système pour une planification plus intelligente de l'économiseur de batterie. Cette option nécessite une configuration et est facultative.

HAL des statistiques sur l'état de l'alimentation

Dans Android 10, IPowerStats.hal remplace les API de collecte des statistiques sur l'alimentation dans IPower.hal. Bien que le HAL d'alimentation soit toujours compatible avec les API, elles seront exclusivement migrées vers le HAL des statistiques d'alimentation à l'avenir.

Le HAL des statistiques d'alimentation inclut de nouvelles API permettant de collecter des données à partir de la mesure de la consommation d'énergie sur l'appareil, pour les appareils compatibles. Les API de collecte des statistiques d'alimentation existantes sont également mises à jour pour améliorer la flexibilité. Les API d'indication de puissance restent dans le HAL d'alimentation et ne changent pas.

Atténuation thermique

Le framework thermique d'Android 10 abstrait les interfaces d'appareil pour le capteur de température du sous-système thermique, y compris le processeur, le GPU, la batterie, la peau et le dispositif de refroidissement. Le framework introduit une interface d'interrogation pour interroger l'état thermique afin de lancer la limitation, et une interface de rappel pour envoyer un message à l'utilisateur lorsqu'un seuil est dépassé.

Android 10 fournit les nouveaux types de données via l'interface IThermalService à l'aide de ces trois nouvelles méthodes :

Les applications ajoutent et suppriment des écouteurs, et accèdent à l'état de température dans la classe PowerManager. Seul un service système de confiance, tel qu'une API Android ou une API du fabricant de l'appareil, peut accéder aux informations sur les événements causaux associés. Les fabricants d'appareils ou de SoC doivent implémenter thermal HAL 2.0 pour activer toutes les fonctionnalités du nouveau framework thermique.

Pour obtenir un exemple d'implémentation de l'atténuation thermique, consultez l'implémentation de référence.

Mises à jour

Format de fichier APEX

Android Pony EXpress (APEX) est un nouveau format de conteneur utilisé dans le flux d'installation des composants système modulaires.

Partitions dynamiques

Les partitions dynamiques introduisent un système de partitionnement de l'espace utilisateur dans Android, ce qui permet de créer, redimensionner ou détruire des partitions lors des mises à jour OTA. Les fabricants d'appareils n'ont pas à se soucier de la taille individuelle des partitions, telles que system, vendor et product. Au lieu de cela, une grande partition super est allouée, et les sous-partitions peuvent être dimensionnées de manière dynamique à l'intérieur.

Mises à jour système dynamiques

Les mises à jour système dynamiques (DSU) vous permettent de créer une image système Android que les utilisateurs peuvent télécharger sur Internet et essayer sans risquer de corrompre l'image système actuelle.

Sauvegarde et restauration multi-utilisateur

Android 10 est compatible avec la fonctionnalité de sauvegarde et restauration pour tous les utilisateurs d'un appareil. Auparavant, la sauvegarde et la restauration n'étaient disponibles que pour l'utilisateur système. La sauvegarde et la restauration pour les utilisateurs non système sont désactivées par défaut, car elles ne couvrent que partiellement les paramètres, le fond d'écran et les composants système.

Overlayfs

Les utilisateurs qui travaillent avec des versions userdebug ou eng s'attendent à pouvoir remonter efficacement la partition système en lecture/écriture, puis ajouter ou modifier un nombre quelconque de fichiers sans reflasher l'image système. Vous pouvez utiliser Overlayfs, qui configure automatiquement le stockage de sauvegarde pour un système de fichiers accessible en écriture en tant que référence supérieure et le monte sur la référence inférieure. Ces actions se produisent dans les requêtes adb disable-verity et adb remount. Pour en savoir plus, consultez le fichier README d'Overlayfs dans AOSP.

Compatibilité de la bibliothèque partagée en mode Récupération

Dans Android 10, les bibliothèques partagées sont disponibles dans la partition de récupération, ce qui élimine la nécessité pour tous les exécutables du mode Récupération d'être statiques. Les bibliothèques partagées se trouvent dans le répertoire /system/lib (ou /system/lib64 pour les appareils 64 bits) de la partition.

Pour ajouter une bibliothèque partagée à la partition de récupération, ajoutez recovery_available: true ou recovery: true à Android.bp de la bibliothèque partagée. La première installe la bibliothèque dans les partitions système et de récupération, tandis que la seconde ne l'installe que dans la partition de récupération.

La prise en charge des bibliothèques partagées ne peut pas être intégrée au système de compilation basé sur make d'Android. Pour convertir un exécutable statique existant pour le mode Recovery en exécutable dynamique, supprimez LOCAL_FORCE_STATIC_EXECUTABLE := true dans Android.mk ou static_executable: true (dans Android.bp).

Point de contrôle des données utilisateur (PCDU)

Android 10 introduit la fonctionnalité de point de contrôle des données utilisateur (UDC), qui permet à Android de revenir à son état précédent en cas d'échec d'une mise à jour Android OTA (Over-the-Air).