Notas de la versión de Android 10

En esta página, se resumen las funciones principales de la versión de Android 10 y se incluyen vínculos a información adicional. Los resúmenes de las funciones se ordenan según la ubicación de la documentación de las funciones en este sitio.

Compilación

java_sdk_library

Android 10 presenta java_sdk_library, una regla de compilación nueva para solucionar los problemas de compatibilidad relacionados con las bibliotecas de Java compartidas. Los fabricantes de dispositivos pueden usar este mecanismo en sus propias bibliotecas de Java compartidas a fin de mantener la retrocompatibilidad con las API.

Arquitectura

Componentes modulares del sistema

Android 10 modulariza algunos componentes del sistema Android y les permite actualizarse fuera del ciclo normal de actualización de Android. Algunos módulos incluyen lo siguiente:

Capa de abstracción de hardware (HAL)

Android 10 agrega compatibilidad con el cierre automático de las HAL cuando no haya clientes.

Kernel

ABI

Android 10 admite las utilidades de supervisión de ABI nuevas para ayudar a comparar, rastrear y mitigar los cambios de ABI de kernel que afecten la compatibilidad con los módulos de kernel.

Android 10 también incluye un verificador de usos de ABI basado en símbolos. Durante la compilación, el verificador puede detectar objetos binarios desarrollados previamente que son obsoletos para que los desarrolladores de bibliotecas compartidas sepan cuáles podrían estar dañados por los cambios y cuáles deben reconstruirse.

Daemon de bloqueo activo de Android

Android 10 incluye el Daemon de bloqueo activo de Android (llkd), que está diseñado para detectar y mitigar los interbloqueos del kernel.

vDSO32 en ARM64

Android 10 admite el uso de vDSO32 en kernels de 64 bits, con un aumento del 0.4% en la duración de la batería, además de otras mejoras de rendimiento.

Entradas fstab para particiones activadas de manera anticipada

Android 10 requiere que los dispositivos especifiquen entradas fstab para particiones activadas de manera anticipada con un archivo fstab en el disco RAM de la primera etapa.

HIDL

BroadcastQueue de descarga

Android 10 incluye un BroadcastQueue nuevo de descarga en las colas existentes que se ejecutan en segundo y primer plano. La cola de descarga tiene el mismo comportamiento de prioridad y tiempo de espera que la cola en segundo plano. Para evitar el bloqueo de la cola en segundo plano, donde pueden aparecer transmisiones más interesantes o visibles para el usuario, la cola de descarga procesa la transmisión de BOOT_COMPLETED, que escuchan muchas apps y puede tardar bastante en completarse. Actualmente, la cola de descarga solo procesa la transmisión de BOOT_COMPLETED, pero puede llegar a manejar otras transmisiones largas.

Servicio SystemSuspend

Android 10 reemplaza el subproceso en libsuspend responsable de iniciar la suspensión del sistema por el servicio SystemSuspend HIDL. Esta implementación ofrece una funcionalidad equivalente a las versiones anteriores y aprovecha los beneficios de la infraestructura HIDL de Android.

safe_union en HIDL

Android 10 introduce safe_union, un tipo de unión etiquetado explícitamente, en HIDL.

Configuración

HAL de ConfigStore

En Android 10, se dio de baja la HAL de ConfigStore dado que consume mucha memoria y es difícil de usar; la HAL se reemplaza con propiedades del sistema.

API de esquema del archivo de configuración

La plataforma de Android tiene una gran cantidad de archivos XML para almacenar datos de configuración. Muchos de esos archivos están en la partición vendor, pero se leen en system. En este caso, el esquema del archivo XML sirve como interfaz entre las dos particiones y, por lo tanto, debe especificarse de manera explícita y evolucionar de manera retrocompatible. Antes de Android 10, la plataforma no proporcionaba mecanismos para exigir la especificación y el uso del esquema XML, ni a fin de evitar cambios incompatibles en el esquema. Android 10 proporciona ese mecanismo, denominado API de esquema de archivo de configuración.

Propiedades del sistema como API

Las propiedades del sistema a las que se accede en las particiones se esquematizan en archivos de descripción sysprop, y las API para acceder a propiedades se generan como funciones concretas en C++ y clases en Java.

Objeto de interfaz de proveedor (VINTF)

VINTF

Los cambios en VINTF en Android 10 incluyen los siguientes:

  • Dar de baja etiquetas de versión de AVB
  • Agregar información de kernel en paquetes de OTA
  • Compilar manifiestos de ODM de manera oficial
  • Agregar una matriz de compatibilidad de productos
  • Asociar una entrada de manifiesto con un módulo de HAL en el sistema de compilación

Bootloader

Ramdisk

En Android 10, ya no se incluye el sistema de archivos raíz en ramdisk.img y, en cambio, se combinó con system.img.

Cómo compilar particiones ODM

Android 10 admite la compilación de particiones odm con el sistema de compilación de Android. Puedes usar una partición /odm separada para las personalizaciones, lo que te permite usar una sola imagen de proveedor para múltiples SKU de hardware. Esto permite a los fabricantes de diseño original (ODM) personalizar los paquetes de asistencia de placa (BSP) del proveedor del sistema en chip (SoC) según los dispositivos específicos (sus placas). Pueden implementar módulos de kernel para componentes específicos de la placa, daemons específicos de la placa o sus propias funciones en capas de abstracción de hardware (HAL). También pueden reemplazar o personalizar componentes del SoC.

Versión del encabezado de imagen de inicio

Android 10 actualiza el encabezado de imagen de inicio a la versión 2, que incluye una sección para almacenar la imagen de BLOB del árbol de dispositivo (DTB). Las pruebas de VTS para Android 10 verifican que todos los dispositivos que ejecutan Android 10 usen la versión 2 del encabezado de imagen de inicio e incluyan una imagen DTB válida como parte de las imágenes de inicio/recuperación.

Imágenes de recuperación para dispositivos que no son A/B

En Android 9 y versiones posteriores, la imagen de recuperación de un dispositivo debe incluir información de la imagen de superposición. Los fabricantes de dispositivos pueden usar DeviceTree o la Interfaz avanzada de configuración y energía (ACPI) para describir todos los dispositivos no detectables. Android 10 y versiones posteriores admiten arquitecturas que usan la ACPI en lugar del BLOB de DeviceTree para superposición (DTBO).

AIDL estable

Android 10 agrega compatibilidad con el Lenguaje de definición de la interfaz de Android (AIDL) estable, una forma nueva de realizar un seguimiento de la interfaz de programación de aplicaciones (API)/interfaz binaria de la aplicación (ABI) proporcionadas por las interfaces del AIDL.

Cómo mover fastboot al espacio del usuario

Android 10 agrega compatibilidad para particiones redimensionables reubicando la implementación de fastboot del bootloader al espacio de usuario.

Pantalla

Reproducción de video HDR

Android 10 admite la reproducción de HDR10, VP9 y HDR10+.

Clasificación de texto

La clasificación de texto usa técnicas de aprendizaje automático para ayudar a los desarrolladores a clasificar el texto. Android 10 agrega dos métodos en la API de TextClassifier: suggestConversationActions y detectLanguage. El método suggestConversationActions genera respuestas y acciones sugeridas a partir de una conversación determinada y el método detectLanguage detecta el lenguaje del texto.

Compatibilidad con el procesamiento de fuentes Zawgyi

Zawgyi es la fuente más popular en Birmania. Android 9 y versiones anteriores no admitían el procesamiento de Zawgyi porque no cumple con Unicode. Android 10 soluciona este problema, ya que incluye una fuente Unicode que puede procesar Unicode birmano y Zawgyi juntos. No se necesita trabajo de implementación para admitir el procesamiento de la fuente Zawgyi en dispositivos que ejecutan Android 10. Si tus dispositivos tienen una implementación personalizada para admitir Zawgyi, puedes hacer lo siguiente:

Limitaciones para ocultar los íconos de las apps

Android 10 limita la capacidad de las apps de ocultar sus íconos de selector. Si una app no tiene habilitada una actividad de selector, el sistema muestra una actividad resumida en el selector. Esa actividad representa la página de detalles de la app en la configuración del sistema.

Si quieres más información sobre la lógica usada para mostrar íconos de apps, incluidos los tipos de apps cuyos íconos no se muestran, consulta la documentación de getActivityList() en la referencia de la API.

Configuración

Para mejorar la accesibilidad, Android 10 incluye ajustes de tiempo de espera que puede personalizar el usuario. Los cambios de la API y Configuración vienen con Android 10. Si personalizas la Configuración, asegúrate de que la función sea compatible. Si tienes elementos de la IU que agotan el tiempo de espera en el dispositivo, usa la API de tiempo de espera con ellos. Consulta los Lineamientos de accesibilidad para desarrolladores de Android a fin de obtener más información.

Compatibilidad

Documento de definición de compatibilidad de Android (CDD)

El Documento de definición de compatibilidad de Android 10 reitera lo mismo que las versiones anteriores con actualizaciones para funciones nuevas y cambios en los requisitos de funciones previas.

Pruebas

Conjunto de pruebas de compatibilidad (CTS)

El CTS de Android tiene una página de notas de la versión separada en la que se enumeran muchos cambios importantes en Android 10.

Descargas de CTS

Los paquetes de CTS compatibles con Android 10 están disponibles en la página Descargas de CTS. Se puede sincronizar el código fuente de las pruebas incluidas con la etiqueta android-cts-10_r1 en el árbol de código abierto.

APEX de corrección de compatibilidad del CTS

Android 10 presenta un paquete llamado CtsShimApex, que debe estar preinstalado en un dispositivo para escribir pruebas del CTS para la administración de APEX.

Modo de agente de prueba

El modo de agente de prueba de CTS ayuda a los desarrolladores a automatizar las pruebas en un dispositivo o una flota de dispositivos.

Modo de Apps instantáneas

A partir de Android 10, el CTS se ejecuta en el modo de Apps instantáneas, lo que implica instalar el APK de prueba como una app instantánea y ejecutar las pruebas.

Además del modo de CTS para Apps instantáneas, Android 10 incluye un Verificador de CTS para Apps instantáneas

Prueba Pro Audio del verificador de CTS

Android 10 incluye una prueba del Cumplimiento de audio profesional del verificador de CTS.

Pruebas MIDI del verificador de CTS

En Android 10, la prueba MIDI del verificador de CTS evalúa la funcionalidad MIDI con interfaces MIDI USB, interfaces MIDI Bluetooth y una ruta de dispositivo MIDI virtual.

Interpretación de la prueba de CTS

Android 10 actualiza el mecanismo para interpretar los resultados del CTS.

Conjunto de pruebas de proveedores (VTS)

Cómo evaluar el VTS con ramdisk de depuración

En Android 10, la imagen genérica del sistema (GSI) usada para ejecutar la prueba de cumplimiento del CTS en GSI/VTS cambió de userdebug a tipo de compilación del usuario, porque la GSI tiene una actualización firmada. Sin embargo, el comando adb root que otorga permisos de administrador al host para el dispositivo Android bajo evaluación no está disponible en una compilación de usuario. Esto es un problema porque VTS requiere adb root para ejecutarse.

Si el dispositivo está desbloqueado, se introduce el ramdisk de depuración para habilitar adb root. De esa manera, se simplifica el flujo de prueba mediante la reutilización de la misma compilación de usuario system.img (la GSI o el system.img del OEM).

Validación de Hardware Composer

Android 10 agrega una clase de prueba nueva del VTS para la validación de Hardware Composer por medio de la interfaz readback en IComposerClient.hal. Si los proveedores no implementan readback, las pruebas pasan automáticamente.

Depuración

Cómo cargar bibliotecas compartidas con diferentes cargadores de clases

En Android 9 y versiones anteriores, las apps cargaban sus bibliotecas compartidas y vinculadas con Java en el cargador de clases de la app. En Android 10, el framework usa un cargador de clases diferente al de la app para cargar bibliotecas compartidas de Java vinculadas a través de uses-library o uses-static-library.

En general, las apps no deberían depender del uso de un cargador de clases específico, por lo que este cambio no debería interrumpir el comportamiento de la app. Sin embargo, si una app se basa en el uso de un cargador de clases único, ese comportamiento se interrumpe. Además, todavía es compatible la visibilidad privada de paquetes de las clases en el mismo paquete, pero no se admite en las bibliotecas compartidas.

Es posible que los fabricantes de dispositivos tengan problemas de compatibilidad con las apps mientras prueban sus dispositivos que ejecutan Android 10.

Funciones de seguridad

Para ver una lista más completa de las mejoras solo relacionadas con la seguridad y la privacidad, consulta la página Mejoras de seguridad y privacidad de Android 10.

Autenticación facial

La autenticación facial permite a los usuarios desbloquear el dispositivo con solo mirar la parte frontal. Android 10 agrega compatibilidad para una pila nueva de autenticación facial que puede procesar marcos de cámara de forma segura, lo que preserva la seguridad y privacidad durante la autenticación facial en hardware compatible. Android 10 también facilita que las implementaciones que cumplen con la seguridad permitan la integración de apps para transacciones de banca en línea, por ejemplo, y otros servicios.

Acceso ampliado

Los agentes de confianza, el mecanismo subyacente que usan los mecanismos de autenticación terciarios como Smart Lock, solo pueden ampliar el desbloqueo en Android 10. Los agentes de confianza ya no pueden desbloquear un dispositivo bloqueado y solo pueden mantenerlo desbloqueado por un máximo de cuatro horas.

Encriptación

OEMCrypto

Android 10 usa la versión 15 de la API de OEMCrypto.

Pruebas

BoundsSanitizer

Android 10 implementa BoundsSanitizer (BoundSan) en Bluetooth y códecs. BoundSan usa la limpieza de límites de UBSan. Esta mitigación está habilitada de a un nivel por módulo. Sirve para mantener seguros los componentes importantes de Android y no debe inhabilitarse. BoundSan está habilitado en los siguientes códecs:

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

Limpieza de desbordamiento de enteros

Android 10 habilita la Limpieza de desbordamiento de enteros (IntSan) en códecs de software. Asegúrate de que el rendimiento de reproducción sea aceptable para cualquier códec que no sea compatible con el hardware del dispositivo. IntSan está habilitada en los siguientes códecs:

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

Memoria de solo ejecución

De forma predeterminada, las secciones de código ejecutable de los objetos binarios del sistema AArch64 están marcadas como de solo ejecución (no legibles) para endurecer la mitigación contra ataques de reutilización de código just-in-time. El código que combina los datos y el código, y el código que inspecciona deliberadamente esas secciones (sin reasignar primero los segmentos de la memoria como legibles) ya no funciona. Las apps con un SDK de destino de Android 10 (API nivel 29 o versiones posteriores) se ven afectadas si la app intenta leer secciones de código de bibliotecas del sistema habilitadas con memoria de solo ejecución (XOM) en la memoria sin marcar primero la sección como legible.

Scudo

Scudo es un asignador de memoria dinámico en modo de usuario diseñado para ser más resistente contra las vulnerabilidades relacionadas con pilas. Proporciona las primitivas de asignación y desasignación estándar de C, así como las primitivas de C++.

ShadowCallStack

ShadowCallStack (SCS) es un modo de instrumentación LLVM que protege contra reemplazos de la dirección de devolución (como desbordamientos del búfer de pila), ya que guarda la dirección de devolución de una función en una instancia ShadowCallStack asignada por separado en la función prolog de funciones no hoja y carga la dirección de devolución desde la instancia ShadowCallStack en la función epilog.

Audio

HAL de audio

Android 10 incluye las siguientes funciones nuevas para la HAL de audio.

  • AudioSource
  • AudioFormat
  • AudioChannelMask

Se agregan requisitos adicionales para la implementación de subsistemas y la HAL de audio.

Efectos de preprocesamiento

Android proporciona efectos de preprocesamiento, como cancelación del eco acústico, control de ganancia automático y reducción de ruido. Android 10 incluye requisitos nuevos para la captura con VOICE_COMMUNICATION.

Administrador de políticas de audio

Android 10 incluye una refactorización significativa del administrador de políticas de audio a fin de proporcionar más flexibilidad para admitir casos prácticos complejos de la industria automotriz.

Audio en alta resolución

Android 10 incluye las siguientes mejoras en el audio de alta resolución.

  • Compatibilidad para flotantes
  • Compatibilidad para frecuencia de 192 KHz
  • Compatibilidad para ocho canales
  • Inclusión de información de tiempo

Captura simultánea

Android 10 mejora la experiencia del usuario de captura simultánea, que requiere que haya más de una captura de audio activa de manera simultánea.

AudioPlaybackCapture

Android 10 tiene una API nueva llamada AudioPlaybackCapture, que permite a las apps copiar el audio que reproducen otras apps. Esta función es similar a la captura de pantalla, pero para audio. El caso práctico principal es permitir que las apps de streaming capturen el audio que se reproduce en los juegos.

La API de captura no afecta la latencia de la app cuyo audio se captura.

MIDI

Con Android 10, es más fácil hacer la portabilidad de apps de audio profesionales con MIDI en la plataforma de Android mediante la API AMidi de NDK.

Cámara

Para obtener un resumen de los cambios en la API de la cámara, la HAL de la cámara y el módulo de la cámara introducidos en Android 10, consulta las Actualizaciones de la cámara de Android 10.

Mejoras en la privacidad del mardo de trabajo de la cámara

Android 10 introduce mejoras de privacidad en el marco de trabajo de la cámara. Para evitar la exposición de información estática de la cámara que puede ser confidencial en CameraCharacteristics sin el consentimiento del usuario, las apps deben obtener el permiso CAMERA a fin de recuperar metadatos estáticos con una etiqueta de datos confidenciales de privacidad mediante el método getCameraCharacteristics.

Para obtener una lista de las características clave de la cámara que requieren el permiso CAMERA, llama al método getKeysNeedingPermission.

Consulta de reconfiguración de sesión

Android 10 agrega una función de consulta de reconfiguración de sesión, que permite un mejor rendimiento con un mayor control de la lógica de reconfiguración de parámetros de sesión interna.

API de administración de búfer de cámara de HAL3

Android 10 introduce las API de administración de búfer de la HAL3 de la cámara opcionales que permiten implementar la lógica de administración de búferes para lograr diferentes compensaciones de memoria y latencia de captura en las implementaciones de la HAL de la cámara.

Interruptor de cámara física dinámico de la HAL de cámara

Android 10 introduce una etiqueta de metadatos dinámica, ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID, que indica la cámara física subyacente activa de un dispositivo de cámara lógica. Para obtener más información, consulta Compatibilidad con varias cámaras.

Compatibilidad para ocultar cámaras físicas

En Android 10, la HAL de la cámara puede reducir la cantidad de cámaras físicas que una app puede abrir directamente. Para obtener más información, consulta Compatibilidad con varias cámaras.

API Camera2 VNDK

En Android 10, los módulos de proveedores pueden acceder y controlar los dispositivos de cámara mediante dos interfaces HIDL estándar nuevas, android.frameworks.cameraservice.service@2.0 y android.frameworks.cameraservice.device@2.0. Para que el uso de las interfaces HIDL sea más conveniente, Android 10 también introduce una biblioteca disponible para proveedores, libcamera2_vendor. Esta biblioteca es similar a la biblioteca NDK de la cámara, con algunas modificaciones menores.

Configuraciones de transmisión

Android 10 agrega funciones que permiten a los proveedores de cámara anunciar transmisiones de cámara recomendadas a clientes de cámara y admitir una API para consultar combinaciones de transmisiones.

Requisitos de combinaciones de transmisión de cámara

Los dispositivos que ejecutan Android 10 ya no deben admitir combinaciones de transmisión con transmisiones de subcámaras físicas. Sin embargo, los dispositivos que ejecutan Android 10 con la versión 3.5 del dispositivo de la HAL de la cámara deben ser compatibles con isStreamCombinationSupported() para permitir que las apps consulten si se admite una combinación de transmisión que contenga transmisiones físicas.

Para obtener más información, consulta Compatibilidad con varias cámaras.

Procesamiento de imágenes HEIF

Android 10 proporciona compatibilidad nativa con la cámara para imágenes de formato de archivo de imagen de alta eficiencia (HEIF), que ofrecen una calidad de imagen mejorada y tamaños más pequeños que las imágenes JPEG. Los dispositivos deben tener un codificador HEIC o HEVC para admitir imágenes HEIF.

Cámaras monocromáticas

Android 10 proporciona compatibilidad adicional con el formato de transmisión Y8, los metadatos estáticos del arreglo de filtro de color monocromático e infrarrojo cercano (NIR) y las funciones DngCreator en cámaras monocromáticas.

Conectividad

Llamadas y mensajes

Números de emergencia y llamadas de emergencia

Android 10 proporciona compatibilidad mejorada para las llamadas de emergencia. En una emergencia, los dispositivos compatibles con la HAL de IRadio versión 1.4 pueden iniciar una llamada de emergencia con números de emergencia obtenidos de una fuente, como una tarjeta SIM, la señal de red o la base de datos de Android. Los números se pueden clasificar según categorías de servicios de emergencia, como policía, bomberos y ambulancia.

API de llamadas de grupo

Las API de llamadas de grupo son una extensión de las API de eMBMS que se agregaron en Android 9. Las API nuevas definen un estándar para que las apps se unan a llamadas de grupo de emisión móvil y transmitan en ellas mediante la interacción con los paquetes de middleware de eMBMS. Para funcionar correctamente, las llamadas de grupo requieren asistencia del proveedor del conjunto de chip, el proveedor de middleware y el proveedor de telefonía. La documentación para desarrolladores está en developer.google.com.

Funciones remotas de SIM

Android 10 introduce funciones remotas de SIM que permiten que las apps de mensajería de un dispositivo host de Android envíen mensajes SMS mediante teléfonos con mecanismos como Bluetooth. Para obtener más información, consulta la documentación de referencia del método getSubscriptionType y la constante SUBSCRIPTION_TYPE_REMOTE_SIM.

Varias eSIM

En Android 10, la clase EuiccManager admite dispositivos con múltiples SIM incorporadas (eSIM) o eUICCs.

Actualizaciones de eSIM

En el caso de los dispositivos que ejecutan Android 10 y son compatibles con eSIM, debe definirse un arreglo de ID de ranura eUICC no extraíble. Los dispositivos también deben ser compatibles con la HAL de IRadio versión 1.4 y la HAL de IRadioConfig versión 1.2. Para obtener más información, consulta Cómo implementar eSIM y Requisitos del módem.

5G no independiente (NSA)

Android 10 agrega compatibilidad con la red 5G no independiente (NSA). La 5G NSA es una solución para redes 5G donde la red es compatible con una infraestructura 4G existente. En Android 10, los dispositivos pueden mostrar un ícono 5G en la barra de estado cuando un dispositivo se conecta a una red 5G.

Sugerencia de cuenta telefónica

Android 10 introduce el servicio de sugerencia de cuenta telefónica, que permite que se muestren sugerencias de cuentas telefónicas a los usuarios cuando hacen una llamada.

Proveedor

Cómo migrar la configuración de la red móvil

Android 10 rediseñó el código de la IU de la configuración de la Red móvil y lo movió de la pila de Telefonía a la pila de Configuración. Para admitir el código migrado, cambia los siguientes valores de ajustes de la configuración de la Red móvil de los recursos de Android a los recursos de 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

Identificadores de dispositivos

Los identificadores de dispositivos persistentes (IMEI/MEID, IMSI y número de serie de la compilación) están protegidos por un permiso privilegiado con un acceso que también se otorga a las apps de propietario de perfil y dispositivo. Dado que el proveedor proporciona los números de serie IMSI y SIM, se otorga acceso a esos identificadores a los paquetes con privilegios de proveedor.

Wi-Fi

Selección de red

Android evalúa de manera continua la calidad de la red conectada y analiza la calidad de las redes disponibles. En Android 10, se actualizaron los algoritmos y procedimientos para seleccionar redes Wi-Fi y pasar de una a otra.

Análisis de aligeramiento de red Wi-Fi preferida

Android 10 introduce un método opcional de API llamado setDeviceMobilityState() en WifiManager que aumenta el intervalo entre análisis de aligeramiento de red preferido (PNO) cuando el dispositivo está fijo para reducir el consumo de energía.

Wi-Fi del proveedor

En Android 10, los dispositivos con la función de Wi-Fi del proveedor se conectan automáticamente a las redes Wi-Fi del proveedor configuradas (redes con certificados de clave pública).

Easy Connect para Wi-Fi

En Android 10, los dispositivos pueden usar Easy Connect para Wi-Fi, que utiliza el protocolo de provisión de dispositivo (DPP) introducido por Wi-Fi Alliance (WFA) para aprovisionar y configurar dispositivos Wi-Fi.

Modo de Wi-Fi de baja latencia

Android 10 incluye un modo de Wi-Fi de baja latencia, que configura el chip de Wi-Fi para que reduzca la latencia.

Servidor DHCP actualizado

Como parte de la creación de un sistema que centraliza los servicios de "Servidor IP", se quitará dnsmasq. Android 10 reemplaza el uso funcional del servidor DHCPv4 con un componente separado, escrito principalmente en Java, para integrarse mejor con el plano de control del framework de Java. Esto mejora la seguridad y la capacidad de actualización del servidor DHCP. Consulta packages/modules/NetworkStack/src/android/net/dhcp/DhcpServer.java para obtener más información.

No se requiere ninguna acción para implementar este cambio; todos los dispositivos que se lanzan y actualizan con Android 10 usan DhcpServer de forma predeterminada. Si tienes personalizaciones en el servidor DHCP, puedes establecer la configuración global como tether_enable_legacy_dhcp_server=1 para revertir al comportamiento de Android 9. El DhcpServer nuevo se incluye en el módulo de componentes de red, por lo que cualquier personalización de la funcionalidad del servidor DHCP debe ser ascendente.

WPA3 y Wi-Fi Enhanced Open

Android 10 agrega compatibilidad con los estándares de seguridad de Wi-Fi Protected Access 3 (WPA3) y Wi-Fi Enhanced Open para proporcionar mayor privacidad y solidez frente a ataques conocidos.

Wi-Fi directo

Wi-Fi directo, también conocido como Wi-Fi P2P, permite que los dispositivos auxiliares se descubran y se conecten entre sí mediante el protocolo Wi-Fi directo sin acceso a Internet o a la red móvil.

Mejoras de aleatorización de MAC

A partir de Android 10, la aleatorización de MAC está habilitada de manera predeterminada en el modo cliente, SoftAp y Wi-Fi directo. Los dispositivos deben proporcionar una opción para habilitar o inhabilitar la aleatorización de MAC en cada SSID de la IU del sistema.

Passpoint R2

Android 10 introduce compatibilidad para funciones de Passpoint R2. Passpoint R2 implementa el registro en línea (OSU), un método estándar para aprovisionar perfiles nuevos de Passpoint. Android 10 admite el aprovisionamiento de perfiles EAP-TTLS con SOAP-XML.

NFC

Proteger NFC

La opción Proteger NFC permite que la emulación de la tarjeta NFC fuera del host se habilite solo cuando la pantalla del dispositivo esté desbloqueada. La implementación de esta función brinda a los usuarios la opción de habilitar Proteger NFC para mejorar la seguridad.

Baja de Android Beam

En Android 10, Android Beam ya no es necesario, y las siguientes interfaces y métodos dejaron de estar disponibles.

Interfaces:

Métodos:

Para usar Android Beam, informa la constante de función android.sofware.nfc.beam.

Gráficos

ASurfaceControl

En Android 10, se agrega ASurfaceControl, una forma nueva de que SurfaceFlinger acepte búferes.

Implementación de gráficos

Capas de OpenGL ES

Android 10 introduce un sistema de capas para GLES.

EGL 1.5

Android 10 implementa la interfaz EGL 1.5. Para obtener información sobre las funciones nuevas en EGL 1.5, consulta la Especificación del lanzamiento de Khronos de EGL 1.5.

Vulkan

Android 10 admite gráficos Vulkan 1.1. La plataforma también es compatible con VK_KHR_swapchain versión 70, por lo que la app de Vulkan puede crear una VkImage respaldada por memoria de cadena de intercambio.

Frecuencia de actualización de rendimiento

Android 10 agrega compatibilidad con una frecuencia de actualización de rendimiento. Esta función está desactivada de manera predeterminada.

Interacción

Automóviles

Audio en automóviles

En Android 10, el contexto de la HAL de audio se asigna a AudioAttributes.usage para identificar sonidos. Android admite una instancia AUDIO_DEVICE_OUT_BUS por contexto. La HAL de IAudioControl proporciona extensiones específicas del vehículo para la HAL de audio.

Navegación gestual

Android 10 introduce una opción para un sistema de navegación totalmente gestual. Obtén información sobre cómo preparar las apps a fin de usar esta función en la página Navegación gestual del sitio para desarrolladores de Android.

Redes neuronales

Android 10 introduce actualizaciones para la API y la HAL de Redes neuronales. Para obtener un resumen de los cambios, consulta Redes neuronales.

Documentación nueva y actualizada de Redes neuronales para Android 10:

Sensores

HAL de sensores 2.0

La HAL de sensores 2.0 admite el uso de colas de mensajes rápidos (FMQ) para enviar eventos de sensores desde la HAL al marco de trabajo de sensores de Android.

Sensores desactivados

Android 10 incluye una configuración de desarrollador para apagar todos los sensores de un dispositivo. Esta función ayuda a los desarrolladores a probar la funcionalidad de sus apps en situaciones en las que esos sensores no están disponibles. Además, brinda a los usuarios una manera de controlar los sensores en sus dispositivos.

Si tus dispositivos usan la implementación predeterminada de SensorService, CameraService y AudioPolicyService, no se necesita personalización adicional para el diseño de referencia. Si tienes otros sensores, consulta Personalización para obtener más detalles sobre cómo admitir esta función.

Contenido multimedia

Componentes de medios actualizables

Android 10 brinda componentes actualizables de contenido multimedia que permiten actualizar los componentes modulares del sistema relacionados con los medios mediante la infraestructura de Google Play Store o un mecanismo inalámbrico (OTA) proporcionado por un socio.

DRM de contenido multimedia

Android 10 mejora la utilidad y la usabilidad de las API MediaDrm de Java y NDK.

Decodificación

Android 10 es compatible con la decodificación AV1 SW.

Permisos

Android 10 proporciona configuraciones de permisos adicionales para aumentar la transparencia y la privacidad del usuario.

Información de afinidades y Proveedor de contactos

A partir de Android 10, el acceso a los datos relacionados con la afinidad de contactos, administrados por el componente Proveedor de contactos, es diferente que en Android 9 y versiones anteriores. Los cambios relacionados con la accesibilidad de datos mejoran la privacidad del usuario en todos los dispositivos con Android 10 que usan el componente Proveedor de contactos. La base de datos subyacente ya no contiene datos de afinidades de contacto. Por lo tanto, las apps no pueden escribir en ella ni leerla.

Se espera que los cambios en Android 10 tengan un gran impacto en las API. Si tus apps dependen de las funciones obsoletas que se mencionan en Información de afinidades y Proveedor de contactos, te recomendamos que las actualices para compensar los cambios. Además, si usas una versión bifurcada del Proveedor de contactos, debes actualizarlo.

Permisos de ubicación de triestado

Los permisos de ubicación de triestado en Android 10 brindan a los usuarios más control sobre cómo las apps acceden a las ubicaciones de sus dispositivos.

Recordatorio de acceso a ubicación en segundo plano

Android 10 introduce un recordatorio de ubicación de acceso en segundo plano, que aumenta la transparencia en el nivel de acceso que tienen las apps a la ubicación de un dispositivo y ayuda a los usuarios a mantener el control sobre dicho acceso.

Restringe ubicaciones oportunas

Cuando una app solicita la ubicación de un dispositivo, puede esperar la respuesta de la solicitud o, mediante objetos de escucha de ubicación activa, obtener una actualización de ubicación oportuna. A partir de Android 10, para obtener actualizaciones de ubicación oportunas, los desarrolladores deben especificar que necesitan actualizaciones pasivas de ubicación de la clase FusedLocationProviderClient.

Cómo iniciar apps en segundo plano

En Android 10, las apps sin privilegios que no tienen una ventana visible no pueden iniciarse automáticamente en primer plano. Este cambio elimina las ventanas emergentes de anuncios y las apropiaciones maliciosas. No se necesita ninguna acción para habilitar esta función.

Zona de pruebas de apps

En Android 10, las apps tienen una vista sin formato limitada del sistema de archivos, sin acceso directo a rutas como /sdcard/DCIM. Sin embargo, las apps conservan el acceso completo sin formato a las rutas específicas de paquetes como las muestre cualquier método aplicable, por ejemplo, Context.getExternalFilesDir(). Las apps aún tienen acceso completo sin formato a las rutas específicas de paquetes.

Usa los lineamientos para compartir archivos de la zona de pruebas de la app a fin de proporcionar la granularidad adecuada de uso compartido de datos.

Restringe el acceso al portapapeles de la app

En Android 10, cambió el acceso al portapapeles a fin de que no se pueda ver el contenido si llamas al ClipboardManager.getPrimaryClip o agregas un objeto de escucha onPrimaryClipChangedListener para recibir una notificación cuando cambie el portapapeles. Esto aumenta la privacidad del usuario e inhabilita que las apps de malvertising modifiquen el portapapeles.

En Android 10, el acceso de lectura solo se permite a la app actual con foco de entrada o al teclado actual. La llamada del objeto de escucha ClipboardManager.onPrimaryClipChanged() ahora solo se emite para apps que cumplen esas restricciones. ClipboardManager.getPrimaryClip y ClipboardManager.getPrimaryClipDescription muestran null si la app solicitante no es el editor de método de entrada (IME) predeterminado o no tiene foco de entrada.

Los permisos de entorno de ejecución incluyen el reconocimiento de actividad

Los usuarios ahora ven un diálogo de reconocimiento de actividad cuando una app accede a la ubicación del dispositivo en segundo plano. Los permisos de entorno de ejecución restringidos deben estar correctamente incluidos en la lista blanca en Android 10.

Permiso MANAGE_DEVICE_ADMINS

Android 10 cambia el permiso MANAGE_DEVICE_ADMINS de firma o privilegio a solo firma. Eso significa que solo las apps firmadas por la plataforma pueden configurar otras apps como administrador del dispositivo.

Cómo compartir mejoras de API

Android 10 ofrece una serie de funciones nuevas de la API de la plataforma de Android relacionadas con el uso compartido. Si modificaste el código de Hoja compartida en tu implementación, asegúrate de que la implementación sea compatible con estas funciones nuevas. Si no modificaste el código de Hoja compartida en tu implementación, no debes hacer nada para admitir estas funciones nuevas.

Tiempo de ejecución de Android (ART)

Configuración firmada

La función de Configuración firmada permite incorporar ajustes de restricciones de interfaz que no pertenecen al SDK en los APK. De esa manera, se pueden quitar de la lista negra interfaces específicas que no pertenecen al SDK para que AndroidX las use de forma segura. Con este cambio, AndroidX puede agregar compatibilidad para funciones nuevas en versiones anteriores de Android.

Rendimiento

Capa de abstracción de cgroup

Android 10 incluye una capa de abstracción de cgroup y perfiles de tareas que los desarrolladores pueden usar para describir un conjunto de restricciones que se aplicarán a un subproceso o proceso.

Daemon de optimización de poca memoria (lmkd)

Android 10 admite un modo lmkd nuevo que usa supervisores de información de demora de presión (PSI) del kernel para la detección de presión de la memoria.

Energía

Administración de energía de la plataforma

En Android 10, el modo Descanso se puede habilitar en dispositivos siempre encendidos, así como en dispositivos con batería.

Ahorro de batería de rutina

Android 10 incluye una opción nueva de programación de ahorro de batería que se llama en función de la rutina. El ahorro de batería de rutina permite que una app elegida por el OEM envíe señales al sistema para lograr una programación más inteligente del ahorro de batería. Esta opción requiere configuración y la implementación es opcional.

HAL de estadísticas de energía

En Android 10, IPowerStats.hal reemplaza las API de recopilación de estadísticas de energía en IPower.hal. Aunque la HAL de energía sigue siendo compatible con las API, en el futuro se migrarán exclusivamente a la HAL de estadísticas de energía.

La HAL de estadísticas de energía incluye API nuevas para admitir la recopilación de datos a partir de la medición de energía en el dispositivo, en dispositivos compatibles. Las API de recopilación de estadísticas de energía existentes también se actualizan para mejorar la flexibilidad. Las API de optimización de energía permanecen en la HAL de energía y no cambian.

Mitigación térmica

El framework térmico en Android 10 abstrae las interfaces del dispositivo del sensor de temperatura del subsistema térmico, incluidos la CPU, la GPU, la batería, la máscara y el dispositivo de enfriamiento. El framework incluye una interfaz de sondeo a fin de consultar el estado térmico para iniciar la limitación, además de una interfaz de devolución de llamada que envía un mensaje al usuario cuando se supera un umbral.

En Android 10, se proporcionan los tipos de datos nuevos mediante la interfaz IThermalService con estos tres métodos nuevos:

Las apps agregan y quitan objetos de escucha, y acceden al estado de temperatura en la clase PowerManager. Solo un servicio de sistema confiable, como una API de Android o la API del fabricante del dispositivo, puede acceder a información sobre eventos causales asociados. Los fabricantes de dispositivos o SoC deben implementar thermal HAL 2.0 para habilitar la funcionalidad completa del marco de trabajo térmico nuevo.

Para obtener un ejemplo de implementación de mitigación térmica, consulta la Implementación de referencia.

Actualizaciones

Formato de archivo APEX

Android Pony EXpress (APEX) es un formato de contenedor nuevo utilizado en el flujo de instalación de componentes del sistema modular.

Particiones dinámicas

Con las particiones dinámicas, se introduce un sistema de partición de espacio de usuario en Android que permite crear o destruir particiones y cambiar su tamaño durante las actualizaciones inalámbricas. Los fabricantes de dispositivos no tienen que preocuparse por los tamaños individuales de las particiones, como system, vendor y product. En su lugar, se asigna una partición super grande, y se puede modificar el tamaño de las subparticiones de manera dinámica dentro de ella.

Actualizaciones dinámicas del sistema

Las actualizaciones dinámicas del sistema (DSU) permiten crear una imagen del sistema Android que los usuarios pueden descargar de Internet para hacer pruebas sin correr el riesgo de dañar la imagen actual del sistema.

Copia de seguridad y restablecimiento de multiusuario

Android 10 admite la función de Copia de seguridad y restablecimiento para todos los usuarios en un dispositivo. Anteriormente, Copia de seguridad y restablecimiento solo estaba disponible para el usuario del sistema. La función Copia de seguridad y restablecimiento de usuarios que no son del sistema está desactivada de forma predeterminada, ya que solo tiene una cobertura parcial para la configuración, el fondo de pantalla y los componentes del sistema.

Overlayfs

Los usuarios que trabajan con las compilaciones userdebug o eng esperan poder volver a activar de manera eficiente la partición del sistema como lectura-escritura y, luego, agregar o modificar cualquier cantidad de archivos sin reinstalar la imagen del sistema. Puedes usar Overlayfs, que configura automáticamente el almacenamiento de copia de seguridad para un sistema de archivos que se puede escribir como referencia superior y se activa sobre el inferior. Estas acciones ocurren en las solicitudes adb disable-verity y adb remount. Para obtener más detalles, consulta Overlayfs README en el AOSP.

Compatibilidad con Bibliotecas compartidas en Modo de recuperación

En Android 10, las Bibliotecas compartidas están disponibles en la partición de recuperación, por lo que ya no es necesario que todos los ejecutables del Modo de recuperación sean estáticos. Las Bibliotecas compartidas están en el directorio /system/lib (o /system/lib64 para dispositivos de 64 bits) en la partición.

Para agregar una biblioteca compartida nueva a la partición de recuperación, agrega recovery_available: true o recovery: true a Android.bp de la Biblioteca compartida. El primero instala la biblioteca en las particiones del sistema y de recuperación, mientras que el segundo solo la instala en la partición de recuperación.

La compatibilidad con Bibliotecas compartidas no se puede crear con el sistema de compilación basado en Make de Android. Si quieres convertir un ejecutable estático existente para el modo de recuperación en uno dinámico, quita LOCAL_FORCE_STATIC_EXECUTABLE := true en Android.mk o static_executable: true (en Android.bp).

Punto de control de datos del usuario (UDC)

Android 10 introduce la función Punto de control de datos del usuario (UDC), que permite a Android revertir al estado anterior cuando falla una actualización inalámbrica (OTA) de Android.