Revisiones recientes de la biblioteca de compatibilidad

En esta página, se proporcionan detalles sobre las versiones más recientes del paquete de la biblioteca de compatibilidad. Si quieres ver versiones anteriores, consulta el Archivo de revisiones de la biblioteca de compatibilidad.

Revisión 28.0.0: Producción

(21 de septiembre de 2018)

Esta es la versión estable de la biblioteca de compatibilidad 28.0.0 y es adecuada para su uso en producción. Esta será la última versión de la función dentro del paquete android.support; se alienta a los desarrolladores a migrar a AndroidX.

Funciones nuevas

  • AnimatedStateListDrawableCompat proporciona transiciones animadas entre estados de elementos de diseño.
  • VectorDrawableCompat permite obtener compatibilidad con gradiente y rellenos y trazos de ColorStateList.

Revisión 28.0.0: RC 2

(27 de agosto de 2018)

Esta versión potencial de la biblioteca de compatibilidad se considera completa en cuanto a funciones y la superficie de su API pública es estable. Se presentará como versión estable final, a excepción de los problemas críticos que puedan surgir. Esta versión debería ser segura para uso en producción. Notifica cualquier problema que encuentres en el registro público de problemas.

Errores corregidos

  • ProGuard quita el constructor de la aplicación de ViewModel (problema público 112230489).
  • Se corrigió el estado de la constante "AnimatedStateListDrawableCompat".
  • Se quitó de mediarouter 1.0.0 la dependencia de media2.
  • `Fragment.getViewLifecycleOwner()` no se detiene cuando se presiona el botón de inicio (problema público 113070421) ([problema público 113070421](https://issuetracker.google.com/issues/113070421))

Revisión 28.0.0: RC 1

(6 de agosto de 2018)

Esta versión potencial de la biblioteca de compatibilidad se considera completa en cuanto a funciones y la superficie de su API pública es estable. Se presentará como versión estable final, a excepción de los problemas críticos que puedan surgir. Esta versión debería ser segura para uso en producción. Notifica cualquier problema que encuentres en el registro público de problemas.

Nota: Algunas bibliotecas, como media2, permanecen en etapa Alfa, ya que sus superficies de API aún no están finalizadas. No recomendamos usar las bibliotecas Alfa en etapas de producción. Las bibliotecas deberían evitar por completo depender de bibliotecas Alfa en la etapa de producción, ya que sus superficies de API podrían cambiar en cuanto a incompatibilidad binaria y de origen.

Errores corregidos

  • El menú BottomNavigationView no se inicializa correctamente en la biblioteca de compatibilidad de diseño.
  • PositionalDataSource no maneja correctamente las inserciones de elementos prependientes en la base de datos.
  • Los controles deslizantes son inestables y no responden.
  • "SlicesProviderCompat.getPinnedSpecs()" no agrega ID de usuario a URI.
  • RoutePlayer2: La reproducción remota no vuelve a cambiar a la reproducción local.
  • El análisis de secciones en caché falla durante las acciones.
  • La app de la Búsqueda de Google falla al procesar secciones estáticas.
  • ConcurrentModificationException en la biblioteca de selección RecyclerView cuando el conjunto de datos cambiaba al eliminar la selección.
  • Se actualizó PreferenceThemeOverlay al tema de material más reciente. Si no se proporciona un tema personalizado, se usa PreferenceThemeOverlay como tema predeterminado.
  • Dejaron de estar disponibles los temas PreferenceThemeOverlay.v14 y PreferenceThemeOverlay.v14.Material, y los reemplazó PreferenceThemeOverlay.
  • La visibilidad de PreferenceGroup ahora está vinculada a sus elementos secundarios; ocultar un grupo superior también evitará que se muestren sus elementos secundarios en la jerarquía. Usa Preference.isShown() para saber si realmente se muestra una preferencia al usuario en la jerarquía.
  • Se dio de baja Preference.onSetInitialValue(boolean, Object) y se reemplazó por onSetInitialValue(Object). PreferenceDataStore ahora también restaura correctamente los valores predeterminados.

Revisión 28.0.0: Beta 1

(Julio de 2018)

Esta versión Beta de la biblioteca de compatibilidad se considera completa y su superficie de API pública es estable, a excepción de los problemas críticos que puedan surgir. Si bien esta versión es segura para uso en producción, todavía puede contener errores. Notifica cualquier problema que encuentres en el registro público de problemas.

Errores corregidos

  • GestureSelectionHelper consume eventos en elementos no seleccionables
  • Cuando se actualiza el valor del control deslizante, los segmentos de este pueden tener un ícono de pulgar duplicado
  • IconCompat rompía los íconos de TYPE_URI
  • Falla relacionada con Preferences al usar Seekbar
  • Falla en Slice.toString()
  • OffsettingListUpdateCallback.onMoved() llama a mCallback.onRemoved() en lugar de mCallback.onMoved() (problema 110711937)

Revisión 27.1.1

(Abril de 2018)

Errores corregidos

  • AsyncListDiffer no llama a getChangePayload (problema de AOSP 73961809)
  • No se llama a onCleared de Fragment ViewModel (problema de AOSP 74139250)
  • RecyclerView.setRecycledViewPool() aumenta attachCount incluso cuando el adaptador es nulo
  • RecyclerView NPE si SmoothScroller.onStop llama a stop() o startSmoothScroller()
  • La transacción de reemplazo de fragmento hace que el fragmento anterior parpadee después de que se muestre un nuevo fragmento (problema de AOSP 74051124)
  • Cambio rotundo de la función de devolución de llamada del cargador en 27.1.0 (problema de AOSP 74135998)
  • El diseño de RTL no funciona cuando la vista de cuadrícula vertical configura la columna > 1
  • Se llamaba a onLoadFinished varias veces en ViewPager con FragmentPagerAdapter
  • AsyncListDiffer debe enviar actualizaciones después de configurar la lista actual (problema de AOSP 74003309)
  • ShareActionProvider lanza ClassCastException en 27.1.0
  • Cambio en el ciclo de vida del fragmento con ViewPager (problema de AOSP 73976255)

Revisión 28.0.0: Alfa 1

(Marzo de 2018)

Nota: 28.0.0-alpha1 es una versión previa al lanzamiento que es compatible con la vista previa del desarrollador de Android P. Su superficie de API está sujeta a cambios y no necesariamente incluye funciones o correcciones de errores de las últimas versiones estables de la biblioteca de compatibilidad. Para obtener más información sobre la vista previa del desarrollador de la versión P, consulta las notas de la versión.

Cambios importantes

  • Tal como se indicó anteriormente en el anuncio de Android KTX, seguimos adoptando el prefijo del paquete androidx en todas nuestras bibliotecas. Una selección de bibliotecas completamente nuevas, en la que se incluyen heifwriter y recyclerview-selection, está comenzando en este nuevo paquete. Esperamos que la división entre android.* y androidx.* muestre con mayor claridad las API integradas a la plataforma y las que son bibliotecas estáticas para programadores de apps que trabajan con diferentes versiones de Android.
  • Dividimos partes de support-core-ui, support-core-utils y support-compat en bibliotecas más pequeñas. Este cambio nos ayudará a desenredar las dependencias de la biblioteca de compatibilidad en el futuro. Ahora tenemos las siguientes bibliotecas nuevas:
    • asynclayoutinflater (de support-core-ui)
    • colecciones (de support-compat)
    • coordinatorlayout (de design)
    • cursoradapter (de support-core-ui)
    • vista personalizada (de support-core-ui)
    • documentfile (de support-core-utils)
    • drawerlayout (de support-core-ui)
    • interpolator (de support-core-ui)
    • loader (de support-fragments y core-utils)
    • localbroadcastmanager (de support-core-utils)
    • print (de support-core-utils)
    • slippanelayout (de support-core-ui)
    • swiperefreshlayout (de support-core-ui)
    • viewpager (de support-core-ui)

API nuevas

  • recyclerview-selection proporciona compatibilidad con la selección de elementos para RecyclerView. El paquete proporciona lo siguiente:
    • Compatibilidad para crear, modificar, inspeccionar y monitorear cambios en un conjunto de elementos seleccionados en una lista de RecyclerView
    • Compatibilidad con acciones intuitivas de selección múltiple:
      • La selección táctil permite a los usuarios seleccionar rangos de elementos con un gesto intuitivo de mantener presionado y arrastrar.
      • La selección de banda controlada por mouse permite a los usuarios seleccionar un bloque de elementos en una lista de RecyclerView con las acciones tradicionales de banda/lazo del puntero del mouse.
    • Compatibilidad con dispositivos centrados en eventos táctiles, incluidos factores de forma de teléfono y computadora portátil con capacidad táctil, así como dispositivos centrados en punteros
  • HEIF Writer proporciona compatibilidad con escritura de imágenes fijas en formato HEIF.
  • Biblioteca de diseño
    • Incorporamos un nuevo tema de aplicación, Theme.MaterialComponents, con nuevos atributos y estilos actualizados para componentes.
    • Agregamos los siguientes componentes:
      • BottomAppBar
      • Chip
      • ChipGroup
      • MaterialButton
      • MaterialCardView
  • Slices proporciona un marco de trabajo para que las apps incorporen contenido con plantillas de otras apps.
    • slices-builders contiene métodos para compilar contenido en un formato de plantilla.
    • slices-view contiene métodos para presentar ese contenido.
  • Las acciones del navegador proporcionan un protocolo para que los desarrolladores de apps inicien un menú contextual coherente (pero personalizable) para las URL. Esta función depende de la presencia de una app de navegador (como Chrome, donde esta función aún está en desarrollo) que implemente compatibilidad para acciones del navegador.
  • ContextCompat.getSystemService() y getSystemServiceName() permiten búsquedas de servicios del sistema por tipo en API de todos los niveles.

Correcciones de errores

  • No se llamaba a onCleared de Fragment ViewModel (problema de AOSP 74139250)
  • Se llamaba varias veces a onLoadFinished() en ViewPager con FragmentPagerAdapter (problema de AOSP 74182171)
  • SmoothScrollToPosition() de LinearLayoutManager de RecyclerView muestra movimientos erráticos (hacia adelante y atrás) en ciertas circunstancias (problema de AOSP 71567765)

Revisión 27.1.0: lanzamiento

(Febrero de 2018)

Cambios importantes

  • Se reescribió la implementación subyacente de los elementos Loader para usar Lifecycle. Si bien no se modificó la API, existen los siguientes cambios de comportamiento:
    • Actualmente, solo se puede llamar a initLoader(), restartLoader() y destroyLoader() en el subproceso principal.
    • Ahora se llama a onStartLoading() y onStopLoading() de un Loader cuando se inicia y se detiene, respectivamente, el objeto FragmentActivity/Fragment.
    • onLoadFinished() solo se llamará entre onStart() y onStop. Como resultado, las transacciones de Fragment ahora se pueden realizar de forma segura en onLoadFinished().
    • Los métodos de FragmentController relacionados con los elementos Loader ya no están disponibles.
  • getDialog() de DialogFragment ya no será nulo hasta onDestroyView(), en lugar de ser nulo en dismiss(). Ahora, puedes determinar si se descartó el diálogo manualmente en onStop() comprobando sigetDialog().isShowing() es falso.

API nuevas

  • ListAdapter para RecyclerView (junto con AsyncListDiffer) facilita el cálculo de las diferencias de lista en un subproceso en segundo plano. Pueden ayudar a que tu contenido animado de RecyclerView cambie automáticamente, con un trabajo mínimo en el subproceso de IU. Usan DiffUtil en niveles profundos.
  • SortedList.ReplaceAll permite actualizar todos los datos de SortedList, que ejecuta todas las animaciones apropiadas para inserciones, eliminaciones, cambios y movimientos (los movimientos se consideran inserciones y eliminaciones).
  • FragmentActivity y Fragment ahora implementan ViewModelStoreOwner y se pueden usar con los constructores ViewModelProvider como alternativa al uso de ViewModelProviders.of()
  • Los fragmentos ahora tienen métodos requireContext(), requireActivity(), requireHost() y requireFragmentManager(), que muestran un objeto NonNull de los métodos get equivalentes o arrojan una excepción IllegalStateException.
  • Se agregó requireViewById(), una versión de compatibilidad @NonNull de findViewById(), a WindowCompat, ActivityCompat y ViewCompat, que arrojan una excepción IllegalArgumentException cuando no se puede encontrar el destino.
  • Los métodos LoaderCallbacks ahora tienen las anotaciones @Nullable y @NonNull apropiadas.
  • FileProvider ahora admite getExternalMediaDirs() en dispositivos con API 21 y versiones posteriores mediante el nuevo elemento <external-media-path>.

Correcciones de errores

  • El fragmento que inicializa Loader en onCreate rompió el ciclo de vida dentro de ViewPager
  • LoaderManager lanza una excepción IllegalStateException en onLoadFinished
  • LoaderViewModel no borra sus elementos Loader en OnCleared
  • No se encuentra el archivo de clase para android.arch.lifecycleViewModelStoreOwner
  • DialogFragment onDismiss no se llamaba inmediatamente después de dismiss()
  • Los emojis de banderas de países no funcionan en los dispositivos clave de lanzamiento cuando se usan fuentes descargables
  • La biblioteca de preferencias usa atributos que no funcionarán en versiones antiguas de Android
  • Los tipos de artefactos testlib de MediaCompat están incorrectamente documentados (problema de AOSP 71559905)
  • Google Sans falla en TypefaceCompatUtil
  • Exposición del constructor ArraySet que aparece en Collection
  • updateApi quita archivos .ignore que deberían conservarse
  • MainFragments redundantes creados en BrowseFragment
  • Se quitó el uso del reflejo de CarRecyclerView
  • java.lang.IllegalStateException en FragmentManagerImpl.checkStateLoss
  • Se obtenía (sin documentar) java.lang.SecurityException cuando se usaba android.support.v4.contentPermissionChecker.checkSelfPermission
  • RecyclerView IndexOutOfBoundsException porque State.mPreviousLayoutItemCount no se borraba en setAdapter (problema de AOSP 37657125)
  • Fragment que inicializa Loader en onCreate tiene un ciclo de vida dañado dentro de ViewPager (problema de AOSP 34831613)
  • Fallas de FragmentManagerImpl.execSingleAction

Revisión 27.0.2: lanzamiento

(Noviembre de 2017)

Correcciones de errores

  • EmojiEditTextHelper arroja NullPointerException.
  • IllegalStateException: Fragment todavía no se adjuntó.
  • No se puede descartar el ícono emergente de "Cast" tocando en cualquier lugar de la pantalla.
  • MediaMetadataCompat arroja BadParcelableException.

Revisión 27.0.1: lanzamiento

(Noviembre de 2017)

Correcciones de errores

  • LifecycleRegistry está en el estado incorrecto después de que se llama a startActivityForResult() (problema 65665621).
  • El color de los botones inhabilitados es demasiado claro en los niveles de API anteriores.
  • Después de que un usuario se desplaza, no puede hacer clic en un elemento de un RecyclerView. (problema de AOSP 66996774)
  • En Talkback, hacer clic en más opciones no hace que el sistema anuncie la nueva ventana emergente o agregue foco a las nuevas opciones.

Revisión 27.0.0: lanzamiento

(Octubre de 2017)

Diferencias de API

Cambios en API

  • Las anotaciones de Nullability se agregaron a una variedad de API, incluidas las siguientes: Esto puede causar errores de compilación de Kotlin cuando los tipos de datos anulables que se muestran no se procesan correctamente.
  • Fragment puede usar versiones de biblioteca de Transition para transiciones de fragmentos, incluidas las transiciones de elementos compartidos.
  • La biblioteca de paginación de contenido (android.support.content.ContentPager) proporciona compatibilidad para paginar contenido expuesto mediante un ContentProvider. El uso de esta biblioteca permite que un cliente evite interprocesos costosos de "intercambios de ventana de cursor" en el subproceso de IU, lo que proporciona una biblioteca de compatibilidad para la función Android 8.0.
  • ViewCompat ahora agrega wrappers para los métodos de autocompletar, incluidos getImportantForAutofill(), isImportantForAutofill(), setAutofillHints() y setImportantForAutofill().
  • Leanback obtiene nuevas funciones y refinamiento, y pierde algunas clases obsoletas, como las siguientes:
    • Picker ahora puede usar separadores diferentes entre columnas con el método setSeparators().
    • Se agregó DiffCallback para permitir que ArrayObjectAdapter aproveche el resultado que proporciona DiffUtil.
    • Se agregó la infraestructura para admitir reproductores multimedia con controles variables, y se agregaron controles opcionales para avance rápido, repetición, reproducción aleatoria, siguiente, anterior y retroceso.
    • Se quitaron MediaControllerGlue, PlaybackControlGlue, PlaybackControlSupportGlue y PlaybackOverlayFragment.
  • Para las pruebas, la utilidad PollingCheck se transfiere desde AOSP CTS. Sondea para que una condición ocurra dentro de una ventana de tiempo de espera.
  • Se agregó la infraestructura para admitir permisos de tiempo de ejecución en apps instantáneas para Android 5.0 mediante PermissionCompatDelegate.
  • Ahora son compatibles las pestañas personalizadas de confianza, junto con la capacidad de definir una relación entre una aplicación y un URI de origen.
  • La compatibilidad con el modo ambiente de Android Wear se simplifica con el uso del fragmento sin interfaz gráfica AmbientMode, que también permite compatibilizar el modo ambiente con el uso de componentes de arquitectura.
  • El equipo de Wear quiere recibir comentarios de los desarrolladores sobre este cambio significativo. Para obtener más información, consulta las notas de la versión de Android Wear.
  • Algunas clases obsoletas se quitan a medida que nos alejamos de las antiguas API anteriores a V14, comoandroid.support.v7.NotificationCompat (en su lugar, usa v4 NotificationCompat), KeyEventCompat, ParallelExecutorCompat y SearchViewCompat.
  • Las constantes de metadatos del manifiesto de Wear migradas ahora están disponibles mediante android.support.wear.utils.MetadataConstants.
  • El modo ambiente ahora está disponible para todas las actividades, no solo para WearableActivity. Para obtener más información, consulta la referencia de AmbientMode.
  • RoundedDrawable ahora admite inflación XML.

Correcciones de errores

  • Se producen fallas de aplicaciones con la biblioteca de compatibilidad 27 y fuente descargable.
  • Las fuentes descargables no funcionan para los proyectos nuevos creados después de actualizar el SDK.
  • La API SpeechRecognizer falla en la última actualización.
  • Hay una falla relacionada con fragmentos durante el sorteo después de quitar el elemento View animado.
  • La reproducción de medios de soporte-leanback-demos falla.
  • La biblioteca de compatibilidad de Android agrega <meta-data> al manifiesto.
  • FontResourcesParserCompat debería entender android: attrs.
  • Leanback Glue no admite la tecla de entrada Pausa.
  • Símbolo no resuelto en IDE cuando varios paquetes comparten el mismo ID de artefacto.
  • Hay una excepción de puntero nulo en CarExtender.
  • El modo aleatorio o de repetición incorrecto establece PlaybackState después de crear MediaController.
  • Los pósteres predeterminados del clúster de la biblioteca se ejecutan en el siguiente clúster durante la navegación.
  • Los metadatos de la tarjeta de recomendación están cortados.
  • IllegalArgumentException en RecyclerView.attachViewToParent().
  • Se producía una excepción ClassNotFoundException cuando se desalineaba SavedState (problema de AOSP 37133281).
  • El foco se atasca en RecyclerView.
  • Se corrigió el ANR en Leanback LayoutManager.

Revisión 26.1.0: Lanzamiento

(Septiembre de 2017)

Esta es una versión especial para integrar la biblioteca de compatibilidad con Lifecycles de componentes de arquitectura. Si no estás utilizando la biblioteca Lifecycles, no es necesario que actualices desde 26.0.2. Para obtener más información, consulta las notas de la versión de los componentes de la arquitectura.

Cambios importantes

Revisión 26.0.2: Lanzamiento

(Agosto de 2017)

Correcciones de errores

  • Los iconos de menú se aplanan en la biblioteca de compatibilidad 26.0.0.
  • GuidedAction.multilineDescription no funciona correctamente con Leanback

Revisión 26.0.1: Lanzamiento

(Agosto de 2017)

Correcciones de errores

  • FontCompat 26.0.0 falla en dispositivos O-MR1.
  • La biblioteca de compatibilidad de diseño 26.0.0 no debe incluir compatibilidad con multidex (problema 63999442).
  • AppBarLayout ahora tiene 300 píxeles de relleno izquierdo a partir de la versión 26.0.0.
  • La navegación de PlaybackTransportControl falla.
  • Fragment.onCreateView se llama después de que finaliza onCreate.
  • android.os.BadParcelableException: ClassNotFoundException when unmarshalling: android.support.v4.media.MediaMetadataCompat

Revisión 26.0.0: Lanzamiento

(Julio de 2017)

Importante: Las bibliotecas de compatibilidad ahora están disponibles a través del repositorio Maven de Google. No es necesario que descargues el repositorio de compatibilidad de SDK Manager. Para obtener más información, consulta Configuración de la biblioteca de compatibilidad.

Cambios importantes

  • La versión mínima del SDK aumentó a 14. Como resultado, muchas API que solo existían por compatibilidad con niveles de API anteriores a 14 quedaron en desuso. Los clientes de estas API deben migrar a sus equivalentes del marco de trabajo, como se indica en la página de referencia para cada API en desuso.
  • La biblioteca de IU de Wear contiene clases que te ayudan a implementar patrones y diseños que funcionan en dispositivos Wear. Para obtener más información, consulta Cómo usar la biblioteca de IU de Wear.
  • El módulo de compatibilidad porcentual ya no está disponible. Los clientes de este módulo deberían migrar al nuevo widget ConstraintLayout, que se proporciona como un artefacto separado en SDK Manager.
  • android.support.v7.app.NotificationCompat y las clases que lo contienen ya no están disponibles y se quitarán en una versión futura:

API nuevas

  • Nueva marca booleana fastScrollEnabled para RecyclerView. Si se habilita, se deben configurar fastScrollHorizontalThumbDrawable, fastScrollHorizontalTrackDrawable, fastScrollVerticalThumbDrawable y fastScrollVerticalTrackDrawable.

Diferencias de API

Correcciones de errores

  • Bucle infinito en RecyclerView.toString()
  • ResourceNotFoundException ejecuta proyecto Kotlin en API nivel 16 de AVD después de actualizar a Canary 6
  • java.lang.AssertionError in design view with support library 26.0.0-beta2
  • La vista previa del diseño de Android Studio no está disponible para los widgets de la biblioteca de compatibilidad
  • Preference.setSingleLineTitle() se ignora si la preferencia no se creó con atributos
  • Las anotaciones de DAC "Since" son incorrectas para las revisiones 25.3.0/25.4.0 de la biblioteca de compatibilidad
  • ResourcesCompat.getFont() lanza una excepción
  • El título de la barra de herramientas no está en negrita
  • El dimensionamiento automático con maxLines produce resultados inesperados
  • NullPointerException en TextView.checkForRelayout()
  • AppCompatTextViewAutoSizeHelper.setRawTextSize() llama a requestLayout() durante el diseño
  • Se producen fallas de EmojiAppCompatTextView.
  • El tamaño de TextView no se ajusta automáticamente cuando se cambia el texto
  • Error de pantalla en Instacart
  • UnsupportedOperationException en MenuItemCompat
  • NotificationCompat no extrae completamente las acciones en la API nivel 24 o en versiones posteriores
  • Se producen problemas de anclaje de CoordinatorLayout en actualizaciones de diseño