Notas de la versión de Android 10

Esta página resume las funciones principales de la versión de Android 10 y proporciona enlaces a información adicional. Estos resúmenes de funciones están organizados según la ubicación de la documentación de la función en este sitio.

Construir

java_sdk_library

Android 10 presenta java_sdk_library , una nueva regla de compilación para solucionar problemas de compatibilidad para bibliotecas Java compartidas. Los fabricantes de dispositivos pueden utilizar este mecanismo para sus propias bibliotecas Java compartidas para mantener la compatibilidad con versiones anteriores de sus API.

Arquitectura

Componentes del sistema modular

Android 10 modulariza algunos componentes del sistema Android y permite actualizarlos fuera del ciclo de lanzamiento normal de Android. Algunos módulos incluyen:

Capa de abstracción de hardware (HAL)

Android 10 agrega soporte para que los HAL se apaguen automáticamente cuando no tienen clientes.

Núcleo

ABI

Android 10 incluye soporte para nuevas utilidades de monitoreo de ABI para ayudar a comparar, rastrear y mitigar los cambios de ABI del kernel que afectan la compatibilidad con los módulos del kernel.

Android 10 también presenta un verificador de usos de ABI basado en símbolos. El verificador puede detectar archivos binarios prediseñados obsoletos en el momento de la compilación, de modo que los desarrolladores de bibliotecas compartidas puedan saber qué archivos binarios prediseñados podrían verse dañados por su cambio y cuáles deben reconstruirse.

Demonio de bloqueo en vivo de Android

Android 10 incluye Android Live-Lock Daemon (llkd) , que está diseñado para detectar y mitigar los bloqueos del kernel.

vDSO32 en ARM64

Android 10 admite el uso de vDSO32 en núcleos de 64 bits , lo que proporciona un aumento del 0,4 por ciento en la duración de la batería y otras mejoras de rendimiento.

Entradas de fstab para particiones montadas tempranamente

Android 10 requiere que los dispositivos especifiquen entradas fstab para las particiones montadas inicialmente usando un archivo fstab en el disco ram de la primera etapa.

HIDL

Descargar BroadcastQueue

Android 10 incluye una nueva descarga BroadcastQueue a las colas existentes en segundo plano y en 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 ocurrir transmisiones más interesantes o visibles para el usuario, la cola de descarga maneja la transmisión BOOT_COMPLETED , que muchas aplicaciones escuchan y pueden tardar mucho en completarse. Actualmente, la cola de descarga solo maneja la transmisión BOOT_COMPLETED , pero potencialmente puede manejar otras transmisiones largas.

SistemaSuspender servicio

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

unión_segura en HIDL

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

Configuración

ConfigStore HAL

Android 10 desaproba ConfigStore HAL debido al alto consumo de memoria y el uso difícil, y reemplaza HAL con propiedades del sistema .

API de esquema de archivo de configuración

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

Propiedades del sistema como API

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

Objeto de interfaz de proveedor (VINTF)

VINTF

Los cambios a VINTF en Android 10 incluyen:

  • Desuso de etiquetas de versión AVB
  • Agregar información del kernel en paquetes OTA
  • Creación de manifiestos ODM oficialmente
  • Agregar una matriz de compatibilidad de productos
  • Asociar una entrada de manifiesto con un módulo HAL en el sistema de compilación

Cargador de arranque

disco RAM

En Android 10, el sistema de archivos raíz ya no está incluido en ramdisk.img y, en cambio, se fusiona en system.img .

Construir particiones ODM

Android 10 incluye soporte para crear particiones odm utilizando el sistema de compilación de Android. Puede usar una partición /odm separada para personalizaciones, lo que le permite usar una única imagen de proveedor para múltiples SKU de hardware. Esto permite a los fabricantes de diseños originales (ODM) personalizar los paquetes de soporte de placa (BSP) del proveedor de sistema en chip (SoC) para sus dispositivos específicos (sus placas). Pueden implementar módulos de kernel para componentes específicos de la placa, demonios específicos de la placa o sus propias características en capas de abstracción de hardware (HAL). También pueden reemplazar o personalizar componentes de SoC.

Versionado del encabezado de la imagen de arranque

Android 10 actualiza el encabezado de la imagen de inicio a la versión 2, que incluye una sección para almacenar la imagen del blob del árbol de dispositivos (DTB). Las pruebas de Android 10 VTS verifican que todos los dispositivos que se inician con Android 10 usan el encabezado de imagen de inicio versión 2 e incluyen 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 contener información de la imagen superpuesta . Los fabricantes de dispositivos pueden utilizar DeviceTree o la interfaz de alimentación y configuración avanzada (ACPI) para describir todos los dispositivos no detectables. Android 10 y versiones posteriores incluyen compatibilidad con arquitecturas que usan ACPI en lugar de blob DeviceTree para superposición (DTBO).

AIDL estable

Android 10 agrega soporte para el lenguaje de definición de interfaz de Android (AIDL) estable, una nueva forma de realizar un seguimiento de la interfaz del programa de aplicación (API)/interfaz binaria de aplicación (ABI) proporcionada por las interfaces AIDL.

Mover fastboot al espacio de usuario

Android 10 agrega soporte para particiones redimensionables al reubicar la implementación fastboot del gestor de arranque al espacio del usuario.

Mostrar

Reproducción de vídeo HDR

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

Clasificación de texto

La clasificación de texto utiliza técnicas de aprendizaje automático para ayudar a los desarrolladores a clasificar el texto. Android 10 introduce dos métodos para la API 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 idioma del texto.

Soporte para renderizado de fuentes Zawgyi

Zawgyi es la fuente más popular en Myanmar. Android 9 y versiones anteriores no admitían la representación de Zawgyi porque no es compatible con Unicode . Android 10 soluciona este problema al incluir una fuente Unicode capaz de representar tanto Unicode birmano como Zawgyi juntos. No se necesita ningún trabajo de implementación para admitir la representación de fuentes Zawgyi en dispositivos que ejecutan Android 10. Si sus dispositivos tienen una implementación personalizada para admitir Zawgyi, puede:

  • Revierta esos cambios y utilice el método compatible con la plataforma.
  • Mantenga la fuente Zawgyi común en su sistema y use el código local my-qaag en su fonts.xml . Para obtener más información, consulte las notas de la versión Unicode CLDR en Zawgyi (Qaag) .

Limitaciones para ocultar iconos de aplicaciones

Android 10 limita la capacidad de las aplicaciones de ocultar sus íconos de inicio. Si una aplicación no tiene una actividad de inicio habilitada, el sistema muestra una actividad sintetizada en el iniciador; esta actividad sintetizada representa la página de detalles de la aplicación dentro de la configuración del sistema.

Para obtener más información sobre la lógica utilizada para mostrar los íconos de aplicaciones, incluidos los tipos de aplicaciones cuyos íconos no se muestran, consulte la documentación de getActivityList() en la referencia de API.

Ajustes

Para mejorar la accesibilidad, Android 10 incluye configuraciones de tiempo de espera personalizables por el usuario. Los cambios de API y configuración vienen con Android 10. Si personaliza su configuración, asegúrese de que esta función sea compatible. Si tiene elementos de la interfaz de usuario cuyo tiempo de espera se agota en su dispositivo, utilice la API de tiempos de espera en ellos. Para obtener más información, consulte las pautas de accesibilidad para desarrolladores de Android .

Compatibilidad

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

El Documento de definición de compatibilidad de Android 10 se basa en versiones anteriores con actualizaciones para nuevas funciones y cambios en los requisitos de las funciones publicadas anteriormente.

Pruebas

Conjunto de pruebas de compatibilidad (CTS)

Android CTS tiene una página de notas de la versión separada que enumera muchos cambios importantes para Android 10.

Descargas CTS

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

CTS cuña APEX

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

Modo de arnés de prueba

El modo de arnés de prueba CTS ayuda a los desarrolladores a automatizar las pruebas de un dispositivo o una flota de dispositivos.

Modo de aplicaciones instantáneas

A partir de Android 10, CTS se ejecuta en modo Aplicaciones instantáneas , lo que significa instalar el APK de prueba como una aplicación instantánea y ejecutar las pruebas.

Además de un modo CTS para aplicaciones instantáneas, Android 10 incluye CTS Verifier para aplicaciones instantáneas

Prueba de audio profesional CTS Verifier

Android 10 agrega una prueba CTS Verifier para el cumplimiento de Pro Audio .

Pruebas MIDI del verificador CTS

En Android 10, la prueba MIDI CTS Verifier prueba la funcionalidad MIDI con interfaces MIDI USB, interfaces MIDI Bluetooth y una ruta de dispositivo MIDI virtual.

Interpretación de la prueba CTS

Android 10 actualiza el mecanismo de interpretación de resultados CTS .

Conjunto de pruebas de proveedores (VTS)

Pruebas VTS con disco ram de depuración

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

El disco ram de depuración se introduce para hacer posible adb root , si el dispositivo está desbloqueado. Esto simplifica el flujo de prueba al reutilizar la misma compilación de usuario system.img (ya sea GSI o el system.img del OEM).

Validación del compositor de hardware

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

Depuración

Cargar bibliotecas compartidas con diferentes cargadores de clases

En Android 9 y versiones anteriores, las aplicaciones cargaban sus bibliotecas compartidas de Java vinculadas en el cargador de clases de la aplicación. En Android 10, el marco utiliza un cargador de clases diferente al cargador de clases de la aplicación para cargar bibliotecas compartidas de Java vinculadas a través de uses-library o uses-static-library .

En general, las aplicaciones no deberían depender del uso de un cargador de clases específico, por lo que este cambio no debería alterar el comportamiento de la aplicación. Sin embargo, si una aplicación depende del uso de un único cargador de clases, ese comportamiento no funciona. Además, la visibilidad privada de paquetes de clases en el mismo paquete aún se admite, pero no se admite en bibliotecas compartidas.

Los fabricantes de dispositivos pueden ver problemas de compatibilidad de aplicaciones mientras prueban sus dispositivos con Android 10.

Características de seguridad

Para obtener una lista más completa de mejoras relacionadas únicamente con la seguridad y la privacidad, consulte la página de mejoras de seguridad y privacidad de Android 10 .

Autenticación facial

La autenticación facial permite a los usuarios desbloquear su dispositivo simplemente mirando la parte frontal de su dispositivo. Android 10 agrega soporte para una nueva pila de autenticación facial que puede procesar de forma segura los fotogramas de la cámara, preservando la seguridad y la privacidad durante la autenticación facial en hardware compatible. Android 10 también proporciona una manera fácil para que las implementaciones compatibles con la seguridad permitan la integración de aplicaciones para transacciones como banca en línea u otros servicios.

Acceso ampliado

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

Cifrado

OEMCrypto

Android 10 usa OEMCrypto API versión 15.

Pruebas

LímitesDesinfectante

Android 10 implementa BoundsSanitizer (BoundSan) en Bluetooth y códecs. BoundSan utiliza el desinfectante de límites de UBSan. Esta mitigación se habilita a nivel de módulo. Ayuda a mantener seguros los componentes críticos de Android y no debe desactivarse. BoundSan está habilitado en los siguientes códecs:

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

Desinfección de desbordamiento de enteros

Android 10 habilita la desinfección de desbordamiento de enteros (IntSan) en códecs de software. Asegúrese de que el rendimiento de reproducción sea aceptable para cualquier códec que no sea compatible con el hardware del dispositivo. IntSan está habilitado 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 para los binarios del sistema AArch64 están marcadas como de solo ejecución (no legibles) como una mitigación de refuerzo contra ataques de reutilización de código justo a tiempo. El código que mezcla datos y código y el código que inspecciona intencionadamente estas secciones (sin reasignar primero los segmentos de memoria como legibles) ya no funciona. Las aplicaciones con un SDK de destino de Android 10 (nivel de API 29 o superior) se ven afectadas si la aplicación intenta leer secciones de código de bibliotecas del sistema habilitadas para memoria de solo ejecución (XOM) en la memoria sin marcar primero la sección como legible.

escudo

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

Pila de llamadas de sombra

ShadowCallStack (SCS) es un modo de instrumentación de LLVM que protege contra sobrescrituras de direcciones de retorno (como desbordamientos del búfer de pila) al guardar la dirección de retorno de una función en una instancia de ShadowCallStack asignada por separado en el prólogo de funciones de funciones que no son hojas y cargar la dirección de retorno desde la instancia ShadowCallStack en el epílogo de la función.

Audio

AudioHAL

Android 10 incluye las siguientes nuevas capacidades para audio HAL .

  • AudioSource
  • AudioFormat
  • AudioChannelMask

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

Efectos de preprocesamiento

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

Administrador de políticas de audio

Android 10 incluye una refactorización significativa del administrador de políticas de audio para brindar más flexibilidad para admitir casos de uso automotrices complejos.

Audio de alta resolución

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

  • Soporte flotador
  • Soporte de frecuencia de 192 KHz
  • Soporte de ocho canales
  • Inclusión de información de tiempos.

captura concurrente

Android 10 mejora la experiencia del usuario de captura simultánea que requiere que se realice más de una captura de audio activa simultáneamente.

AudioReproducciónCaptura

Android 10 contiene una nueva API llamada AudioPlaybackCapture , que brinda a las aplicaciones la capacidad de copiar el audio que reproducen otras aplicaciones. Esta función es similar a la captura de pantalla, pero para audio. El caso de uso principal es permitir que las aplicaciones de transmisión capturen el audio que se reproduce en los juegos.

La API de captura no afecta la latencia de la aplicación cuyo audio se captura.

midi

Android 10 facilita la transferencia de aplicaciones de audio profesionales que utilizan MIDI a la plataforma Android mediante la API AMidi 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, consulte Actualizaciones de la cámara de Android 10 .

Mejoras en la privacidad del marco de la cámara

Android 10 introduce mejoras de privacidad en el marco de la cámara. Para evitar exponer información estática de la cámara potencialmente confidencial en CameraCharacteristics sin el consentimiento del usuario, las aplicaciones deben obtener el permiso CAMERA para recuperar metadatos estáticos con una etiqueta sensible a la privacidad mediante el método getCameraCharacteristics .

Para obtener una lista de las claves de características de la cámara que requieren el permiso CAMERA , llame 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 mejorar el rendimiento a través de un mayor control sobre la lógica de reconfiguración de los parámetros internos de la sesión.

API de gestión del búfer HAL3 de la cámara

Android 10 presenta API de administración de búfer HAL3 de cámara opcionales que le permiten implementar lógica de administración de búfer para lograr memoria diferente y capturar compensaciones de latencia en implementaciones de cámara HAL.

Cámara HAL interruptor de cámara física dinámica

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, consulte Compatibilidad con varias cámaras .

Soporte para ocultar cámaras físicas.

En Android 10, la cámara HAL puede reducir la cantidad de cámaras físicas que una aplicación puede abrir directamente. Para obtener más detalles, consulte Compatibilidad con múltiples cámaras .

API VNDK de cámara 2

En Android 10, los módulos de proveedores pueden acceder y controlar dispositivos de cámara a través de dos nuevas interfaces HIDL estándar, 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 presenta una biblioteca disponible para el proveedor, libcamera2_vendor . Esta biblioteca es similar a la biblioteca Camera NDK , con algunas modificaciones menores.

Configuraciones de transmisión

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

Requisitos de combinación de transmisión de cámara

Ya no es necesario que los dispositivos que ejecutan Android 10 admitan combinaciones de transmisiones con transmisiones físicas de subcámaras. Sin embargo, los dispositivos que ejecutan Android 10 con la cámara HAL versión 3.5 deben admitir isStreamCombinationSupported() para permitir que las aplicaciones consulten si se admite una combinación de transmisiones que contenga transmisiones físicas.

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

imágenes HEIF

Android 10 proporciona soporte nativo de cámara para imágenes en 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 soporte adicional para el formato de transmisión Y8, metadatos estáticos de matriz de filtros de color monocromáticos e infrarrojos cercanos (NIR) y funciones DngCreator para cámaras monocromáticas .

Conectividad

Llamadas y mensajes

Números de emergencia y llamadas de emergencia

Android 10 proporciona soporte mejorado para llamadas de emergencia . En caso de emergencia, los dispositivos compatibles con IRadio HAL v1.4 pueden iniciar una llamada de emergencia utilizando números de emergencia recuperados 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 las categorías de servicios de emergencia, como policía, bomberos y ambulancia.

API de llamadas grupales

Las API de llamadas grupales son una extensión de las API de eMBMS agregadas en Android 9. Las nuevas API definen un estándar para que las aplicaciones se unan y transmitan en llamadas grupales de transmisión celular interactuando con paquetes de middleware eMBMS. Las llamadas grupales requieren el apoyo del proveedor del chipset, del proveedor del middleware y del operador de telefonía celular para funcionar correctamente. La documentación para desarrolladores se encuentra en desarrollador.google.com .

Capacidades de SIM remota

Android 10 introduce capacidades SIM remotas que permiten que las aplicaciones de mensajería en un dispositivo host Android envíen mensajes SMS a través de teléfonos utilizando mecanismos como Bluetooth. Para obtener más información, consulte la documentación de referencia para el método getSubscriptionType y la constante SUBSCRIPTION_TYPE_REMOTE_SIM .

Múltiples eSIM

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

actualizaciones de eSIM

Para dispositivos con Android 10 que admiten eSIM, se debe definir una matriz de ID de ranura eUICC no extraíble. Los dispositivos también deben admitir IRadio HAL v1.4 e IRadioConfig HAL v1.2. Para obtener más información, consulte Implementación de requisitos de eSIM y HAL .

5G no autónomo (NSA)

Android 10 agrega soporte para 5G no independiente (NSA) . 5G NSA es una solución para redes 5G donde la red está respaldada por 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 de teléfono

Android 10 introduce el servicio de sugerencia de cuentas de teléfono , que permite mostrar sugerencias de cuentas de teléfono a los usuarios al realizar una llamada.

Transportador

Migrar la configuración de la red móvil

Android 10 rediseñó el código de interfaz de usuario de configuración de red móvil y lo movió de la pila de Telefonía a la pila de Configuración. Para admitir el código migrado, cambie los siguientes valores de configuración de la red móvil de recursos de Android a recursos 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 serie de compilación) están protegidos por un permiso privilegiado y también se otorga acceso a las aplicaciones del propietario del perfil y del dispositivo. Debido a que el número de serie IMSI y SIM los proporciona el operador, el acceso a estos identificadores se otorga a los paquetes con privilegios de operador.

Wifi

Seleccion de red

Android evalúa continuamente la calidad de la red conectada y evalúa la calidad de las redes disponibles. Android 10 cuenta con algoritmos y procedimientos actualizados para seleccionar y cambiar entre redes Wi-Fi .

Escaneo de descarga de red preferida Wi-Fi

Android 10 introduce un método API opcional llamado setDeviceMobilityState() en WifiManager que aumenta el intervalo entre escaneos de descarga de red preferida (PNO) cuando el dispositivo está estacionario para reducir el uso de energía.

Wi-Fi del operador

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

Conexión fácil Wi-Fi

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

Modo Wi-Fi de baja latencia

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

Servidor DHCP actualizado

Como parte de la formación de un servicio general de "Servidor IP", se eliminará 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 marco de Java. Esto mejora la seguridad y la capacidad de actualización del servidor DHCP. Para obtener más detalles, consulte packages/modules/NetworkStack/src/android/net/dhcp/DhcpServer.java .

No se requiere ninguna acción para implementar este cambio: todos los dispositivos que lanzan y actualizan a Android 10 usan DhcpServer de forma predeterminada. Si tiene personalizaciones en el servidor DHCP, puede volver al comportamiento de Android 9 configurando la configuración global tether_enable_legacy_dhcp_server=1 . El nuevo DhcpServer está incluido en el módulo de componentes de red, por lo que cualquier personalización de la funcionalidad del servidor DHCP debe actualizarse.

WPA3 y Wi-Fi mejorado abierto

Android 10 agrega soporte para los estándares de seguridad Wi-Fi Protected Access 3 (WPA3) y Wi-Fi Enhanced Open para brindar mayor privacidad y solidez contra ataques conocidos.

Wi-Fi directo

Wi-Fi Direct , también conocido como Wi-Fi P2P, permite que los dispositivos compatibles se descubran y se conecten entre sí directamente utilizando el protocolo Wi-Fi Direct sin acceso a Internet o a la red celular.

Mejoras en la aleatorización de MAC

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

Punto de paso R2

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

NFC

NFC seguro

Secure NFC permite habilitar la emulación de tarjetas NFC externas solo cuando la pantalla del dispositivo está desbloqueada. La implementación de esta función brinda a los usuarios la opción de habilitar Secure NFC para mejorar la seguridad.

Android Beam en desuso

En Android 10, Android Beam ya no es necesario y las siguientes interfaces y métodos han quedado obsoletos.

Interfaces:

Métodos:

Para utilizar Android Beam, informe la característica constante android.sofware.nfc.beam .

Gráficos

Control de superficie

Android 10 agrega ASurfaceControl , una nueva forma para que SurfaceFlinger acepte buffers.

Implementación de gráficos

Capas 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 nuevas funciones de EGL 1.5, consulte la especificación Khronos Releases EGL 1.5 .

vulcano

Android 10 incluye soporte para gráficos Vulkan 1.1. La plataforma también es compatible con VK_KHR_swapchain v70, por lo que la aplicación Vulkan puede crear una VkImage respaldada por la memoria de swapchain.

Frecuencia de actualización de rendimiento

Android 10 agrega soporte para una frecuencia de actualización del rendimiento. Esta función está desactivada de forma predeterminada.

Interacción

Automotor

audio automotriz

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

Navegación gestual

Android 10 introduce una opción para un sistema de navegación totalmente gestual. Para obtener información sobre cómo preparar aplicaciones para usar esta función, consulte la página de navegación gestual en el sitio para desarrolladores de Android.

Redes neuronales

Android 10 introduce actualizaciones de la API de Neural Networks y de Neural Networks HAL. Para obtener un resumen de los cambios, consulte Redes neuronales .

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

Sensores

Sensores HAL 2.0

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

Sensores apagados

Android 10 incluye una configuración de desarrollador para apagar todos los sensores de un dispositivo. Esta característica ayuda a los desarrolladores a probar la funcionalidad de su aplicación en situaciones en las que esos sensores dejan de estar disponibles y también brinda a los usuarios una forma de controlar los sensores en su dispositivo.

Si sus dispositivos utilizan la implementación predeterminada de SensorService , CameraService y AudioPolicyService , no se necesita ninguna personalización adicional en el diseño de referencia. Si tiene otros sensores, consulte Personalización para obtener más detalles sobre cómo admitir esta función.

Medios de comunicación

Componentes multimedia actualizables

Android 10 proporciona componentes multimedia actualizables que permiten actualizar los componentes del sistema modular relacionados con los medios a través de la infraestructura de Google Play Store o mediante un mecanismo inalámbrico (OTA) proporcionado por un socio.

DRM de medios

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

Descodificación

Android 10 admite la decodificación AV1 SW.

Permisos

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

Proveedor de contactos e información de afinidades.

A partir de Android 10, se accede a los datos relacionados con la afinidad de contactos, administrados por el componente Proveedor de contactos , de manera diferente que en Android 9 y versiones anteriores. Estos cambios con respecto a la accesibilidad de los datos mejoran la privacidad del usuario en todos los dispositivos con Android 10 que utilizan el componente Proveedor de contactos. La base de datos subyacente ya no contiene datos de afinidades de contacto. Por lo tanto, las aplicaciones no pueden escribir ni leer en él.

Se espera que los cambios en Android 10 tengan un gran impacto en las API. Si sus aplicaciones dependen de las funciones obsoletas mencionadas en Proveedor de contactos e Información de afinidades, es posible que desee actualizar sus aplicaciones para compensar cualquier cambio. Además, si utiliza una versión bifurcada del Proveedor de contactos, debe actualizar su Proveedor de contactos.

Permisos de ubicación de tres estados

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

Recordatorio de acceso a la ubicación en segundo plano

Android 10 presenta un recordatorio de ubicación de acceso en segundo plano , que aumenta la transparencia sobre cuánto acceso tienen las aplicaciones a la ubicación de un dispositivo y ayuda a los usuarios a mantener el control sobre dicho acceso.

Restringir ubicaciones oportunistas

Cuando una aplicación solicita la ubicación de un dispositivo, puede esperar la respuesta a la solicitud o, mediante el uso de oyentes de ubicación activos, obtener una actualización de ubicación oportunista. A partir de Android 10, para obtener actualizaciones de ubicación oportunistas , los desarrolladores deben especificar que necesitan actualizaciones de ubicación pasivas de la clase FusedLocationProviderClient .

Inicio de aplicaciones en segundo plano

En Android 10, las aplicaciones sin privilegios sin una ventana visible no pueden iniciarse automáticamente en primer plano. Este cambio suprime los anuncios emergentes y las adquisiciones maliciosas. No se requiere ninguna acción para habilitar esto.

Zona de pruebas de aplicaciones

En Android 10, las aplicaciones tienen una vista sin formato limitada del sistema de archivos, sin acceso directo a rutas como /sdcard/DCIM . Sin embargo, las aplicaciones conservan acceso completo y sin formato a las rutas específicas de su paquete, según lo devuelto por cualquier método aplicable, como Context.getExternalFilesDir() . Las aplicaciones aún tienen acceso completo y sin formato a las rutas específicas de sus paquetes.

Utilice las pautas de la zona de pruebas de la aplicación para compartir archivos a fin de proporcionar una granularidad adecuada para compartir datos.

Restringir el acceso al portapapeles de la aplicación

En Android 10, el acceso al portapapeles cambió para que el contenido del portapapeles no se pueda ver llamando ClipboardManager.getPrimaryClip o agregando un oyente onPrimaryClipChangedListener para recibir notificaciones cuando cambia el portapapeles. Esto aumenta la privacidad del usuario y evita que las aplicaciones maliciosas modifiquen el portapapeles.

En Android 10, el acceso de lectura solo está permitido a la aplicación actual con foco de entrada o al teclado actual. La llamada de escucha ClipboardManager.onPrimaryClipChanged() ahora solo se activa para aplicaciones que cumplen dichas restricciones. ClipboardManager.getPrimaryClip y ClipboardManager.getPrimaryClipDescription devuelven null si la aplicación solicitante no es el editor de métodos de entrada (IME) predeterminado o no tiene foco de entrada.

Los permisos de tiempo de ejecución incluyen el reconocimiento de actividad.

Los usuarios ahora ven un cuadro de diálogo de reconocimiento de actividad cuando una aplicación accede a la ubicación del dispositivo en segundo plano. Los permisos de tiempo de ejecución con restricciones estrictas deben incluirse correctamente en la lista blanca de Android 10.

Permiso MANAGE_DEVICE_ADMINS

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

Compartir mejoras de API

Android 10 proporciona una serie de nuevas funciones API de la plataforma Android relacionadas con el uso compartido . Si modificó el código de la hoja para compartir en su implementación, asegúrese de que su implementación admita estas nuevas características. Si no ha modificado el código de la hoja para compartir en su implementación, no necesita hacer nada para admitir estas nuevas funciones.

Tiempo de ejecución de Android (ART)

Configuración firmada

La función de configuración firmada permite incrustar la configuración de restricciones de interfaz que no son del SDK en los APK. Esto permite eliminar interfaces específicas que no pertenecen al SDK de la lista negra, para que AndroidX pueda usarlas de forma segura. Con este cambio, AndroidX puede agregar soporte para nuevas funciones en versiones anteriores de Android.

Actuación

Capa de abstracción de grupo C

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 para aplicar a un hilo o proceso.

Demonio asesino de poca memoria (lmkd)

Android 10 admite un nuevo modo lmkd que utiliza monitores de información de parada de presión del kernel (PSI) para detectar la presión de la memoria.

Fuerza

Gestión de energía de la plataforma

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

Ahorro de batería de rutina

Android 10 introduce una nueva opción de programación de ahorro de batería llamada basada en rutina . El ahorro de batería de rutina permite que una aplicación elegida por el OEM proporcione señales al sistema para una programación de ahorro de batería más inteligente. Esta opción requiere configuración y su implementación es opcional.

Estadísticas de potencia HAL

En Android 10, IPowerStats.hal reemplaza las API de recopilación de estadísticas de energía en IPower.hal . Si bien Power HAL aún admite las API, en el futuro se migrarán exclusivamente a Power Statistics HAL.

HAL de estadísticas de energía incluye nuevas API para admitir la recopilación de datos de la medición de energía en el dispositivo, para 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 sugerencias de energía permanecen en HAL de energía y no cambian.

Mitigación térmica

El marco térmico en Android 10 abstrae las interfaces del dispositivo para el sensor de temperatura del subsistema térmico, incluida la CPU, la GPU, la batería, la cubierta y el dispositivo de enfriamiento. El marco introduce una interfaz de sondeo para consultar el estado térmico para iniciar la limitación y una interfaz de devolución de llamada para enviar un mensaje al usuario cuando se excede un umbral.

Android 10 proporciona los nuevos tipos de datos a través de la interfaz IThermalService utilizando estos tres nuevos métodos:

Las aplicaciones agregan y eliminan los oyentes y el estado de la temperatura de acceso en la clase PowerManager . Solo un servicio de sistema confiable, como una API de Android, o la API del fabricante de dispositivos de dispositivos puede acceder a la información sobre eventos causales asociados. Los fabricantes de dispositivos o los fabricantes de SOC deben implementar thermal HAL 2.0 para permitir la funcionalidad completa del nuevo marco térmico.

Para un ejemplo de implementación de mitigación térmica, consulte la implementación de referencia .

Actualizaciones

Formato de archivo APEX

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

Particiones dinámicas

Las particiones dinámicas introducen un sistema de partición del espacio de usuario en Android, lo que permite crear, redimensionar o destruir particiones durante las actualizaciones de OTA. Los fabricantes de dispositivos no tienen que preocuparse por los tamaños individuales de particiones, como system , vendor y product . En cambio, se asigna una gran super partición, y las subparticiones pueden ser dimensionadas dinámicamente dentro de ella.

Actualizaciones dinámicas del sistema

Las actualizaciones dinámicas del sistema (DSU) le permiten hacer una imagen del sistema Android que los usuarios pueden descargar desde Internet y probar sin el riesgo de corromper la imagen actual del sistema.

Copia de seguridad y restauración multiuser

Android 10 admite la funcionalidad de copia de seguridad y restauración para todos los usuarios en un dispositivo. Anteriormente, la copia de seguridad y la restauración solo estaban disponibles para el usuario del sistema. La copia de seguridad y la restauración para los usuarios de no sistemas se desactivan de forma predeterminada, ya que solo tiene cobertura parcial para configuraciones, papel tapiz y componentes del sistema.

Superposiciones

Los usuarios que trabajan con userdebug o eng Builds esperan poder montar eficientemente la partición del sistema como lectura-escritura y luego agregar o modificar cualquier número de archivos sin reflexionar la imagen del sistema. Puede usar Overlayfs , que establece automáticamente el almacenamiento de respaldo para un sistema de archivos de escritura como referencia superior, y se monta sobre la parte inferior. Estas acciones ocurren en las solicitudes adb disable-verity y adb remount . Para obtener más detalles, consulte el readme de Overlayfs en AOSP.

Soporte de biblioteca compartida en modo de recuperación

En Android 10, las bibliotecas compartidas están disponibles en la partición de recuperación, lo que elimina la necesidad de que todos los ejecutables del modo de recuperación sean estáticos. Las bibliotecas compartidas se encuentran en el directorio /system/lib (OR /system/lib64 para dispositivos de 64 bits) en la partición.

Para agregar una nueva biblioteca compartida a la partición de recuperación, agregue recovery_available: true o recovery: true to Android.bp de la biblioteca compartida. El primero instala la biblioteca tanto en el sistema como en las particiones de recuperación, mientras que la última la instala solo para la partición de recuperación.

El soporte de biblioteca compartida no se puede construir con el sistema de compilación basado en Android. Para convertir un ejecutable estático existente para el modo de recuperación a uno dinámico, elimine 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 presenta la función de control de datos de datos del usuario (UDC) , que permite a Android volver a su estado anterior cuando falla una actualización de Android Over-the-Air (OTA).