Hoy lanzamos la primera versión beta de Android 17, lo que continúa nuestro trabajo para compilar una plataforma que priorice la privacidad, la seguridad y el rendimiento mejorado. Esta compilación continúa nuestro trabajo para lograr apps para Android más adaptables, presenta mejoras significativas en las capacidades de la cámara y el 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 llevamos nuevas versiones a la comunidad de desarrolladores, desde el modelo tradicional de Versión preliminar para desarrolladores hasta el programa 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 superan las pruebas internas, en lugar de esperar una versión trimestral.
- Mejor estabilidad: Las "pruebas de batalla" tempranas en Canary dan como resultado una experiencia beta más pulida con nuevas APIs y cambios de comportamiento que están más cerca de ser definitivos.
- Pruebas más fáciles: Canary admite actualizaciones OTA (ya no se requiere la escritura manual en la memoria flash) y, como un canal de actualización independiente, se integra más fácilmente con los flujos de trabajo de CI y te brinda la ventana más temprana para enviar comentarios inmediatos sobre los posibles cambios futuros.
El cronograma de Android 17
Pasaremos rápidamente de esta versión beta a nuestro hito de Estabilidad de la plataforma, cuyo objetivo es marzo. En este hito, entregaremos las APIs finales del SDK/NDK y los comportamientos de la app que son casi definitivos. A partir de ese momento, tendrás varios meses antes de la versión final para completar las pruebas.
Un año de lanzamientos
Planeamos que Android 17 siga recibiendo actualizaciones en una serie de lanzamientos trimestrales. La próxima versión en el segundo trimestre es la única en la que presentamos cambios de comportamiento planificados que interrumpen la app. Planeamos tener una versión menor del SDK en el cuarto trimestre con APIs y funciones adicionales.
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 adaptable: Android 17 (nivel de API 37) quita la inhabilitación para desarrolladores de las restricciones de orientación y cambio de tamaño en dispositivos de pantalla grande (ancho mínimo > 600 dp).
Cuando tu app se oriente al SDK 37, debe estar lista para adaptarse. Los usuarios esperan que sus apps funcionen en todas partes, ya sea que realicen varias tareas 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 orientadas a Android 17 deben garantizar la compatibilidad con la eliminación gradual de los atributos del manifiesto y las APIs del entorno de ejecución que se introdujeron en Android 16. Cuando se ejecuten en una pantalla grande (dimensión más pequeña ≥ 600 dp), se ignorarán los siguientes atributos y APIs:
| Atributos/APIs del manifiesto | Valores ignorados |
| screenOrientation | portrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape |
| setRequestedOrientation() | portrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape |
| resizeableActivity | todos |
| minAspectRatio | todos |
| maxAspectRatio | todos |
Exenciones y control del usuario
Estos cambios son específicos para pantallas grandes; no se aplican a pantallas más pequeñas que sw600dp (incluidos los teléfonos tradicionales con factor de forma de pizarra). Además, las apps categorizadas como juegos (según la marca android:appCategory) están exentas de estas restricciones.
También es importante tener en cuenta que los usuarios conservan el control. Pueden habilitar o inhabilitar explícitamente el uso del comportamiento predeterminado de una app a través de la configuración de 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 reproducción de video interrumpida, la entrada descartada y otros tipos de pérdida de estado disruptiva, actualizamos 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 recursos para estos cambios, ahora debes habilitarla explícitamente con el nuevo atributo del manifiesto android:recreateOnConfigChanges, que te permite especificar qué cambios de configuración deben activar un ciclo de vida completo de la actividad (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 que te resulte más fácil. Nuestra entrada de blog enfocada tiene más orientación, con estrategias para abordar problemas comunes. Las apps deberán admitir diseños horizontales y verticales para tamaños de ventana en todo el rango de relaciones de aspecto, ya que restringir la orientación o la relación de aspecto ya no será una opción. 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 que uses el framework de compatibilidad de apps para habilitar UNIVERSAL_RESIZABLE_BY_DEFAULT en dispositivos Android 16.
Rendimiento
MessageQueue sin bloqueo
En Android 17, las apps orientadas al SDK 37 o versiones posteriores recibirán una nueva implementación de android.os.MessageQueue en la que la implementación no tiene bloqueo. La nueva implementación mejora el rendimiento y reduce los fotogramas perdidos, pero puede interrumpir los clientes que reflejan los métodos y campos privados de MessageQueue.
Recolección de elementos no utilizados generacional
Android 17 introduce la recolección de elementos no utilizados generacional en el recopilador Concurrent Mark-Compact de ART. Esta optimización introduce colecciones de generación joven más frecuentes y menos intensivas en recursos junto con colecciones de montón completo, con el objetivo de reducir el costo general de la CPU y la duración de la recolección de elementos no utilizados. 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 realmente finales
A partir de Android 17, las apps orientadas a Android 17 o versiones posteriores no podrán modificar los campos "finales estáticos", lo que permitirá que el entorno de ejecución aplique optimizaciones de rendimiento de forma más agresiva. Un intento de hacerlo a través de la reflexión (y la reflexión profunda) siempre generará que se arroje IllegalAccessException. Si los modificas a través de la familia de métodos SetStatic<Type>Field de JNI, la aplicación fallará de inmediato.
Restricciones de vista de notificación personalizada
Para reducir el uso de memoria, restringimos el tamaño de las vistas de notificación personalizadas. Esta actualización cierra una vulnerabilidad que permite que las apps omitan los límites existentes con URIs. Este comportamiento está controlado por la versión del SDK de destino y entra en vigencia para las apps orientadas a la API 37 y versiones posteriores.
Nuevos activadores de ProfilingManager para la depuración de rendimiento
Presentamos 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 creación de perfiles basada en activadores y la recuperación y el análisis de datos de creación de perfiles.
Multimedia y cámara
Android 17 ofrece herramientas de nivel profesional para apps de multimedia y cámara, con funciones como transiciones fluidas y volumen estandarizado.
Actualizaciones dinámicas de la sesión de la cámara
Presentamos updateOutputConfigurations() en CameraCaptureSession. Esto te permite conectar y desconectar dinámicamente las superficies 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 imágenes fijas en comparación con grabar videos) sin el costo de memoria y la complejidad del código de configurar y conservar todas las superficies de salida de la cámara que tu app podría necesitar durante el inicio de la cámara. Esto ayuda a eliminar fallas o bloqueos 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 lógicos de dispositivos con varias cámaras
Cuando trabajes con cámaras lógicas que combinan varios sensores de cámara física, ahora puedes solicitar metadatos adicionales de todas las cámaras físicas activas involucradas 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 secundarias activas (p.ej., durante un cambio de lente para el zoom en el que está activa una cámara seguidora). Esta función presenta una nueva clave, LOGICAL_MULTI_CAMERA_ADDITIONAL_RESULTS, en CaptureRequest y CaptureResult. Si configuras esta clave en ON en tu CaptureRequest, el TotalCaptureResult incluirá metadatos de estas cámaras físicas activas adicionales. Puedes acceder a estos metadatos integrales 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 de 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 del video más allá de la configuración simple de la tasa de bits.
Endurecimiento de 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 enfoque 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 está 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 falla. La API de enfoque de audio fallará con el código de resultado AUDIOFOCUS_REQUEST_FAILED.
Privacidad y seguridad
Obsolecencia del atributo de tráfico de texto simple
El atributo android:usesCleartextTraffic dejó de estar disponible. Si tu app se orienta a (Android 17) o versiones posteriores y depende de usesCleartextTraffic="true" sin una configuración de seguridad de red correspondiente, se inhabilitará el tráfico de texto simple de forma predeterminada. Te recomendamos que migres a archivos de configuración de seguridad de red para obtener un control detallado.
Criptografía híbrida HPKE
Presentamos una interfaz pública de proveedor de servicios (SPI) para una implementación de criptografía híbrida HPKE, lo que permite una comunicación segura con una combinación de clave pública y encriptación simétrica (AEAD).
Conectividad y telecomunicaciones
Historial de llamadas VoIP mejorado
Presentamos la administración de preferencias del usuario para la integración del historial de llamadas VoIP de la app. Esto incluye compatibilidad con URIs de avatar de llamador y participante 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 VoIP integrados.
Rango y proximidad de Wi-Fi
Wi-Fi Ranging se mejoró con nuevas capacidades de detección de proximidad, que admiten el rango continuo y el descubrimiento seguro de pares. Las actualizaciones del rango de Wi-Fi Aware incluyen nuevas APIs para controladores de pares y almacenamiento en caché de PMKID para el rango seguro de 11az.
Productividad y herramientas para desarrolladores
Actualizaciones para apps de dispositivos complementarios
Presentamos dos perfiles nuevos en el 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 actividad física: El DEVICE_PROFILE_FITNESS_TRACKER perfil permite que las apps complementarias indiquen explícitamente que administran un monitor de actividad física. Esto garantiza experiencias del usuario precisas con íconos distintos mientras se reutilizan los permisos de rol de reloj existentes.
Además, el CompanionDeviceManager ahora ofrece un diálogo unificado para la asociación de dispositivos y las solicitudes de permisos de Nearby. Puedes aprovechar el nuevo setExtraPermissions método en AssociationRequest.Builder para agrupar las indicaciones de permisos 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 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 estás 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 el lanzamiento de 26Q1.
Queremos recibir tus comentarios, así que informa 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 en la versión final.
Para que tengas 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 configurado todo, estas son algunas de las acciones que debes realizar:
- Compila con el nuevo SDK, realiza pruebas en entornos de CI y notifica cualquier problema en nuestra herramienta de seguimiento en la página de comentarios.
- Prueba tu app actual para verificar la compatibilidad, descubre si tu app se ve afectada por los cambios en Android 17, instala tu app en un dispositivo o emulador que ejecute Android 17 y pruébala de forma exhaustiva.
Actualizaremos las imágenes del sistema de versión preliminar/beta y el SDK con regularidad durante el ciclo de lanzamiento de Android 17. Una vez que hayas instalado una compilación beta, recibirás automáticamente actualizaciones inalámbricas futuras para todas las versiones preliminares y betas posteriores.
Para obtener información completa, visita el sitio para desarrolladores de Android 17.
Únase a la conversación
A medida que avanzamos hacia la Estabilidad de la plataforma y la versión estable final de Android 17 más adelante este año, tus comentarios siguen siendo nuestro activo más valioso. Ya seas un usuario inicial 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.
Seguir leyendo
-
Novedades sobre productos
Hoy, mejoramos el desarrollo de Android con Gemma 4, nuestro modelo abierto de vanguardia más reciente diseñado con razonamiento complejo y capacidades autónomas de llamada a herramientas.
Matthew McCullough • Lectura de 2 min
-
Novedades sobre productos
Android 17 alcanzó oficialmente la estabilidad de la plataforma hoy con la versión beta 3. Eso significa que la superficie de la API está bloqueada; puedes realizar pruebas de compatibilidad finales y enviar tus apps orientadas a Android 17 a Play Store.
Matthew McCullough • Lectura de 5 min
-
Novedades sobre productos
Queremos que te resulte más rápido y fácil compilar apps para Android de alta calidad, y una forma en que te ayudamos a ser más productivo es poner la IA al alcance de tu mano.
Matthew McCullough • Lectura de 2 min
Mantente al día
Recibe la información más reciente sobre el desarrollo de Android en tu bandeja de entrada todas las semanas.