Capacidades de dispositivos para miles de millones de usuarios

Si quieres llegar a nuevos usuarios, debes proporcionar compatibilidad con una mayor variedad de versiones de plataformas de Android y más especificaciones de dispositivo. Optimiza la app para RAM, tamaños de pantalla y resoluciones convencionales a fin de mejorar la experiencia del usuario.

Brinda compatibilidad con varios tamaños de pantalla

Tu app puede proporcionar una mejor experiencia del usuario para miles de millones de ellos si admite pantallas de varios tamaños y resoluciones. Esta sección describe cómo puedes hacerlo.

Usa píxeles independientes de la densidad (dp)

  • Definir dimensiones de diseño con píxeles no funciona bien porque las diferentes pantallas tienen distintas densidades de píxeles. Por lo tanto, la misma cantidad de píxeles puede corresponder a diferentes tamaños físicos en distintos dispositivos.
  • A modo de solución, Android admite píxeles independientes de la densidad (dp), que corresponden al tamaño físico de un píxel con 160 puntos por pulgada (densidad mdpi).
  • Definir diseños con dp garantiza que el tamaño físico de la interfaz de usuario será constante en cualquier dispositivo. Visita la guía de Android sobre la compatibilidad con diferentes pantallas para conocer las prácticas recomendadas sobre el uso de píxeles independientes de la densidad.

Prueba texto y gráficos en densidades de pantalla ldpi y mdpi

  • Realiza pruebas para asegurarte de que tus textos y gráficos funcionen bien en pantallas de baja y media densidad (ldpi y mdpi), ya que estas son densidades comunes, especialmente en dispositivos más económicos. Busca texto que pueda no ser claro en las pantallas de baja densidad, donde no se ven los detalles pequeños.
  • Las especificaciones de hardware de los dispositivos con pantallas de menor densidad suelen ser inferiores. Para asegurarte de que tu app funcione correctamente en estos dispositivos, considera disminuir o eliminar cargas pesadas de procesamiento de gráficos, como animaciones y transiciones.
  • Si deseas obtener más información acerca de la compatibilidad con diferentes densidades, consulta la capacitación de Android sobre la compatibilidad con diferentes densidades.

Realiza pruebas de diseño en pantallas pequeñas y medianas

  • Realiza pruebas en pantallas más pequeñas para verificar que tus diseños puedan escalarse a valores inferiores. Debido a que las pantallas se achican, selecciona con cuidado los elementos visibles de la IU porque habrá poco espacio para ellos.
  • En los lineamientos de Material Design, se describen métricas y líneas guía a fin de garantizar que tus diseños puedan escalarse en distintas densidades de pantalla.
  • Si deseas obtener más información acerca de este tema, consulta la capacitación de Android sobre la compatibilidad con diferentes tamaños de pantalla.

Brinda compatibilidad con versiones anteriores

Es posible que no todos los usuarios utilicen dispositivos con la última y mejor versión de la plataforma de Android. A continuación, se enumeran algunas formas de mejorar la retrocompatibilidad, lo que le permitirá a tu app estar disponible para la mayor cantidad posible de usuarios.

Configura correctamente los parámetros targetSdkVersion y minSdkVersion

  • Las apps deben compilarse y orientarse para la versión más reciente de Android a fin de garantizar que ofrezcan el comportamiento más actualizado en una amplia variedad de dispositivos. Aun así, serán retrocompatibles con versiones anteriores. Estas son algunas prácticas recomendadas para orientar el contenido a los niveles de API de forma adecuada:
    • targetSdkVersion debe ser la última versión de Android. Orientar tu contenido hacia la versión más reciente asegura que tu app herede comportamientos de tiempo de ejecución más nuevos cuando se ejecuten versiones de Android más recientes. Prueba tu app en versiones de Android más recientes cuando actualices la targetSdkVersion, ya que esto puede influir en el comportamiento de la app.
    • minSdkVersion Establece la mínima versión de Android compatible. Si configuras minSdkVersion, también será posible que las herramientas de compilación de Android notifiquen el uso incorrecto de nuevas API que quizás no estén disponibles en versiones anteriores de la plataforma. De esta manera, evitarás romper la retrocompatibilidad de forma accidental.
  • Consulta los paneles de Android, la Google Play Console de tu app y las investigaciones de la industria en tus mercados de destino a fin de determinar las versiones de Android a las que te conviene orientarte según los usuarios objetivo.

Usa bibliotecas de compatibilidad de Android

  • Asegúrate de que tu app proporcione una experiencia coherente en todas las versiones de SO utilizando la biblioteca de compatibilidad de Android. Esta biblioteca proporciona versiones retrocompatibles de las API del framework de Android, así como funciones que solo están disponibles a través de las API de la biblioteca, como AppCompatActivity y la biblioteca de compatibilidad de Material Design.
  • Entre los aspectos destacados, se incluyen los siguientes:
  • Si deseas obtener más información acerca de las bibliotecas de compatibilidad disponibles, consulta la sección sobre las funciones de las bibliotecas de compatibilidad en el sitio para desarrolladores de Android.

Usa los servicios de Google Play

  • Los Servicios de Google Play brindan lo mejor de las API de Google, independientemente de la versión de la plataforma de Android de la que se trate. Considera usar funciones de los Servicios de Google Play para ofrecer la experiencia de Google más optimizada en dispositivos Android.
  • Los Servicios de Google Play también incluyen APIs útiles, como GcmNetworkManager, que proporciona gran parte de la API de JobScheduler de Android 5.0 para versiones anteriores de Android.
  • Google Play Store distribuye automáticamente las actualizaciones de los Servicios de Google Play y las nuevas versiones de la biblioteca cliente se entregan a través de Android SDK Manager.

Usa memoria de manera eficiente

La memoria es una pieza fundamental de la experiencia del usuario pasada por alto. Una buena gestión de la memoria puede hacer que tu app rinda más y sea más estable; en algunos casos, su uso efectivo puede ser lo único que haga que tu app se pueda usar. Aquí tienes algunas formas de utilizar memoria de manera efectiva.

Reduce la utilización de memoria en dispositivos de gama baja

  • Si ajustas dinámicamente tu huella de memoria, asegurarás la compatibilidad en dispositivos con distintas configuraciones de RAM.
  • Los métodos como isLowRamDevice() y getMemoryClass() ayudan a determinar las restricciones de memoria durante el tiempo de ejecución. A partir de esta información, puedes reducir la escala del uso de memoria verticalmente. Por ejemplo, puedes usar imágenes de menor resolución en dispositivos con poca memoria.
  • Si deseas obtener más información acerca de la administración de memoria en apps, consulta la capacitación de Android sobre la administración de la memoria de tu app.

Evita procesos de ejecución prolongada

  • Los procesos de ejecución prolongada quedan en la memoria y pueden ralentizar el dispositivo. En la mayoría de los casos, la app debería activarse para un evento en particular, procesar los datos y apagarse. Deberías utilizar Firebase Cloud Messaging (FCM) y GcmNetworkManager a fin de evitar servicios en segundo plano de ejecución prolongada y reducir la presión de memoria en el dispositivo del usuario.

Evalúa el consumo de memoria

Android Studio proporciona herramientas para realizar comparativas y generar perfiles de memoria. De esta forma, podrás medir el uso de memoria durante el tiempo de ejecución. Las comparativas de la huella de memoria de tu app te permitirán supervisar el uso de memoria en distintas versiones de la app. Esto ayuda a detectar aumentos involuntarios de la huella de memoria. Usa el Generador de perfiles de memoria a fin de hacer lo siguiente:

  • Descubrir si hay patrones no deseados de eventos de recolección de elementos no utilizados (GC) que provoquen problemas de rendimiento
  • Identificar tipos de objeto que se asignen o queden asignados de forma inesperada o innecesaria
  • Identificar la ubicación del problema en el código

Si deseas obtener más información sobre comparativas del uso de memoria, consulta Cómo ver el montón y las asignaciones con el Generador de perfiles de memoria.

Optimiza tu contenido para dispositivos que ejecutan Android (edición Go)

Android (edición Go) es una experiencia optimizada para dispositivos de nivel básico con hasta 1 GB de RAM, a partir de Android Oreo (edición Go). Si deseas asegurarte de que tu app funcione correctamente en dispositivos Android (edición Go), debes tener en cuenta los siguientes lineamientos:

  • targetSdkVersion debe ser la última versión de Android. Los dispositivos Android (edición Go) solo ejecutan Android Oreo (nivel de API 27 o versiones posteriores).
  • La app debería ejecutarse sin problemas en dispositivos con ≤1 GB de RAM. Ten en cuenta las optimizaciones de memoria que se muestran en Cómo usar la memoria de forma eficaz y que usan Android vitals para identificar y corregir los malos comportamientos, como la renderización lenta y los fotogramas congelados.
  • Es posible que la función Pantalla en pantalla (PIP) esté inhabilitada en los dispositivos. Antes de que tu app use PIP, verifica que esté disponible llamando a hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE).
  • El tamaño de la app en el dispositivo debe ser inferior a 40 MB.
  • El tamaño del conjunto proporcional (PSS) del uso de RAM de la app no debe superar los 90 MB. Para los juegos, el PSS del uso de RAM no debe exceder los 150 MB. Si deseas obtener más información sobre el PSS, consulta la guía Cómo investigar el uso de tu memoria RAM.
  • El tiempo de inicio de la app debe ser mínimo y no superar los 5 segundos.
  • Es posible que SYSTEM_ALERT_WINDOW (que permite que las apps dibujen una ventana sobre otras apps) esté inhabilitado en dispositivos Android Go con poca RAM. Antes de dibujar sobre otras apps, verifica si tu app tiene esta autorización llamando a Settings.canDrawOverlays(). Si no puede obtener el permiso, realiza una degradación elegante para que el usuario pueda seguir usándola. Para ello, puedes inhabilitar la función que requiere el permiso SYSTEM_ALERT_WINDOW.

Recomendamos que la mayoría de los desarrolladores optimicen sus apps existentes, que estarán disponibles en todos los dispositivos Android (edición Go), ya que hacer que la app funcione de forma más rápida y liviana beneficiará a todos los usuarios. Puedes utilizar la función de varios APK de Play Console a fin de distribuir un APK específico para dispositivos Android (edición Go), pero solo debes hacerlo sin comprometer la experiencia (p. ej., debes evitar eliminar funciones). Los APK orientados a Android (edición Go) deben declarar <uses-feature android:name="android.hardware.ram.low" android:required="true">, estar orientados al menos al nivel de API 26 y tener un código de versión más alto que el APK de la edición que no es Go.

Recursos adicionales

Si deseas obtener más información sobre la compatibilidad con una variedad de dispositivos, consulta el siguiente recurso:

Entradas de blog