Escrito por Don TurnerIngeniero de Relaciones con los Desarrolladores y Francois Goldfain, Director de Android Media Framework


Hoy estamos lanzando la biblioteca Jetpack Core Performance en Alpha. Con esta biblioteca, puede comprender fácilmente de qué es capaz un dispositivo y personalizar su experiencia de usuario en consecuencia. Lo hace al permitirle obtener la clase de rendimiento del dispositivo en dispositivos que ejecutan Android 11 (API nivel 30) y superior.
Una clase de rendimiento es una clasificación que refleja tanto el nivel de rendimiento de un dispositivo como sus capacidades generales. Como tal, refleja en gran medida las especificaciones de hardware del dispositivo, pero también cómo se desempeña en ciertos escenarios del mundo real verificados por Android Compatibility Test Suite.
Los requisitos de clase de potencia se centran actualmente en casos de uso de medios. Por ejemplo, un dispositivo Media Performance Class 12 garantiza:
- Tener 6+GB de RAM
- tener una cámara trasera de más de 12 megapíxeles que admita la grabación de video a 4k a 30 fps,
- ser capaz de inicializar un códec de video en <50 ms, incluso bajo carga
- y muchos mas requisitos.
Un dispositivo que cumpla con estos requisitos puede manejar de manera óptima muchos casos de uso de medios populares, incluidas las canalizaciones de video típicas en aplicaciones de redes sociales para capturar, codificar y compartir.
Como desarrollador de aplicaciones, esto significa que puede agrupar de manera confiable dispositivos con el mismo rendimiento y adaptar el comportamiento de su aplicación a estos diferentes grupos. Esto le permite ofrecer a los usuarios la mejor experiencia con dispositivos más potentes y menos potentes. Los requisitos de la clase de potencia se amplían con cada versión principal de Android, lo que hace posible apuntar fácilmente a diferentes niveles de experiencia para cualquier rango de clase de potencia que considere apropiado. Por ejemplo, es posible que desee personalizar experiencias «más premium» y «más funcionales» para clases de rendimiento específicas.
Cómo usar la clase de poder
Para agregar una clase de rendimiento a tu aplicación, agrega la siguiente dependencia a tu build.gradle:
implementation 'androidx.core:core-performance:1.0.0-alpha02'
Luego utilícelo para personalizar su experiencia de usuario. Por ejemplo, para codificar video de mayor resolución según la clase de rendimiento de los medios:
class OptimalVideoSettings(context: Context){ private val devicePerf: DevicePerformance = DevicePerformance.create(context) val encodeHeight by lazy { when (devicePerf.mediaPerformanceClass) { Build.VERSION_CODES.S -> 1080 // On performance class 12 use 1080p Build.VERSION_CODES.R -> 720 // On performance class 11 use 720p else -> 480 } } val encodeFps by lazy { when(devicePerf.mediaPerformanceClass){ Build.VERSION_CODES.S -> 60 // On performance class 12 use 60 fps Build.VERSION_CODES.R -> 30 // On performance class 11 use 30 fps else -> 30 } } }
Cuándo se debe utilizar la clase de potencia
El ecosistema de dispositivos Android es muy diverso. El mismo código de aplicación puede dar como resultado un comportamiento muy diferente según las capacidades del dispositivo. Por ejemplo, la codificación de un video 4K puede demorar unos segundos en un dispositivo pero unos minutos en otro. Las expectativas de los usuarios también varían mucho según el dispositivo que compren. Para brindar una experiencia de usuario optimizada, es común agrupar dispositivos según ciertos criterios, como el tamaño de RAM o el año de lanzamiento, y luego personalizar las capacidades de su aplicación para cada grupo.
El problema con el uso de un valor arbitrario como el tamaño de RAM para la agrupación es que no garantiza el rendimiento de un dispositivo. Siempre habrá valores atípicos que se desempeñen mejor o peor de lo esperado dentro de este grupo. La agrupación por clase de potencia resuelve este problema al proporcionar estas garantías, respaldadas por pruebas del mundo real.
La prueba manual de dispositivos pertenecientes a diferentes clases de potencia es una opción para evaluar e identificar los cambios necesarios para equilibrar la funcionalidad y la usabilidad. Sin embargo, el enfoque recomendado para validar los cambios en la experiencia de la aplicación es ejecutar pruebas A/B y analizar su impacto en las métricas de la aplicación. Puedes hacer esto con el apoyo de una plataforma de experimentación como Firebase. Proporcionar la clase de rendimiento del dispositivo a la plataforma experimental agrega una dimensión de rendimiento adicional a los resultados de la prueba. Esto le permite identificar las optimizaciones correctas para cada clase de dispositivo.
chasquido inc
Snap ha utilizado la agrupación de dispositivos y las pruebas A/B para optimizar su experiencia para los usuarios de Snapchat. Al aprovechar la clase de rendimiento, Snapchat identifica la capacidad del dispositivo de manera escalable y ofrece una experiencia óptima. Por ejemplo, la calidad visual de los videos compartidos se mejora mediante el uso de una resolución y tasa de bits superiores a las estándar en dispositivos Media Performance Class 12. A medida que se actualicen más dispositivos para cumplir con la Clase de rendimiento de medios, Snapchat realizará pruebas A/B adicionales y proporcionará funciones que están mejor optimizadas para las capacidades del dispositivo.
soporte de dispositivo
Los requisitos de clase de rendimiento se desarrollan en colaboración con los principales desarrolladores y fabricantes de dispositivos que reconocen la necesidad de un sistema simple, confiable y basado en clases para permitir optimizaciones de aplicaciones a escala.
Oppo, OnePlus, realme, Vivo y Xiaomi en particular fueron los primeros en optimizar sus dispositivos insignia para garantizar que cumplieran con los requisitos de Media Performance Class 12. Como resultado, Build.VERSION.MEDIA_PERFORMANCE_CLASS
devoluciones Build.VERSION_CODES.S
(la capa API de Android 12) en los siguientes dispositivos:
¿Por qué una biblioteca jetpack?
La biblioteca Jetpack Core Performance se introdujo para extender la clase de rendimiento a los dispositivos que aún no ejecutan Android 12 o que no anuncian su clase de rendimiento legítima en el momento en que pasó el conjunto de pruebas de compatibilidad de Android.
La biblioteca, que admite dispositivos con Android 11 y superior, tiene como objetivo solucionar este problema. Informa la clase de rendimiento de muchos dispositivos en función de los resultados de las pruebas recopiladas durante la certificación del dispositivo o mediante pruebas adicionales realizadas por el equipo de Google. Estamos agregando nuevos dispositivos regularmente, así que asegúrese de estar usando la última versión de la biblioteca Core Performance para obtener la máxima cobertura de dispositivos.
Informar de la clase de rendimiento a Firebase
Si usa Firebase como una plataforma de experimentación para pruebas A/B, es fácil enviar la clase de rendimiento del dispositivo a Firebase Analytics usando una propiedad de usuario. Filtrar los informes de prueba A/B por clase de rendimiento puede mostrar qué valores experimentales dieron como resultado las mejores métricas para cada grupo de dispositivos.
Este es un ejemplo de una prueba A/B que varía el nivel de codificación de un video e informa la clase de rendimiento mediante una propiedad de usuario.
class MyApplication : Application() { private lateinit var devicePerf: DevicePerformance private lateinit var firebaseAnalytics: FirebaseAnalytics override fun onCreate() { devicePerf = DevicePerformance.create(this) firebaseAnalytics = Firebase.analytics firebaseAnalytics.setUserProperty( "androidx.core.performance.DevicePerformance.mediaPerformanceClass", devicePerf.mediaPerformanceClass) } fun getVideoEncodeHeight() : Long = remoteConfig.getLong("encode_height") }
Próximos pasos
Nos encantaría que probara la biblioteca Core Performance en su aplicación. Si tiene problemas o solicitudes de funciones, envíelas aquí.
También estamos interesados en sus comentarios sobre los requisitos de la clase de rendimiento. ¿Existen criterios de rendimiento o requisitos de hardware específicos que sean importantes para los casos de uso de su aplicación? Si este es el caso, infórmenos a través del Rastreador de problemas de Android.