Google ha lanzado una plataforma móvil abierta. Android El código fuente de la nueva versión se ha publicado en el repositorio Git del proyecto (rama android-14.0.0_r1). Se han preparado actualizaciones de firmware para dispositivos Pixel. Posteriormente, se planean actualizaciones de firmware para smartphones de Samsung Galaxy, iQOO, Nothing, OnePlus, Oppo, Realme, Sharp, Sony, Tecno, vivo y Xiaomi. Además, se han creado compilaciones GSI (Generic System Images) universales, compatibles con diversos dispositivos basados en las arquitecturas ARM64 y x86_64.
Principales novedades:
- La plataforma principal incluye el repositorio Health Connect, que anteriormente estaba disponible como un paquete separado a través de Google Play. Health Connect proporciona almacenamiento centralizado de datos de pulseras de fitness y otros dispositivos relacionados con la salud del usuario, y organiza el acceso conjunto a los datos de salud entre diferentes aplicaciones. El acceso a la configuración de Health Connect ahora se proporcionará a través del configurador de plataforma estándar; por ejemplo, a través de la configuración de privacidad puede controlar a qué datos de salud pueden acceder ciertas aplicaciones. Además, Health Connect ha agregado soporte para guardar información sobre la ruta recorrida durante el entrenamiento (el usuario determina el período de tiempo durante el cual se guardará la lista de waypoints). La ruta se puede visualizar en un mapa y, opcionalmente, transmitirse a otras aplicaciones para su procesamiento, previa confirmación explícita de la operación por parte del usuario.

- Se han ampliado los medios para confirmar el acceso a la información de ubicación. Se ha agregado una nueva sección al cuadro de diálogo que solicita confirmación del acceso a la ubicación con información sobre cuándo se transfieren los datos de ubicación a la aplicación (el acceso está denegado, se permite solo una vez y se permite cada vez que se ejecuta la aplicación) y detalles sobre dónde puede obtener información adicional. sobre el acceso a los datos transferidos.

- Se implementó la visualización periódica (una vez al mes) de notificaciones que advierten sobre cambios realizados por aplicaciones a las que se les otorga acceso a la ubicación, métodos de transferencia de datos a terceros (por ejemplo, se muestra cuando una aplicación comienza a utilizar datos de ubicación al mostrar publicidad).

- Cuando se trabaja con aplicaciones, se implementó una información sobre herramientas de flecha hacia atrás más prominente para que sea más fácil comprender la posibilidad de usar el gesto en pantalla para regresar.

- El mecanismo Sharesheet, que se utiliza para enviar datos (como una imagen o un enlace) fuera de la aplicación o a otro usuario, tiene la capacidad de agregar sus propias acciones. Por ejemplo, puede definir su propia lista de controladores de ChooserAction que muestran las aplicaciones y los usuarios a los que se puede enviar. Además, se ha ampliado la gama de señales utilizadas para medir objetivos para el envío directo de datos.

- Es posible otorgar parcialmente permisos para acceder solo a fotos y videos seleccionados por el usuario (READ_MEDIA_VISUAL_USER_SELECTED, los archivos a los que se otorga acceso son seleccionados por el usuario a través de la interfaz del selector de fotos cuando aparece el cuadro de diálogo de solicitud de permisos). Una vez que la aplicación se coloca en segundo plano o se finaliza el programa, el permiso otorgado por el usuario se revoca automáticamente. En el cuadro de diálogo para confirmar los permisos de acceso de la aplicación a archivos multimedia, ahora es posible proporcionar acceso sólo a fotos o vídeos seleccionados.

- Se ha agregado una sección al configurador para anular la configuración de preferencia regional, como las unidades de temperatura, el primer día de la semana y el sistema numérico. Por ejemplo, un europeo que vive en los EE. UU. podría configurarlo para mostrar las temperaturas en grados Celsius en lugar de Fahrenheit y considerar el lunes como el comienzo de la semana en lugar del domingo.

- Se han ampliado las capacidades de escala de fuentes, el nivel máximo de escala de fuentes se ha aumentado del 130 % al 200 % y, para garantizar que el texto con un gran aumento no parezca demasiado grande, ahora se aplica automáticamente un cambio no lineal en el nivel de escala ( el texto grande no se amplía tanto como el texto pequeño), lo que permitirá una legibilidad óptima del texto para personas con baja visión sin riesgo de distorsiones en el diseño de la interfaz.

- El soporte para grabar vídeo con alto rango dinámico (HDR), que aparecía en el hilo anterior, se ha ampliado con la posibilidad de obtener información adicional de la cámara, permitiendo guardar imágenes en el formato “Ultra HDR”, que utiliza 10 bits por canal para codificación de colores. El formato Ultra HDR es totalmente compatible con JPEG, lo que permite que las aplicaciones trabajen con imágenes HDR sin modificaciones y, si es necesario, mostrarlas utilizando el rango de brillo normal. La plataforma habilita automáticamente la salida HDR cuando la compatibilidad con HDR está habilitada en el manifiesto de la aplicación o cuando se llama a Window.setColorMode. Para la renderización Ultra HDR independiente usando OpenGL o Vulkan, se puede usar la clase Gainmap.

- Los tipos de aplicaciones que pueden mostrar notificaciones en pantalla completa cuando la pantalla está bloqueada son limitados. Estas notificaciones están diseñadas para llamar la atención sobre información que requiere una acción inmediata, como una llamada entrante o una alarma, por lo que la capacidad de mostrar dichas notificaciones ahora se limitará a las aplicaciones de llamadas y alertas.
- Control mejorado de la animación que señala la transición entre diferentes pantallas (hojas) en la aplicación cuando se utiliza un gesto deslizante que cambia el contenido. Se han agregado nuevos componentes para animar el cambio de las pantallas inferior y lateral, así como para llamar a la búsqueda. API agregada para crear sus propios efectos de transición en la aplicación.
- El conjunto de Extensiones de cámara se ha actualizado para brindar la capacidad de utilizar algoritmos de ejecución más prolongada que requieren un procesamiento de imágenes computacional intensivo, como mejorar la calidad de imágenes con poca luz. Se agregaron funciones para predecir retrasos en el procesamiento de imágenes, obtener información sobre el progreso del procesamiento y obtener rápidamente una versión preliminar de la imagen antes de que se complete la imagen final. Se implementó un modo de vista previa de SurfaceView más optimizado y energéticamente eficiente. Cuando se utilizan extensiones, se proporciona soporte táctil para enfocar y hacer zoom.
- Se proporciona soporte para utilizar las capacidades integradas de escala y recorte de la cámara para imágenes RAW transferidas.
- Para los auriculares con cable conectados mediante USB, se ha agregado la posibilidad de utilizar formatos de sonido sin pérdida de calidad (lossless). La clase AudioMixerAttributes se ha agregado a la API, lo que le permite enviar audio directamente al dispositivo, sin mezclar, ajustar el volumen ni procesar efectos.
- La API de gráficos implementa la clase Mesh, que le permite crear sus propias variantes de una malla poligonal con sombreadores de vértices y fragmentos escritos en el lenguaje AGSL.
- Se agregó la capacidad de acelerar el procesamiento por hardware en un búfer, implementada a través de la clase HardwareBufferRenderer.
- La clase Path, que le permite crear gráficos vectoriales basados en rutas geométricas compuestas, se agregó para admitir la interpolación entre rutas con una estructura similar para crear un efecto de transformación y usar PathIterator para iterar secuencialmente sobre todos los segmentos de la ruta.
- Se ha ampliado la posibilidad de vincular configuraciones de idioma individuales a diferentes aplicaciones. Se ha introducido la opción de definir una lista de idiomas que se mostrarán en el configurador. Android al seleccionar un idioma para una aplicación específica.
- Áreas ampliadas en las que el sistema muestra información relacionada con la privacidad definida por el desarrollador en el formulario de Play Console, como políticas relacionadas con el intercambio de datos con terceros. Por ejemplo, dicha información ahora se muestra en el cuadro de diálogo de solicitud de permisos.
- Las aplicaciones que utilizan controladores en segundo plano ahora deben especificar el tipo de servicio en segundo plano. Durante la operación, el sistema verifica el cumplimiento del tipo de servicio especificado, los permisos solicitados y la API utilizada. Por ejemplo, si una aplicación especifica un tipo de servicio en segundo plano FOREGROUND_SERVICE_TYPE_LOCATION, se da a entender que puede solicitar los permisos ACCESS_COARSE_LOCATION o ACCESS_FINE_LOCATION.
- Se han realizado cambios para mejorar la seguridad: las aplicaciones tienen prohibido enviar solicitudes de intención a algunos componentes internos de la plataforma. El código cargado dinámicamente ahora debería estar marcado con el atributo de acceso de solo lectura. Las funciones ZipFile(String) y ZipInputStream.getNextEntry() no permiten el procesamiento de archivos zip cuyas rutas comiencen con el carácter “/” o contengan la secuencia “..”. Se limitó el inicio del trabajo desde controladores en segundo plano y se actualizaron las restricciones en el área de llamada a interfaces de programas que no se proporcionan en el SDK.
- Al conectar el dispositivo vía USB a una computadora de escritorio, además de los modos de interacción disponibles anteriormente, como transferencia de archivos, carga, embarque, etc., fue posible utilizar el teléfono inteligente como cámara web (modo UVC, USB Video Class) . De forma predeterminada, esta función está deshabilitada, pero puede activarse si tiene acceso de root.
- Continuamos mejorando el rendimiento de la plataforma en tablets y dispositivos con pantallas plegables. Se proporcionan bibliotecas para predecir eventos asociados con el movimiento del puntero y proporcionar baja latencia cuando se trabaja con lápices ópticos. Se proporcionan plantillas de interfaz para pantallas grandes para adaptarse a usos tales como redes sociales, comunicaciones, contenido multimedia, lectura y compras.
- Se ha agregado un permiso separado para permitir que las aplicaciones inicien acciones cuando la aplicación está en segundo plano. La activación en segundo plano está limitada para no distraer al usuario mientras trabaja con la aplicación actual. Las aplicaciones activas tienen más control sobre cómo otras aplicaciones con las que interactúan activan las acciones.
- El sistema de administración de memoria se ha optimizado para asignar recursos de manera más racional a las aplicaciones que se ejecutan en segundo plano. Unos segundos después de que la aplicación ingrese al estado almacenado en caché, el trabajo en segundo plano se limita a trabajar con las API que administran el ciclo de vida de la aplicación, como la API de Foreground Services, JobScheduler y WorkManager.
- Las notificaciones marcadas con la bandera FLAG_ONGOING_EVENT ahora se pueden descartar cuando se muestran en un dispositivo con la pantalla desbloqueada. Si el dispositivo está en modo de bloqueo de pantalla, dichas notificaciones no se descartarán. Las notificaciones que son importantes para el funcionamiento del sistema también permanecerán como no rechazadas.
- Se han agregado nuevos métodos a la API PackageInstaller: requestUserPreapproval(), que permite que el catálogo de aplicaciones retrase la descarga de paquetes APK hasta que reciba la confirmación de la instalación por parte del usuario; setRequestUpdateOwnership(), que le permite asignar futuras actualizaciones de aplicaciones al instalador; setDontKillApp(), que le permite configurar funciones adicionales para la aplicación mientras trabaja con el programa. La API InstallConstraints brinda a los instaladores la capacidad de activar una instalación de actualización de la aplicación cuando la aplicación no está en uso.
- Se continuó trabajando para mejorar el desempeño de la plataforma en tabletas y dispositivos con pantalla plegable. Se actualizaron las pautas para diseñar aplicaciones para dispositivos de pantalla grande y se agregaron plantillas genéricas de interfaz de usuario de pantalla grande para aplicaciones como redes sociales, comunicación, multimedia, lectura y compras. Se propone una versión preliminar del Cross device SDK con herramientas para desarrollar aplicaciones que funcionen correctamente con diferentes tipos de dispositivos (teléfonos inteligentes, tabletas, televisores inteligentes, etc.) y diferentes factores de forma.
- Se ha optimizado la coordinación del trabajo en segundo plano que consume muchos recursos, como la descarga de archivos grandes cuando hay una conexión Wi-Fi. Se realizaron cambios en la API para iniciar servicios prioritarios (Foreground Service) y programar tareas (JobScheduler), lo que agregó nueva funcionalidad para trabajos iniciados por el usuario relacionados con la transferencia de datos. Se han introducido requisitos para indicar el tipo de servicios prioritarios a lanzar (trabajo con la cámara, sincronización de datos, reproducción de datos multimedia, seguimiento de ubicación, acceso al micrófono, etc.). Es más fácil definir las condiciones para activar la descarga de datos, por ejemplo, descargar solo cuando se accede a través de Wi-Fi.
- El sistema interno para enviar mensajes de difusión a las aplicaciones (sistema de difusión) está optimizado para reducir el consumo de energía y mejorar la capacidad de respuesta. Aceptación mejorada de flujos de mensajes registrados por parte de las aplicaciones: los mensajes se pueden poner en cola, combinar (por ejemplo, una serie de mensajes BATTERY_CHANGED se agregarán en uno) y se entregarán solo después de que la aplicación salga del estado almacenado en caché.
- Se ha aumentado el límite en la cantidad máxima de aplicaciones almacenadas en caché, lo que ha reducido la cantidad de aplicaciones iniciadas en modo "frío" (es decir, no almacenadas en caché en la memoria y se inician más lentamente). Para dispositivos con 8 GB de RAM, después de cambiar las restricciones, la cantidad de inicios de aplicaciones "en frío" disminuyó en un 20%, y con 12 GB, en un 30%.
- El uso de la función de realizar operaciones en el momento exacto (alarmas exactas) en las aplicaciones ahora requiere obtener un permiso SCHEDULE_EXACT_ALARM por separado, ya que el uso de esta funcionalidad puede afectar negativamente la duración de la batería y conducir a un mayor consumo de recursos (para tareas programadas, es recomienda utilizar la activación en el tiempo aproximado). Las implementaciones de calendario y reloj que utilizan la activación de hora precisa deben recibir el privilegio USE_EXACT_ALARM en la instalación. La publicación en el directorio de aplicaciones de Google Play con el permiso USE_EXACT_ALARM solo está permitida para aplicaciones que implementan alarmas, temporizadores y calendarios con notificaciones de eventos.
- Se ha introducido la posibilidad de especificar la configuración de idioma para cada aplicación. Ahora, un desarrollador puede modificar la configuración de localeConfig llamando a LocaleManager.setOverrideLocaleConfig para determinar la lista de idiomas que se muestran para la aplicación en la interfaz de configuración. Android.
- Se agregó la API de inflexión gramatical para que sea más fácil agregar traducciones de elementos de la interfaz que tengan en cuenta los idiomas con un sistema de género.
- Para evitar que aplicaciones maliciosas intercepten solicitudes de intención, la nueva versión prohíbe el envío de intenciones sin especificar explícitamente un paquete o componente interno.
- Seguridad mejorada de carga de código dinámico (DCL, carga de código dinámico): para evitar la sustitución de código malicioso en archivos ejecutables cargados dinámicamente, estos archivos ahora deben tener derechos de acceso de solo lectura.
- Se prohíbe la instalación de aplicaciones para las que la versión del SDK declarada sea inferior a 23, lo que bloqueará la elusión de las restricciones de permisos mediante la vinculación a API antiguas (la versión 22 de la API está prohibida, ya que en la versión 23 (Android La versión 6.0 introdujo un nuevo modelo de control de acceso que permite solicitar acceso a los recursos del sistema sobre la marcha. Las aplicaciones instaladas previamente que utilizan API antiguas dejarán de estar disponibles tras la actualización. Android continuarán su trabajo.
- Se ha propuesto la API Credential Manager, que le permite organizar el inicio de sesión en aplicaciones utilizando las credenciales de proveedores de autenticación externos. Se ha implementado soporte para la tecnología Passkeys, que permite al usuario autenticarse sin contraseñas utilizando identificadores biométricos como huellas dactilares o reconocimiento facial. Interfaz mejorada para seleccionar una cuenta.
- В Android Runtime (ART) ahora es compatible con OpenJDK 17. Las bibliotecas Java principales de la plataforma y las herramientas de desarrollo de aplicaciones se han actualizado para ser compatibles con OpenJDK 17. Se ha añadido compatibilidad con las características del lenguaje y las clases Java disponibles en OpenJDK 17, como las clases de registro, las cadenas multilínea y la coincidencia de patrones en el operador "instanceof".
- В Android El entorno de ejecución utiliza métodos de compresión más avanzados, que reducen el tamaño de los archivos en un promedio del 9.3 % sin sacrificar el rendimiento.
- Se ha cambiado el método para actualizar los certificados de la autoridad de certificación (CA). Los certificados del sistema ya no estarán vinculados al firmware, sino que se entregarán como un paquete separado, actualizado a través de Google Play. Este enfoque facilitará el mantenimiento de certificados actualizados y la eliminación de certificados de autoridades de certificación comprometidas, y también evitará que los fabricantes de dispositivos manipulen la lista de certificados raíz y hará que el proceso de actualización sea independiente de las actualizaciones de firmware. Por otro lado, el nuevo método de entrega no permitirá al usuario realizar cambios en los certificados del sistema, incluso si tiene acceso root al sistema y tiene control total del firmware.
Fuente: opennet.ru
