Novedades de productos

La primera versión beta de Android 17

Lectura de 7 min
Ver el perfil de Matthew McCullough
Matthew McCullough Vicepresidente, Gerente de Producto, Desarrollador de Android

Hoy lanzamos la primera versión beta de Android 17, con lo que continuamos nuestro trabajo para crear una plataforma que priorice la privacidad, la seguridad y un rendimiento mejorado. Esta compilación continúa nuestro trabajo para lograr apps para Android más adaptables, presenta mejoras significativas en las funciones de cámara y contenido multimedia, nuevas herramientas para optimizar la conectividad y perfiles expandidos para dispositivos complementarios. Esta versión también destaca un cambio fundamental en la forma en que presentamos las nuevas versiones a la comunidad de desarrolladores, del modelo tradicional de versión preliminar para desarrolladores al programa de Android Canary.

Más allá de la Versión preliminar para desarrolladores

Android reemplazó la tradicional "Versión preliminar para desarrolladores" por un canal Canary continuo. Este nuevo modelo "siempre activo" ofrece tres beneficios principales:

  • Acceso más rápido: Las funciones y las APIs llegan a Canary en cuanto pasan las pruebas internas, en lugar de esperar a un lanzamiento trimestral.
  • Mejor estabilidad: Las pruebas de resistencia tempranas en Canary dan como resultado una experiencia de la versión beta más refinada con nuevas APIs y cambios de comportamiento que están más cerca de ser definitivos.
  • Pruebas más sencillas: Canary admite actualizaciones OTA (no más actualizaciones manuales) y, como canal de actualización independiente, se integra con más facilidad en los flujos de trabajo de CI y te brinda la oportunidad de enviar comentarios de inmediato sobre los próximos cambios potenciales.

Programa de Android 17

Pasaremos rápidamente de esta versión beta al hito de estabilidad de la plataforma, previsto para marzo. En este hito, entregaremos las APIs finales del SDK y el NDK, y los comportamientos finales de la app en gran medida. A partir de ese momento, tendrás varios meses antes de la versión final para completar las pruebas.

timeline1.png

Un año de lanzamientos

Planeamos que Android 17 siga recibiendo actualizaciones en una serie de lanzamientos trimestrales. La próxima versión del segundo trimestre es la única en la que introduciremos cambios de comportamiento planificados que interrumpen el funcionamiento de las apps. Planeamos lanzar una versión secundaria del SDK en el cuarto trimestre con APIs y funciones adicionales.

timeline2.png

Restricciones de orientación y cambio de tamaño

Con el lanzamiento de la versión beta de Android 17, pasamos a la siguiente fase de nuestra hoja de ruta de adaptabilidad: Android 17 (nivel de API 37) quita la opción de inhabilitación para desarrolladores de las restricciones de orientación y cambio de tamaño en dispositivos con pantalla grande (sw > 600 dp).

Cuando tu app se orienta al SDK 37, debe estar lista para adaptarse. Los usuarios esperan que sus apps funcionen en todas partes, ya sea que realicen varias tareas a la vez en una tablet, desplieguen un dispositivo o usen un entorno de ventanas de escritorio, y esperan que la IU ocupe el espacio y respete la postura del dispositivo.

Cambios clave para el SDK 37

Las apps que se orienten a Android 17 deben garantizar la compatibilidad con la eliminación gradual de los atributos del manifiesto y las APIs de entorno de ejecución que se introdujeron en Android 16. Cuando se ejecute en una pantalla grande (dimensión más pequeña ≥ 600 dp), se ignorarán los siguientes atributos y APIs:

Atributos/API del manifiestoValores ignorados
screenOrientationportrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape
setRequestedOrientation()portrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape
resizeableActivitytodos
minAspectRatiotodos
maxAspectRatiotodos

Exenciones y control del usuario

Estos cambios son específicos para pantallas grandes y no se aplican a pantallas de menos de sw600dp (incluidos los teléfonos con factor de forma de pizarra tradicional). Además, las apps categorizadas como juegos (según la categoría de app android:appCategory) están exentas de estas restricciones.

También es importante tener en cuenta que los usuarios mantienen el control. Pueden habilitar o inhabilitar de forma explícita el uso del comportamiento predeterminado de una app a través de la configuración de la relación de aspecto del sistema.

Actualizaciones de los cambios de configuración

Para mejorar la compatibilidad de las apps y ayudar a minimizar la interrupción de la reproducción de videos, la pérdida de entradas y otros tipos de pérdida de estado disruptiva, actualizaremos el comportamiento predeterminado para la recreación de actividades. A partir de Android 17, el sistema ya no reiniciará las actividades de forma predeterminada para cambios de configuración específicos que, por lo general, no requieren una recreación de la IU, incluidos CONFIG_KEYBOARD, CONFIG_KEYBOARD_HIDDEN, CONFIG_NAVIGATION, CONFIG_UI_MODE (cuando solo se cambia UI_MODE_TYPE_DESK), CONFIG_TOUCHSCREEN y CONFIG_COLOR_MODE. En cambio, las actividades en ejecución simplemente recibirán estas actualizaciones a través de onConfigurationChanged. Si tu aplicación depende de un reinicio completo para volver a cargar los recursos de estos cambios, ahora debes habilitar de forma explícita el nuevo atributo de manifiesto android:recreateOnConfigChanges, que te permite especificar qué cambios de configuración deben activar un ciclo de vida de la actividad completo (desde la detención hasta la destrucción y la creación nuevamente), junto con las constantes relacionadas mcc, mnc y las nuevas keyboard, keyboardHidden, navigation, touchscreen y colorMode.

Prepara tu app

Lanzamos herramientas y documentación para facilitarte el proceso. Nuestra entrada de blog específica tiene más orientación, con estrategias para abordar problemas comunes. Las apps deberán admitir diseños horizontales y verticales para los tamaños de ventana en todo el rango de relaciones de aspecto, ya que no será posible restringir la orientación ni la relación de aspecto. Te recomendamos que pruebes tu app con la versión beta 1 de Android 17 con emuladores de Pixel Tablet o Pixel Fold (configurados en targetSdkPreview = "CinnamonBun") o con el framework de compatibilidad de apps para habilitar UNIVERSAL_RESIZABLE_BY_DEFAULT en dispositivos con Android 16.

Rendimiento

MessageQueue sin bloqueo

En Android 17, las apps que se orienten al SDK 37 o versiones posteriores recibirán una nueva implementación de android.os.MessageQueue en la que la implementación no tiene bloqueos. La nueva implementación mejora el rendimiento y reduce los fotogramas perdidos, pero puede interrumpir a los clientes que reflejan los campos y métodos privados de MessageQueue.

Recolección generacional de elementos no utilizados

Android 17 incorpora la recolección de basura generacional al recolector de compactación de marcas simultáneas de ART. Esta optimización introduce recolecciones de generación joven más frecuentes y que consumen menos recursos, junto con recolecciones de montón completo, con el objetivo de reducir el costo de CPU y la duración de la recolección de elementos no utilizados en general. Las mejoras de ART también están disponibles para más de mil millones de dispositivos que ejecutan Android 12 (nivel de API 31) y versiones posteriores a través de las actualizaciones del sistema de Google Play.

Los campos finales estáticos ahora son verdaderamente finales

A partir de Android 17, las apps que se orienten a Android 17 o versiones posteriores no podrán modificar los campos "static final", lo que permitirá que el entorno de ejecución aplique optimizaciones de rendimiento de forma más agresiva. Si se intenta hacerlo a través de la reflexión (y la reflexión profunda), siempre se arrojará una IllegalAccessException. Si se modifican a través de la familia de métodos SetStatic<Type>Field de JNI, la aplicación fallará de inmediato.

Restricciones de la vista de notificaciones personalizadas

Para reducir el uso de memoria, restringiremos el tamaño de las vistas de notificaciones personalizadas. Esta actualización cierra un vacío legal que permite que las apps omitan los límites existentes con URIs. Este comportamiento está restringido por la versión del SDK de destino y se aplica a las apps orientadas a la API 37 y versiones posteriores.

Nuevos activadores de ProfilingManager para depurar el rendimiento

Introdujimos varios activadores del sistema nuevos en ProfilingManager para ayudarte a recopilar datos detallados para depurar problemas de rendimiento. Estos activadores son TRIGGER_TYPE_COLD_START, TRIGGER_TYPE_OOM y TRIGGER_TYPE_KILL_EXCESSIVE_CPU_USAGE.

Para comprender cómo configurar los nuevos activadores del sistema, consulta la documentación sobre la generación de perfiles basada en activadores y recuperación y análisis de datos de generación de perfiles.

Contenido multimedia y cámara

Android 17 ofrece herramientas de nivel profesional para las apps de contenido multimedia y de cámara, con funciones como transiciones fluidas y volumen estandarizado.

Actualizaciones dinámicas de la sesión de la cámara

Presentamos updateOutputConfigurations() para CameraCaptureSession. Esto te permite adjuntar y desconectar de forma dinámica las plataformas de salida sin necesidad de volver a configurar toda la sesión de captura de la cámara. Este cambio permite transiciones fluidas entre los casos de uso y los modos de la cámara (como tomar fotos o grabar videos) sin el costo de memoria ni la complejidad del código que implica configurar y mantener todas las plataformas de salida de la cámara que tu app podría necesitar durante el inicio de la cámara. Esto ayuda a eliminar las fallas o las detenciones visibles para el usuario durante la operación.

fun updateCameraSession(session: CameraCaptureSession, newOutputConfigs:  List<OutputConfiguration>)) {
    // Dynamically update the session without closing and reopening
    try {
        
        // Update the output configurations
        session.updateOutputConfigurations(newOutputConfigs)
    } catch (e: CameraAccessException) {
        // Handle error
    }
}

Metadatos de dispositivos lógicos con varias cámaras

Cuando trabajas con cámaras lógicas que combinan varios sensores de la cámara físicos, ahora puedes solicitar metadatos adicionales de todas las cámaras físicas activas que participan en una captura, no solo de la principal. Anteriormente, debías implementar soluciones alternativas, a veces asignando transmisiones físicas innecesarias, para obtener metadatos de cámaras activas secundarias (p.ej., durante un cambio de lente para el zoom en el que una cámara seguidora está activa). Esta función presenta una nueva clave, LOGICAL_MULTI_CAMERA_ADDITIONAL_RESULTS, en CaptureRequest y CaptureResult. Si configuras esta clave como ON en tu CaptureRequest, el TotalCaptureResult incluirá metadatos de estas cámaras físicas activas adicionales. Puedes acceder a estos metadatos completos con TotalCaptureResult.getPhysicalCameraTotalResults() para obtener información más detallada que te permita optimizar el uso de recursos en tus aplicaciones de cámara.

Compatibilidad con Versatile Video Coding (VVC)

Android 17 agrega compatibilidad con el estándar Versatile Video Coding (VVC). Esto incluye definir el tipo de MIME video/vvc en MediaFormat, agregar nuevos perfiles de VVC en MediaCodecInfo y, además, integrar la compatibilidad en MediaExtractor. Esta función estará disponible en dispositivos con compatibilidad con decodificación de hardware y controladores compatibles.

Calidad constante para la grabación de video

Agregamos setVideoEncodingQuality() a MediaRecorder. Esto te permite configurar un modo de calidad constante (CQ) para los codificadores de video, lo que te brinda un control más preciso sobre la calidad de video más allá de la configuración simple de la tasa de bits.

Endurecimiento del audio en segundo plano

A partir de Android 17, el framework de audio aplicará restricciones a las interacciones de audio en segundo plano, incluidas la reproducción de audio, las solicitudes de foco de audio y las APIs de cambio de volumen para garantizar que el usuario inicie estos cambios de forma intencional. 

Si la app intenta llamar a las APIs de audio mientras la aplicación no se encuentra en un ciclo de vida válido, las APIs de reproducción de audio y cambio de volumen fallarán de forma silenciosa sin que se arroje una excepción ni se proporcione un mensaje de error. La API de foco de audio fallará con el código de resultado AUDIOFOCUS_REQUEST_FAILED.

Privacidad y seguridad

Baja del atributo de tráfico de texto simple

El atributo android:usesCleartextTraffic ahora está obsoleto. Si tu app se orienta a Android 17 o versiones posteriores, y depende de usesCleartextTraffic="true" sin una configuración de seguridad de la red correspondiente, se inhabilitará el tráfico de texto no encriptado de forma predeterminada. Te recomendamos que migres a los archivos de configuración de seguridad de red para obtener un control detallado.

Criptografía híbrida de HPKE

Presentamos una interfaz de proveedor de servicios (SPI) pública para una implementación de criptografía híbrida de HPKE, que permite la comunicación segura con una combinación de clave pública y encriptación simétrica (AEAD).

Conectividad y telecomunicaciones

Historial de llamadas de VoIP mejorado

Presentamos la administración de preferencias del usuario para la integración del historial de llamadas de VoIP de la app. Esto incluye la compatibilidad con los URI de avatar de la persona que llama y de los participantes en el marcador del sistema, lo que permite un control detallado del usuario sobre la privacidad del registro de llamadas y enriquece la visualización de los registros de llamadas de VoIP integrados.

Rango y proximidad de Wi-Fi

Se mejoró la medición de distancia por Wi-Fi con nuevas funciones de detección de proximidad, lo que permite la medición de distancia continua y el descubrimiento seguro de pares. Las actualizaciones de la medición de distancia de Wi-Fi Aware incluyen nuevas APIs para identificadores de pares y almacenamiento en caché de PMKID para la medición de distancia segura de 11az.

Productividad y herramientas para desarrolladores

Actualizaciones para las apps para dispositivos complementarios

Presentamos dos perfiles nuevos en CompanionDeviceManager para mejorar la distinción de dispositivos y el manejo de permisos:

  • Dispositivos médicos: Este perfil permite que las aplicaciones para dispositivos móviles de dispositivos médicos soliciten todos los permisos necesarios con un solo toque, lo que simplifica el proceso de configuración.
  • Monitores de estado físico: El perfil DEVICE_PROFILE_FITNESS_TRACKER permite que las apps complementarias indiquen de forma explícita que administran un monitor de estado físico. Esto garantiza experiencias del usuario precisas con íconos distintos, a la vez que se reutilizan los permisos de rol de reloj existentes.

Además, CompanionDeviceManager ahora ofrece un diálogo unificado para la asociación de dispositivos y las solicitudes de permisos de Nearby. Puedes aprovechar el nuevo método setExtraPermissions en AssociationRequest.Builder para agrupar las solicitudes de permisos de dispositivos cercanos dentro del flujo de asociación existente, lo que reduce la cantidad de diálogos que se presentan al usuario.

Comienza a usar Android 17

Puedes inscribir cualquier dispositivo Pixel compatible para obtener esta y las futuras actualizaciones de la versión beta de Android de forma inalámbrica. Si no tienes un dispositivo Pixel, puedes usar las imágenes del sistema de 64 bits con Android Emulator en Android Studio.

Si actualmente participas en el programa de versiones beta de Android, recibirás una actualización inalámbrica a la versión beta 1.

Si tienes la versión beta de Android 26Q1 y quieres obtener la versión estable final de 26Q1 y salir de la versión beta, debes ignorar la actualización inalámbrica a la versión beta 1 de 26Q2 y esperar a que se lance la versión 26Q1.

Queremos conocer tu opinión, así que informa los problemas y envía solicitudes de funciones en la página de comentarios. Cuanto antes recibamos tus comentarios, más podremos incluir en nuestro trabajo para la versión final.

Para obtener la mejor experiencia de desarrollo con Android 17, te recomendamos que uses la versión preliminar más reciente de Android Studio (Panda). Una vez que hayas completado la configuración, te recomendamos que hagas lo siguiente:

  • Compila con el SDK nuevo, realiza pruebas en entornos de CI y, si encuentras algún problema, infórmalo en nuestra herramienta de seguimiento en la página de comentarios.
  • Prueba la compatibilidad de tu app actual, averigua si se ve afectada por los cambios en Android 17, instálala en un dispositivo o emulador que ejecute Android 17 y pruébala de forma exhaustiva.

Actualizaremos las imágenes del sistema de la versión preliminar o beta y el SDK con regularidad durante el ciclo de lanzamiento de Android 17. Una vez que hayas instalado una compilación de la versión beta, recibirás automáticamente las actualizaciones inalámbricas futuras de todas las versiones preliminares y betas posteriores.

Para obtener información completa, visita el sitio para desarrolladores de Android 17.

Únete a la conversación

A medida que nos acercamos a la estabilidad de la plataforma y a la versión estable final de Android 17, que se lanzará más adelante este año, tus comentarios siguen siendo nuestro recurso más valioso. Ya sea que seas un usuario pionero en el canal Canary o un desarrollador de apps que realiza pruebas en la versión Beta 1, considera unirte a nuestras comunidades y enviar comentarios. Queremos saber tu opinión.

Escrito por:
Continuar leyendo