Las librerías de compatibilidad (support library)

Tal y como se ha descrito, la filosofía tradicional de Android ha sido que las novedades que aparecen en una API solo puedan usarse en dispositivos que soporten esa API. Como acabamos de ver, la fragmentación de las versiones de Android es muy grande, es decir, actualmente podemos encontrar dispositivos con una gran variedad de versiones. Con el fin de que la aplicación pueda ser usada por el mayor número posible de usuarios hemos de ser muy conservadores a la hora de escoger la versión mínima de API de nuestra aplicación. La consecuencia es que las novedades que aparecen en las últimas versiones de Android no pueden ser usadas.

En la versión 3.0 aparecieron importantes novedades que Google quería que se incorporaran en las aplicaciones lo antes posible (fragments, nuevas notificaciones, etc.). Con este fin creó las librerías de compatibilidad para poder incorporar ciertas funcionalidades en cualquier versión de Android.

  video[Tutorial] Las librerías de compatibilidad  (suport library)
 

Desde la versión 9.0 las librerías de compatibilidad también se incluyen en la librerías AndroidX[1], que son parte del proyecto Jetpack[2]. En las librerías AndroidX se incluye tanto las librerías de compatibilidad como los componentes de Jetpack.

A diferencia de la librería de compatibilidad, cada paquete de AndroidX tiene su propia versión, y se mantienen y actualizan de manera separada. Todos los paquetes están en un espacio de nombre que empieza por androidx.*.

  • *   v4 Support Library: (androidx.legacy:legacy-support-v4)  Esta librería permitía utilizar muchas clases introducidas en la versión 3.0 cuando trabajamos con un API mínimo anterior. En la actualidad ya no es necesaria utilizarla, dado que ya es recomendable utilizar como API mínimo la versión 4.0 o incluso superior. Puede usarse en una aplicación con nivel de API 4 (v1.6) o superior. Incorpora las clases: Fragment, NotificationCompat, LocalBroadcastManager, ViewPager, PagerTitleStrip, PagerTabStrip, DrawerLayout, SlidingPaneLayout, ExploreByTouchHelper, Loader y FileProvider.
  • *   appcompat: (androidx.appcompat)  Permite utilizar un IU basado en la Barra de Acciones siguiendo especificaciones de Material Design. Se añade por defecto cuando creamos un nuevo proyecto. Incorpora las clases: AcctionBar AppCompatActivity, AppCompatDialog y ShareActionProvider.
  • *   recyclerview: (androidx.recyclerview)  Esta Incorpora la vista RecyclerView, una versión mejorada que reemplaza a ListView y GridView.
  • *   constraintlayout: Da soporte al layout ConstraintLayout.
  • *   preference: (androidx.preference)  Incorpora las clases CheckBoxPreference y ListPreference usadas en preferencias.
  • *   cardview: (androidx.cardview)  Incorpora la vista CardView, una forma estándar de mostrar información especialmente útil en Android Wear y TV.
  • *   palette: (androidx.palette)  Esta Incorpora la vista Palette, que permite extraer los colores principales de una imagen.
  • *   mediarouter: (androidx.mediarouter)  Da soporte a Google Cast.
  • *   material Desing Support Library: (com.google.android.material)  libreriaque incorpora Material Design.
Si tienes dudas sobre los nuevos paquetes utilizados consulta la siguiente tabla: https://developer.android.com/jetpack/androidx/migrate

Preguntas de repaso: Elegir una versión de Android



[1] https://developer.android.com/jetpack/androidx?hl=ES

[2] https://developer.android.com/jetpack?hl=ES