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-uns de ces modules:

Couche d'abstraction matérielle (HAL)

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

Noyau

ABI

Android 10 est compatible avec de nouvelles utilitaires de surveillance des ABI pour vous aider à comparer, à suivre et à atténuer les modifications des ABI du kernel qui affectent la compatibilité avec les modules du kernel.

Android 10 introduit également un outil de vérification des utilisations des ABI basé sur les 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 endommagés par leur modification et lesquels doivent être recompilés.

Daemon Android Live-Lock

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

vDSO32 sur ARM64

Android 10 prend en charge l'utilisation de vDSO32 sur les noyaux 64 bits, ce qui augmente l'autonomie de la batterie de 0,4 % et améliore d'autres performances.

Entrées fstab pour les partitions montées plus tôt

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 la première étape.

HIDL

Décharger BroadcastQueue

Android 10 inclut une nouvelle BroadcastQueue de déchargement dans les files d'attente d'arrière-plan et de premier plan existantes. La file d'attente de transfert a la même priorité et le même comportement de délai avant 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 se produire, la file d'attente de transfert 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 peut potentiellement gérer d'autres diffusions longues.

Service SystemSuspend

Android 10 remplace le thread dans libsuspend chargé de lancer 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 HIDL Android.

safe_union dans HIDL

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

Configuration

HAL ConfigStore

Android 10 abandonne le HAL ConfigStore en raison de sa consommation de mémoire élevée et de son utilisation difficile, et le remplace par des propriétés système.

API Config File Schema

La plate-forme Android contient un grand nombre de fichiers XML pour stocker les données de configuration. De nombreux 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. Par conséquent, le schéma doit être spécifié explicitement et doit évoluer de manière rétrocompatible. Avant Android 10, la plate-forme ne fournissait pas de mécanismes pour exiger la spécification et l'utilisation du schéma XML, ni pour 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 auxquelles on accède 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 en tant que fonctions concrètes pour C++ et en tant que classes pour Java.

Objet d'interface fournisseur (VINTF)

VINTF

Voici quelques 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 fusionné dans system.img.

Créer des partitions ODM

Android 10 est compatible avec la création de 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 du fournisseur pour plusieurs SKU matériels. Cela permet aux fabricants de conception d'origine (ODM) de personnaliser les packages de prise en charge de carte (BSP) des fournisseurs de SoC (System on Chip) en fonction de leurs appareils spécifiques (leurs cartes). Ils peuvent implémenter des modules de kernel pour les composants spécifiques à la carte, les démons spécifiques à la carte ou leurs propres fonctionnalités sur les couches d'abstraction matérielle (HAL). Ils peuvent également remplacer ou personnaliser des composants de 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 du blob de l'arborescence de l'appareil (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 d'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 autres que A/B

Sous Android 9 et versions ultérieures, l'image de récupération d'un appareil doit contenir des informations provenant de l'image superposée. Les fabricants d'appareils peuvent utiliser DeviceTree ou l'interface de configuration et d'alimentation avancée (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 de DeviceTree blob pour la superposition (DTBO).

AIDL stable

Android 10 prend en charge le langage de définition d'interface Android (AIDL, Android Interface Definition Language) stable, une nouvelle façon de suivre l'API/ABI fournies par les interfaces AIDL.

Déplacer fastboot vers l'espace utilisateur

Android 10 est compatible avec les partitions redimensionnables en relocalisant l'implémentation de 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 le 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 de l'affichage des polices Zawgyi

Zawgyi est la police la plus populaire au Myanmar. Android 9 et les versions antérieures ne permettaient pas d'afficher Zawgyi, car il 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 Zawgyi. Aucune 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 du masquage des icônes d'application

Android 10 limite la possibilité pour les applications de masquer leurs icônes de lanceur. Si aucune activité de lanceur d'applications n'est activée pour une application, le système affiche une activité synthétisée dans le lanceur d'applications. 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 s'affichent pas, consultez la documentation sur 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 avant expiration personnalisables par l'utilisateur. Les modifications apportées à l'API et aux paramètres sont fournies avec 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 de délai avant expiration. 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 la compatibilité Android 10 s'appuie sur les versions précédentes avec des mises à jour des nouvelles fonctionnalités et des modifications des exigences pour les fonctionnalités publiées précédemment.

Tests

La suite de tests de compatibilité

Android CTS 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 la balise android-cts-10_r1 dans l'arborescence Open Source.

Entretoise CTS 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 de banc d'essais CTS aide les développeurs à automatiser les tests d'un appareil ou d'un parc d'appareils.

Mode Applis instantanées

À partir d'Android 10, CTS s'exécute en mode d'application instantanée, ce qui implique d'installer l'APK de test en tant qu'application instantanée et d'exécuter les tests.

En plus d'un mode CTS pour les applications instantanées, Android 10 inclut le vérificateur CTS pour les applications instantanées.

Test du validateur CTS pour l'audio professionnel

Android 10 ajoute un test de vérification CTS pour la conformité Pro Audio.

Tests MIDI de l'outil de vérification CTS

Dans Android 10, le test MIDI du vérificateur CTS 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)

Test 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 de userdebug à user build type, car la GSI est signée. Toutefois, la commande adb root qui accorde des autorisations racine hôte à l'appareil Android testé n'est pas disponible dans un build utilisateur. Cela pose problème, car VTS nécessite adb root pour s'exécuter.

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

Validation de Hardware Composer

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

Débogage

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

Sous 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 associées via uses-library ou uses-static-library.

En règle générale, les applications ne doivent pas s'appuyer sur un chargeur de classe spécifique. Par conséquent, ce changement ne devrait pas perturber le comportement des applications. Toutefois, si une application s'appuie sur un seul chargeur de classe, ce comportement est défaillant. De plus, la visibilité privée de package des classes du même package est toujours prise en charge, 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 équipés d'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é d'Android 10.

Authentification faciale

L'authentification faciale permet aux utilisateurs de déverrouiller leur appareil simplement en le regardant. Android 10 prend en charge une nouvelle pile d'authentification par reconnaissance faciale qui peut traiter de manière sécurisée les images de l'appareil photo, préservant ainsi la sécurité et la confidentialité lors de l'authentification par reconnaissance faciale sur le matériel compatible. Android 10 permet également aux implémentations conformes aux exigences de sécurité d'intégrer facilement des applications pour les transactions telles que les services bancaires en ligne ou d'autres services.

Accès étendu

Les agents de confiance, qui sont 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 nettoyeur de limites d'UBSan. Cette atténuation est activée au niveau du 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 valeurs d'entiers en cas de dépassement

Android 10 active la sanification des valeurs entières (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 lecture seule

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 de réutilisation de code juste-à-temps. Le code qui mélange des données et du code, et le code qui inspecte intentionnellement ces sections (sans remappeur au préalable les segments de mémoire en tant que lisibles) ne fonctionnent plus. Les applications dont le SDK cible est Android 10 (niveau d'API 29 ou version ultérieure) sont concernées si elles tentent de lire des sections de code de bibliothèques système activées pour la mémoire en mode "exécuter uniquement" (XOM, execute-only memory) en mémoire sans marquer d'abord la section comme lisible.

Scudo

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

ShadowCallStack

ShadowCallStack (SCS) est un mode d'instrumentation LLVM qui protège contre les écrasements de l'adresse de retour (comme les débordements 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 le HAL audio.

  • 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é afin de prendre en charge les cas d'utilisation complexes dans le secteur automobile.

Audio haute résolution

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

  • Compatibilité avec les flottants
  • Compatibilité avec la fréquence 192 kHz
  • Compatibilité avec huit canaux
  • Inclure des informations temporelles

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 cas d'utilisation principal est d'autoriser les applications de streaming à capturer l'audio diffusé par les jeux.

L'API de capture n'a aucune incidence sur la latence de l'application dont l'audio est capturé.

MIDI

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

Appareil photo

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

Améliorations de la confidentialité du framework de caméra

Android 10 apporte des améliorations de la confidentialité au framework de l'appareil photo. Pour éviter de divulguer des informations statiques potentiellement sensibles de la caméra dans CameraCharacteristics sans l'autorisation de l'utilisateur, les applications doivent obtenir l'autorisation CAMERA pour récupérer des métadonnées statiques avec une balise sensible à 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 la session

Android 10 ajoute une fonctionnalité de reconfiguration de session, qui permet d'améliorer les performances grâce à un contrôle plus strict de la logique de reconfiguration des paramètres de session internes.

API de gestion des tampons HAL3 de l'appareil photo

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

Contacteur physique dynamique de la caméra HAL de la caméra

Android 10 introduit une balise de métadonnées dynamique, ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID, qui indique l'appareil photo physique sous-jacent actif d'un appareil photo logique. Pour en savoir plus, consultez la section Compatibilité avec plusieurs caméras.

Possibilité de masquer les caméras physiques

Dans Android 10, le HAL de l'appareil photo peut réduire le nombre d'appareils photo physiques pouvant être ouverts directement par une application. Pour en savoir plus, consultez la section Compatibilité avec plusieurs caméras.

API Camera2 VNDK

Dans Android 10, les modules du fournisseur peuvent accéder aux appareils photo 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 auprès des fournisseurs, libcamera2_vendor. Cette bibliothèque est semblable à la bibliothèque NDK de l'appareil photo, avec quelques modifications mineures.

Configurations de flux

Android 10 ajoute des fonctionnalités qui permettent aux fournisseurs d'appareils photo de promouvoir des flux d'appareil photo recommandés auprès des clients d'appareils photo et de prendre en charge une API pour interroger les combinaisons de flux.

Conditions requises pour la combinaison de flux de caméra

Les appareils exécutant Android 10 ne sont plus tenus de prendre en charge les combinaisons de flux avec des flux de sous-caméras physiques. Toutefois, les appareils exécutant Android 10 avec la version 3.5 de l'appareil HAL de la caméra 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 la section Compatibilité avec plusieurs caméras.

imagerie HEIF

Android 10 est compatible avec l'appareil photo natif pour les images au format HEIF (High Efficiency Image File Format), qui offrent une meilleure qualité d'image et des tailles plus petites que les images JPEG. Les appareils doivent disposer d'un encodeur HEIC ou HEVC pour prendre en charge les images HEIF.

Caméras monochromes

Android 10 est compatible avec le format de flux Y8, les métadonnées statiques de la matrice de filtres de couleur monochrome et infrarouge proche (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 lancer 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 du 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 de diffusion cellulaire en interagissant avec les packages de middleware eMBMS. Pour fonctionner correctement, les appels de groupe nécessitent l'assistance du fournisseur de chipset, du fournisseur de middleware et de l'opérateur mobile. La documentation destinée aux 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

Sous Android 10, la classe EuiccManager est compatible avec les appareils équipés de plusieurs eSIM (SIM intégrées) ou eUICC.

Modifications de l'eSIM

Pour les appareils équipés d'Android 10 compatibles avec les eSIM, un tableau d'ID de fente eUICC non amovible doit être défini. Les appareils doivent également être compatibles avec les versions 1.4 et 1.2 de la HAL IRadioConfig. Pour en savoir plus, consultez Implémenter l'eSIM et Exigences concernant le HAL.

5G non autonome (NSA)

Android 10 est compatible avec la 5G non-standalone (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 de téléphone

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

Opérateur

Migrer les paramètres du réseau mobile

Android 10 a réorganisé le code de l'UI des paramètres du réseau mobile et l'a déplacé de la pile Telephony vers la pile Settings. Pour prendre en charge le code migré, remplacez les valeurs de configuration des paramètres du réseau mobile 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, et 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 SIM sont fournis par l'opérateur, l'accès à ces identifiants est accordé aux packages disposant de droits d'accès de l'opérateur.

Wi-Fi

Sélection du réseau

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

Recherche de points d'accès Wi-Fi pour le déchargement réseau préféré

Android 10 introduit une méthode d'API facultative appelée setDeviceMobilityState() dans WifiManager, qui augmente l'intervalle entre les analyses de décharge de réseau préférée (PNO) lorsque l'appareil est à l'arrêt afin de réduire la consommation d'énergie.

Wi-Fi de l'opérateur

Sous 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 de clé publique).

Wi-Fi Easy Connect

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

Mode Wi-Fi à faible latence

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

Mise à jour du serveur DHCP

Dans le cadre de la création d'un parapluie de services "IP Server", dnsmasq est en cours de suppression. 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 possibilité 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 passent à Android 10 utilisent DhcpServer par défaut. Si vous avez effectué des personnalisations sur 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. Par conséquent, toute personnalisation de la fonctionnalité du serveur DHCP doit ê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 pour améliorer la confidentialité et la robustesse contre les attaques connues.

Wi-Fi Direct

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

Améliorations de la randomisation 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 proposer une option permettant d'activer ou de désactiver la randomisation MAC pour chaque SSID dans l'interface utilisateur du système.

Passpoint R2

Android 10 est compatible avec les fonctionnalités Passpoint R2. Passpoint R2 implémente l'inscription en ligne (OSU), une méthode standard pour provisionner de nouveaux profils Passpoint. Android 10 prend en charge le provisionnement de 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 améliorer la sécurité.

Android Beam obsolète

Dans Android 10, Android Beam n'est plus nécessaire, et les interfaces et méthodes suivantes sont 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 des tampons.

Implémentation graphique

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 la spécification EGL 1.5 de Khronos.

Vulkan

Android 10 est compatible avec les graphiques Vulkan 1.1. La plate-forme est également compatible avec la version 70 de VK_KHR_swapchain. L'application Vulkan peut donc créer un VkImage basé sur la mémoire de la chaîne de remplacement.

Fréquence d'actualisation des performances

Android 10 est compatible avec un taux d'actualisation pour les performances. Cette fonctionnalité est désactivée par défaut.

Interaction

Automobile

Audio pour véhicules

Dans Android 10, le contexte HAL audio est mappé sur AudioAttributes.usage pour identifier les sons. Android accepte une instance AUDIO_DEVICE_OUT_BUS par contexte. La HAL IAudioControl fournit des extensions spécifiques au véhicule à la HAL Audio.

Navigation par gestes

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

Réseaux de neurones

Android 10 introduit des mises à jour de l'API Neural Networks et du HAL Neural Networks. Pour obtenir un récapitulatif des modifications, consultez la section 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 permet d'utiliser des files d'attente de messages rapides (FMQ) pour envoyer des événements de capteur à partir du HAL dans le framework de capteurs Android.

Capteurs désactivés

Android 10 inclut un paramètre pour les développeurs permettant de désactiver tous les capteurs d'un appareil. Cette fonctionnalité aide les développeurs à tester le fonctionnement de leur application dans les situations où ces capteurs ne sont plus disponibles, et 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 avez d'autres capteurs, consultez la section 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 aux contenus multimédias 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 du fournisseur de contacts, sont accessibles différemment qu'avec Android 9 et 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 du fournisseur de contacts. 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 reposent sur les fonctionnalités obsolètes mentionnées dans la section "Fournisseur de contacts et informations sur les affinités", vous pouvez les mettre à jour pour compenser les modifications. En outre, si vous utilisez une version dérivée du fournisseur de contacts, vous devez le mettre à jour.

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

Les autorisations de localisation trinaires d'Android 10 permettent aux utilisateurs de mieux contrôler la façon dont les applications accèdent à la position de leur appareil.

Rappel de l'accès aux données de localisation en arrière-plan

Android 10 propose un rappel d'accès en arrière-plan aux données de localisation, qui augmente la transparence sur l'accès des applications aux données de localisation d'un appareil et aide les utilisateurs à contrôler cet accès.

Limiter les emplacements opportunistes

Lorsqu'une application demande la position d'un appareil, elle peut attendre la réponse à la requête ou, à l'aide d'écouteurs de position actifs, obtenir une mise à jour opportuniste de la position. À 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 de la classe FusedLocationProviderClient.

Lancement d'applications en arrière-plan

Sous 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

Sous Android 10, les applications disposent d'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 spécifiques au package, tels que renvoyés par toutes les méthodes applicables telles que Context.getExternalFilesDir(). Les applications disposent toujours d'un accès brut complet à leurs chemins spécifiques au package.

Suivez les consignes de partage de fichiers pour le bac à sable de l'application afin de fournir une granularité de partage de données appropriée.

Limiter l'accès au presse-papiers de l'application

Dans Android 10, l'accès au presse-papiers a changé afin que le contenu du presse-papiers ne puisse pas être consulté en appelant ClipboardManager.getPrimaryClip ou 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 malveillantes de modifier le presse-papiers.

Dans Android 10, l'accès en lecture n'est autorisé que pour l'application active avec la sélection de saisie ou pour le clavier actuel. L'appel de l'écouteur ClipboardManager.onPrimaryClipChanged() ne se déclenche désormais que pour les applications qui répondent à ces restrictions. ClipboardManager.getPrimaryClip et ClipboardManager.getPrimaryClipDescription renvoient null si l'application à l'origine de la requête n'est pas l'éditeur de méthode d'entrée (IME) par défaut ou si elle n'est pas sélectionné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 aux données de localisation de l'appareil en arrière-plan. Les autorisations d'exécution soumises à des restrictions strictes doivent être correctement ajoutées à la liste blanche dans Android 10.

Autorisation MANAGE_DEVICE_ADMINS

Android 10 modifie l'autorisation MANAGE_DEVICE_ADMINS de signature ou de privilège en signature uniquement. Cela signifie que seules les applications signées par la plate-forme peuvent définir d'autres applications en tant qu'administrateurs d'appareil.

Améliorations apportées à l'API Sharing

Android 10 propose un certain nombre de nouvelles fonctionnalités d'API Android Platform liées au partage. Si vous avez modifié le code de la Share Sheet dans votre implémentation, assurez-vous que votre implémentation est compatible avec ces nouvelles fonctionnalités. Si vous n'avez pas modifié le code de la Share Sheet dans votre implémentation, aucune action de votre part n'est requise pour prendre en charge ces nouvelles fonctionnalités.

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

Configuration signée

La fonctionnalité Signed Config permet d'intégrer la configuration des restrictions d'interface autres que les SDK dans les APK. Cela permet de supprimer des interfaces non SDK spécifiques de la liste de blocage, afin qu'AndroidX puisse les utiliser en toute sécurité. Avec cette modification, AndroidX peut ajouter la prise en charge de nouvelles fonctionnalités sur les anciennes versions d'Android.

Performances

Couche d'abstraction de cgroup

Android 10 inclut une couche d'abstraction cgroup et des profils de tâche, 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 les arrêts de pression du kernel (PSI) pour détecter la pression de la mémoire.

Puissance

Gestion de l'alimentation de la plate-forme

Sous Android 10, le mode Sommeil peut être activé sur les appareils à affichage permanent ainsi que sur les appareils fonctionnant sur batterie.

Économiseur de batterie de routine

Android 10 introduit une nouvelle option de planification de l'économiseur de batterie appelée basée sur la 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 d'alimentation

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

Le HAL de statistiques d'alimentation inclut de nouvelles API pour prendre en charge la collecte de données à partir de la mesure de l'alimentation 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 l'alimentation restent dans le HAL d'alimentation et ne changent pas.

Atténuation thermique

Le framework thermique d'Android 10 effectue une abstraction des interfaces de l'appareil pour le capteur de température du sous-système thermique, y compris le processeur, le GPU, la batterie, la peau et l'appareil de refroidissement. Le framework introduit une interface de sondage pour interroger l'état thermique afin de lancer le débit limité 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 approuvé, 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 la mitigation 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, de redimensionner ou de détruire des partitions lors des mises à jour OTA. Les fabricants d'appareils n'ont pas à se soucier des tailles individuelles 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.

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 tester sans risque de corrompre l'image système actuelle.

Sauvegarde et restauration multi-utilisateurs

Android 10 est compatible avec la fonctionnalité de sauvegarde et de 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 travaillant avec des builds userdebug ou eng s'attendent à pouvoir remonter efficacement la partition système en mode lecture-écriture, puis à ajouter ou à modifier un nombre illimité de fichiers sans flasher à nouveau l'image système. Vous pouvez utiliser Overlayfs, qui configure automatiquement l'espace de stockage de secours pour un système de fichiers en écriture en tant que référence supérieure et qui s'installe au-dessus de l'espace de stockage inférieur. 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é avec les bibliothèques partagées 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é que tous les exécutables en mode récupération soient 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. Le premier installe la bibliothèque à la fois dans les partitions système et de récupération, tandis que le second ne l'installe que dans la partition de récupération.

La prise en charge des bibliothèques partagées ne peut pas être effectuée avec le système de compilation basé sur Make d'Android. Pour convertir un exécutable statique existant pour le mode de récupération 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 (UDC)

Android 10 introduit la fonctionnalité 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 OTA (Over-the-Air) Android.