Save the date! Android Dev Summit is coming to Sunnyvale, CA on Oct 23-24, 2019.

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 para miles de millones de usuarios 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 es un problema, ya que pantallas diferentes tienen distintas densidades de píxeles. Por lo tanto, el mismo número de píxeles puede corresponder a diferentes tamaños físicos en distintos dispositivos.
  • A modo de solución, Android admite píxeles independiente 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 Compatibilidad con diferentes pantallas para conocer las recomendaciones sobre 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 de gama baja. Busca texto que pueda no ser claro en las pantallas de baja densidad, donde los detalles finos no son visibles.
  • 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.
  • Para obtener más información sobre la compatibilidad con diferentes densidades, consulta la capacitación de Android sobre la compatibilidad con diferentes densidades de pantalla.

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 cuidadosamente los elementos visibles de la IU porque habrá poco espacio para ellos.
  • En las pautas de Material Design se describen métricas y líneas claves para garantizar que tus diseños puedan escalarse en distintas densidades de pantalla.
  • Para obtener más información sobre la compatibilidad con diferentes tamaños de pantalla, 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 Android. Aquí tienes algunas formas de mejorar la compatibilidad con versiones anteriores, lo que le permitirá a tu app estar disponible para la mayor cantidad de personas posible.

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. Esto preservará la compatibilidad con versiones anteriores. A continuación, se enumeran algunas recomendaciones para orientar tu contenido correctamente a los niveles de API:
    • targetSdkVersion debe ser la última versión de Android. Orientar tu contenido hacia la versión más reciente garantizará que tu app herede comportamientos de tiempo de ejecución más nuevos cuando se ejecuten versiones de Android más recientes. Asegúrate de probar tu app en versiones de Android más recientes cuando actualices targetSdkVersion, ya que esto puede influir en el comportamiento de la app.
    • minSdkVersion establece la mínima versión de Android compatible. Usa Android 4.0 (nivel de API 14: Ice Cream Sandwich) o Android 4.1 (nivel de API 16: Jelly Bean). Estas versiones proporcionan la máxima cobertura en dispositivos nuevos. Si configuras minSdkVersion, también será posible que las herramientas de compilación de Android notifiquen el uso incorrecto de nuevas API que probablemente no estén disponibles en versiones anteriores de la plataforma. De esta forma, los desarrolladores evitan problemas accidentales relacionados con la compatibilidad con versiones anteriores.
  • Consulta los paneles de Android, las métricas de Google Play Developer Console de tu app e informes de la industria en tus mercados de destino para determinar las versiones de Android que conviene abarcar según los usuarios a los que apuntas.

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 compatibles con versiones anteriores de las API 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 con Material Design.
  • Entre los aspectos destacados, se incluyen los siguientes:
  • Para obtener más información sobre 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

  • Google Play Services ofrece lo mejor de las API de Google, independientemente de la versión de la plataforma Android. Considera usar funciones de los servicios de Google Play para ofrecer la experiencia de Google más optimizada en dispositivos Android.
  • Estos servicios también incluyen API útiles, como GcmNetworkManager, que proporciona la mayoría de los elementos de la API JobScheduler de Android 5.0 para versiones anteriores de Android.
  • Google Play Store distribuye automáticamente las actualizaciones de los servicios y las nuevas versiones de la biblioteca del cliente se distribuyen mediante 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 sea más estable y más eficiente; en algunos casos, su uso efectivo puede ser lo único que haga que tu app sea utilizable. 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 esto, será más fácil garantizar 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 el uso de memoria. Por ejemplo, puedes usar imágenes de menor resolución en dispositivos con poca memoria.
  • Para obtener más información sobre 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 hacer que el dispositivo funcione con lentitud. En la mayoría de los casos, la app debe activarse para un evento en particular, procesar los datos y cerrarse. Debes utilizar Firebase Cloud Messaging (FCM) y GcmNetworkManager para evitar servicios en segundo plano y reducir la presión de memoria en el dispositivo del usuario.

Evalúa el consumo de memoria

Android Studio proporciona herramientas para evaluar y optimizar la memoria. De esta forma, podrás medir el uso de memoria durante el tiempo de ejecución. La evaluación de la superficie de memoria de tu app te permite controlar el uso de memoria en distintas versiones de la app. Esto ayuda a detectar crecimientos involuntarios de superficie de memoria. Usa la herramienta Memory Profiler para hacer lo siguiente:

  • Descubrir si hay patrones no deseados de eventos de recolección de elementos no usados que provocan 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.

Para obtener más información sobre el análisis del uso de la memoria, consulta Cómo ver la pila y las asignaciones con Memory Profiler.

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 ≤1 GB de RAM, empezando por Android Oreo (edición Go). Para asegurarte de que tu app funcione correctamente en dispositivos Android (edición Go), debes tener en cuenta las siguientes pautas:

  • targetSdkVersion debe ser la última versión de Android. Los dispositivos Android (edición Go) solo ejecutan Android Oreo (nivel de API 26 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 enumeran en Cómo usar la memoria de forma eficaz y usa Android vitals para identificar y corregir los malos comportamientos como la renderización lenta y los fotogramas congelados.
  • Es posible que la función Picture in picture (PIP) esté inhabilitada en los dispositivos con poca RAM. Antes de que tu app use PIP, asegúrate de 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 de conjunto proporcional (PSS) del uso de RAM de la app no debe superar los 50 MB. Para los juegos, el PSS del uso de RAM no debe exceder los 150 MB. Para obtener más información sobre PSS, consulta la guía Cómo investigar su uso de RAM.
  • El tiempo de inicio de la app debe ser mínimo y no superar los 5 segundos.

Recomendamos que la mayoría de los desarrolladores optimicen sus apps, que estarán disponible en todos los dispositivos Android (edición Go), ya que hacer que funcionen más rápido y más ligero beneficiará a todos los usuarios. Puedes utilizar la función Multiple 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">, apuntar al menos al nivel 26 de la API y tener un código de versión más alto que el APK de la edición que no es Go.