Novedades sobre productos

Cuarta versión beta de Android 17

Lectura de 4 min
Daniel Galpin
Representante de desarrolladores

Android 17 alcanzó la versión beta 4, la última versión beta programada de este ciclo de lanzamiento, un hito fundamental para la compatibilidad de las apps y la estabilidad de la plataforma. Ya sea que estés ajustando la experiencia del usuario de tu app, garantizando una renderización fluida de borde a borde o aprovechando las APIs más recientes, la versión beta 4 proporciona el entorno casi final con el que necesitas realizar pruebas. 

Prepara tus apps, bibliotecas, herramientas y motores de juegos.

Si desarrollas un SDK de Android, una biblioteca, una herramienta o un motor de juego, es fundamental que prepares las actualizaciones necesarias ahora para evitar que los desarrolladores de apps y juegos descendentes se vean bloqueados por problemas de compatibilidad y permitirles orientarse a las funciones más recientes del SDK. Informa a tus desarrolladores de nivel inferior si se necesitan actualizaciones para admitir Android 17 por completo.

Android17_Timeline_01_V02.png

Las pruebas consisten en instalar tu app de producción o una app de prueba que use tu biblioteca o motor con Google Play o por otros medios en un dispositivo o emulador que ejecute Android 17 Beta 4. Revisa todos los flujos de tu app y busca problemas funcionales o de IU. Cada versión de Android contiene cambios en la plataforma que mejoran la privacidad, la seguridad y la experiencia del usuario en general. Revisa los cambios de comportamiento que afectan a las apps que se ejecutan ense orientan a Android 17 para enfocar tus pruebas, incluidos los siguientes:

  • Cambio de tamaño en pantallas grandes: Una vez que segmentes tu app para Android 17, ya no podrás inhabilitar el mantenimiento de las restricciones de orientación, cambio de tamaño y relación de aspecto en pantallas grandes.
  • Carga dinámica de código: Si tu app se segmenta para Android 17 o versiones posteriores, la protección de carga dinámica de código (DCL) más segura introducida en Android 14 para archivos DEX y JAR ahora se extiende a las bibliotecas nativas. Todos los archivos nativos cargados con System.load() deben marcarse como de solo lectura. De lo contrario, el sistema arroja UnsatisfiedLinkError.
  • Habilita la CT de forma predeterminada: La transparencia de certificados (CT) está habilitada de forma predeterminada. (En Android 16, la CT está disponible, pero las apps debían habilitarla).
  • Protecciones de red local: Las apps que se segmentan para Android 17 o versiones posteriores tienen bloqueado el acceso a la red local de forma predeterminada. Si es posible, cambia a selectores que preserven la privacidad y usa el nuevo permiso ACCESS_LOCAL_NETWORK para obtener acceso amplio y persistente.
  • Endurecimiento de audio en segundo plano: A partir de Android 17, el framework de audio aplica restricciones en 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. En función de tus comentarios, realizamos algunos cambios desde la versión beta 2, como la restricción de targetSDK durante la aplicación de políticas de FGS en uso y la exención del audio de alarma. Los detalles completos están disponibles en la orientación actualizada.

Límites de memoria de la app

Android introducirá límites de memoria para las apps basados en la RAM total del dispositivo para crear un entorno más estable y determinístico para tus aplicaciones y los usuarios de Android. En Android 17, los límites se establecen de forma conservadora para establecer valores de referencia del sistema, con el objetivo de detectar fugas de memoria extremas y otros valores atípicos antes de que provoquen inestabilidad en todo el sistema, lo que genera salto de la IU, agotamiento de la batería y cierre de apps. Si bien anticipamos un impacto mínimo en la gran mayoría de las sesiones de apps, te recomendamos que sigas las siguientes prácticas recomendadas sobre la memoria, lo que incluye establecer un valor de referencia para la memoria.

En la implementación actual, getDescription en ApplicationExitInfo contendrá la cadena "MemoryLimiter" si tu app se vio afectada. También puedes usar el registro de perfiles basado en activadores con TRIGGER_TYPE_ANOMALY para obtener volcados de montón que se recopilan cuando se alcanza el límite de memoria.

unnamed (2).png
La tarea LeakCanary en el Generador de perfiles de Android Studio

Para ayudarte a encontrar fugas de memoria, Android Studio Panda agrega la integración de LeakCanary directamente en el Generador de perfiles de Android Studio como una tarea dedicada, contextualizada dentro del IDE y completamente integrada con tu código fuente.

Una menor ocupación de memoria se traduce directamente en un rendimiento más fluido, una mayor duración de batería y una experiencia premium en todos los factores de forma. Construyamos juntos un futuro más rápido y confiable para el ecosistema de Android.

Activadores de creación de perfiles para anomalías de la app

Android presenta un servicio de detección de anomalías integrado en el dispositivo que supervisa los comportamientos que consumen muchos recursos y las posibles regresiones de compatibilidad. Integrado con ProfilingManager, este servicio permite que tu app reciba artefactos de generación de perfiles activados por eventos específicos detectados por el sistema.

Usa el activador TRIGGER_TYPE_ANOMALY para detectar problemas de rendimiento del sistema, como llamadas excesivas al binder y uso excesivo de memoria. Cuando una app supera los límites de memoria definidos por el SO, el activador de anomalías permite que los desarrolladores reciban volcados de montón específicos de la app para ayudar a identificar y corregir problemas de memoria. Además, para el spam excesivo de Binder, el activador de anomalías proporciona un perfil de muestreo de pila en las transacciones de Binder.

Esta devolución de llamada de la API se produce antes de que se apliquen los cumplimientos impuestos por el sistema. Por ejemplo, puede ayudar a los desarrolladores a recopilar datos de depuración antes de que el sistema cierre la app por exceder los límites de memoria. Para comprender cómo usar el activador, consulta nuestra documentación sobre generación de perfiles basada en activadores.

    val profilingManager = applicationContext.getSystemService(ProfilingManager::class.java)
    val triggers = ArrayList<ProfilingTrigger>()  
    triggers.add(ProfilingTrigger.Builder(
                 ProfilingTrigger.TRIGGER_TYPE_ANOMALY))
    val mainExecutor: Executor = Executors.newSingleThreadExecutor()
    val resultCallback = Consumer<ProfilingResult> { profilingResult ->
        if (profilingResult.errorCode != ProfilingResult.ERROR_NONE) {
            // upload profile result to server for further analysis          
            setupProfileUploadWorker(profilingResult.resultFilePath)
        } 
    profilingManager.registerForAllProfilingResults(mainExecutor, resultCallback)
    profilingManager.addProfilingTriggers(triggers)
}

Criptografía poscuántica (PQC) en Android Keystore

El almacén de claves de Android agregó compatibilidad con el ML-DSA estandarizado por el NIST (algoritmo de firma digital basado en módulos y celosías). En los dispositivos compatibles, puedes generar claves ML-DSA y usarlas para producir firmas resistentes a ataques cuánticos, todo en el hardware seguro del dispositivo. El almacén de claves de Android expone las variantes de los algoritmos ML-DSA-65 y ML-DSA-87 a través de las APIs de la arquitectura de criptografía de Java estándar: KeyPairGeneratorKeyFactorySignature. Para obtener más detalles, consulta nuestra documentación para desarrolladores.

KeyPairGenerator generator = KeyPairGenerator.getInstance(
        ML-DSA-65, "AndroidKeyStore");
generator.initialize(
        new KeyGenParameterSpec.Builder(
                my-key-alias,
                KeyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_VERIFY)
        .build());
KeyPair keyPair = generator.generateKeyPair();

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 participas en el programa de versiones beta de Android, recibirás una actualización inalámbrica a la versión beta 4.

Sigue informando problemas y enviando solicitudes de funciones en la página de comentarios. Cuanto antes recibamos tus comentarios, más podremos incluir en nuestro trabajo sobre 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 configurado todo, haz lo siguiente:

  • Compila con el nuevo SDK, realiza pruebas en entornos de CI y, luego, informa cualquier problema en nuestro sistema de seguimiento en la página de comentarios.
  • Prueba la compatibilidad de tu app actual, descubre si se ve afectada por los cambios en Android 17, instálala en un dispositivo o emulador que ejecute Android 17 y pruébala exhaustivamente.

Actualizaremos las imágenes del sistema de versión preliminar o beta y el SDK de forma periódica 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 actualizaciones inalámbricas futuras para todas las versiones beta y de vista previa posteriores.

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

Únete a la conversación

Tus comentarios siguen siendo nuestro activo más valioso. Ya sea que seas un usuario pionero en el canal de Canary o un desarrollador de apps que realiza pruebas en Beta 4, considera unirte a nuestras comunidades y enviar comentarios. Queremos saber tu opinión.

Escrito por:

Seguir leyendo