Admite diferentes versiones de plataforma

Si bien las últimas versiones de Android generalmente ofrecen API excelentes para tu app, debes continuar admitiendo versiones anteriores de Android hasta que más dispositivos se actualicen. Esta lección te muestra cómo aprovechar las últimas API sin dejar de admitir versiones anteriores.

El panel de Versiones de la plataforma se actualiza con frecuencia para mostrar la distribución de los dispositivos activos que ejecutan cada versión de Android en función de la cantidad de dispositivos que visitan Play Store de Google. Se recomienda admitir aproximadamente el 90% de los dispositivos activos y orientar la aplicación a la última versión.

Sugerencia: Para proporcionar las mejores características y funcionalidades en diferentes versiones de Android, debes usar la Biblioteca de compatibilidad de Android en tu app, que te permite usar API recientes de la plataforma en versiones anteriores.

Cómo especificar niveles de API mínimos y objetivo

El archivo AndroidManifest.xml contiene información detallada sobre tu aplicación e identifica las versiones de Android que esta admite. Específicamente, los atributos minSdkVersion y targetSdkVersion para el elemento <uses-sdk> identifican el nivel de API más bajo con el que tu app es compatible, así como el nivel de API más alto en función del cual has diseñado y probado tu app.

Por ejemplo:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... >
    <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />
    ...
</manifest>

A medida que se lanzan nuevas versiones de Android, algunos estilos y comportamientos pueden cambiar. Para permitir que tu app aproveche esos cambios y para asegurarte de que se adapte al estilo de dispositivo de cada usuario, debes configurar el valor targetSdkVersion para que coincida con la última versión disponible de Android.

Cómo comprobar la versión del sistema durante el tiempo de ejecución

Android proporciona un código único para cada versión de la plataforma en la clase de constantes Build. Utiliza esos códigos en tu app para crear condiciones que garanticen que el código que depende de niveles de API más altos se ejecute únicamente cuando esas API estén disponibles en el sistema.

Kotlin

private fun setUpActionBar() {
    // Make sure we're running on Honeycomb or higher to use ActionBar APIs
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        actionBar.setDisplayHomeAsUpEnabled(true)
    }
}

Java

private void setUpActionBar() {
    // Make sure we're running on Honeycomb or higher to use ActionBar APIs
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        ActionBar actionBar = getActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);
    }
}

Nota: Al analizar recursos XML, Android ignora los atributos de XML que no son compatibles con el dispositivo actual. Por lo tanto, puedes usar atributos de XML que solo sean compatibles con las últimas versiones sin preocuparte por la interrupción de las versiones anteriores al encontrarse con ese código. Por ejemplo, si estableces targetSdkVersion="11", de forma predeterminada tu app incluirá la ActionBar en Android 3.0 y versiones posteriores. Para luego poder agregar elementos de menú a la barra de acciones, debes establecer android:showAsAction="ifRoom" en el archivo XML de recursos del menú. Es seguro hacer esto en un archivo XML para múltiples versiones, ya que las versiones anteriores de Android simplemente ignoran el atributo showAsAction (es decir, no necesitas una versión independiente en res/menu-v11/).

Cómo usar estilos y temas de la plataforma

Android ofrece temas para la experiencia del usuario que le brindan a la app el aspecto del sistema operativo subyacente. Esos temas se pueden aplicar a tu aplicación dentro del archivo de manifiesto. Al utilizar estos estilos y temas integrados, tu aplicación adoptará naturalmente el último estilo de Android con cada nuevo lanzamiento.

Para que tu actividad se vea como un cuadro de diálogo:

<activity android:theme="@android:style/Theme.Dialog">

Para que tu actividad tenga un fondo transparente:

<activity android:theme="@android:style/Theme.Translucent">

Para aplicar tu propio tema personalizado definido en /res/values/styles.xml:

<activity android:theme="@style/CustomTheme">

Para aplicar un tema a toda la app (todas las actividades), agrega el atributo android:theme al elemento <application>:

<application android:theme="@style/CustomTheme">

Para obtener más información acerca de cómo crear y usar temas, lee la guía Estilos y temas.