Последние изменения в библиотеке поддержки

На этой странице приведена информация о последних выпусках пакета библиотеки поддержки. Сведения о более ранних версиях можно найти в архиве версий библиотеки поддержки.

Рабочая версия 28.0.0

(21 сентября 2018 г.)

Это стабильная версия библиотеки поддержки 28.0.0, которую можно использовать в рабочих проектах. Это последний выпуск функций в пакете android.support. Разработчикам рекомендуется перейти на AndroidX.

Новые функции

  • AnimatedStateListDrawableCompat позволяет создавать анимированные переходы между состояниями объектов.
  • VectorDrawableCompat теперь поддерживает градиентные и ColorStateList заливки и обводки.

Версия 28.0.0 RC 2

(27 августа 2018 г.)

Эта версия-кандидат библиотеки поддержки считается полностью готовой, а ее общедоступный API стабилен. Если не возникнет критических проблем, эта версия будет выпущена как стабильная. Этот выпуск можно использовать в рабочей среде. Если у вас возникнут проблемы, сообщите нам об этом в общедоступном инструменте отслеживания ошибок.

Устраненные проблемы

  • Proguard удаляет конструктор приложения View Model (общедоступная проблема 112230489)
  • Исправлено постоянное состояние `AnimatedStateListDrawableCompat`
  • Удалена зависимость от Media2 в MediaRouter 1.0.0
  • `Fragment.getViewLifecycleOwner()` не останавливается при нажатии кнопки "Домой" (общедоступная проблема 113070421) ([общедоступная проблема 113070421](https://issuetracker.google.com/issues/113070421))

Версия 28.0.0 RC 1

(6 августа 2018 г.)

Эта версия-кандидат библиотеки поддержки считается полностью готовой, а ее общедоступный API стабилен. Если не возникнет критических проблем, эта версия будет выпущена как стабильная. Этот выпуск можно использовать в рабочей среде. Если у вас возникнут проблемы, сообщите нам об этом в общедоступном инструменте отслеживания ошибок.

Примечание. Некоторые библиотеки, например media2, остаются на альфа-стадии, поскольку их API ещё не завершены. Мы не рекомендуем использовать альфа-версии библиотек в рабочих проектах. В рабочих версиях библиотек следует избегать зависимостей от альфа-версий, поскольку их API могут меняться способами, несовместимыми с исходным кодом и двоичными файлами.

Устраненные проблемы

  • Меню BottomNavigationView неправильно инициализировано в библиотеке поддержки дизайна
  • PositionalDataSource неправильно обрабатывает вставку элементов в начало базы данных
  • Ползунки работают нестабильно и не реагируют на действия пользователя
  • `SlicesProviderCompat.getPinnedSpecs()` не добавляет идентификаторы пользователей в URI
  • RoutePlayer2: при удаленном воспроизведении не выполняется переключение на локальное
  • При выполнении действий происходит сбой при анализе кешированного фрагмента
  • Сбой приложения Google Поиска при отрисовке статического фрагмента
  • ConcurrentModificationException в библиотеке выбора RecyclerView, когда набор данных изменяется с удалением выбора
  • PreferenceThemeOverlay обновлен до последней версии темы Material. Если собственная тема не указана, по умолчанию используется PreferenceThemeOverlay.
  • Темы PreferenceThemeOverlay.v14 и PreferenceThemeOverlay.v14.Material устарели. Вместо них используйте PreferenceThemeOverlay.
  • Видимость группы PreferenceGroup теперь связана с ее дочерними элементами. Если скрыть родительскую группу, ее дочерние элементы также не будут показываться в иерархии. Используйте Preference.isShown(), чтобы узнать, показывается ли Preference пользователю в иерархии.
  • Метод Preference.onSetInitialValue(boolean, Object) устарел и заменен на onSetInitialValue(Object). Теперь PreferenceDataStore также правильно восстанавливает значения по умолчанию.

Версия 28.0.0 Beta 1

(июль 2018 г.)

Бета-версия библиотеки поддержки считается полностью готовой, а ее общедоступный API стабилен, за исключением возможных критических проблем. Эту версию можно использовать в рабочих целях, но в ней могут быть ошибки. Если у вас возникнут проблемы, сообщите нам об этом в общедоступном инструменте отслеживания ошибок.

Устраненные проблемы

  • GestureSelectionHelper обрабатывает события на невыбираемых объектах
  • При изменении значения ползунка значок ползунка может дублироваться.
  • IconCompat нарушил работу значков TYPE_URI
  • Сбой при использовании ползунка в настройках
  • Сбой в Slice.toString()
  • Вместо mCallback.onMoved() функция OffsettingListUpdateCallback.onMoved() вызывает mCallback.onRemoved() (проблема 110711937)

Версия 27.1.1

(апрель 2018 г.)

Устраненные проблемы

  • AsyncListDiffer не вызывает getChangePayload (проблема AOSP 73961809)
  • Метод onCleared в Fragment ViewModel не вызывается (проблема AOSP 74139250)
  • RecyclerView.setRecycledViewPool() увеличивает attachCount, даже если адаптер имеет значение null
  • RecyclerView NPE, если SmoothScroller.onStop вызывает stop() или startSmoothScroller()
  • Транзакция замены фрагмента приводит к тому, что предыдущий фрагмент мерцает после показа нового (проблема AOSP 74051124)
  • Критическое изменение обратного вызова загрузчика в версии 27.1.0 (проблема AOSP 74135998)
  • Макет с расположением справа налево не работает, если в вертикальном режиме в виде сетки задано больше одного столбца
  • onLoadFinished вызывается несколько раз в ViewPager с FragmentPagerAdapter
  • AsyncListDiffer должен отправлять обновления после установки текущего списка (проблема AOSP 74003309)
  • ShareActionProvider вызывает исключение ClassCastException в версии 27.1.0
  • Изменение жизненного цикла фрагмента с помощью ViewPager (проблема AOSP 73976255)

Версия 28.0.0 Alpha 1

(март 2018 г.)

Примечание. Версия 28.0.0-alpha1 – это предварительная версия, поддерживающая предварительную версию Android P для разработчиков. Его API может меняться, и он не обязательно включает функции или исправления ошибок из последних стабильных версий библиотеки поддержки.

Важные изменения

  • Как мы уже сообщали в анонсе Android KTX, мы продолжаем использовать префикс пакета androidx во всех наших библиотеках. В новый пакет входят совершенно новые библиотеки, в том числе heifwriter и recyclerview-selection. Мы надеемся, что разделение на android.* и androidx.* поможет вам понять, какие API входят в состав платформы, а какие представляют собой статические библиотеки для разработчиков приложений, работающие в разных версиях Android.
  • Мы разделили части библиотек support-core-ui, support-core-utils и support-compat на более мелкие библиотеки. Это изменение поможет нам в будущем устранить зависимости библиотеки поддержки. Теперь доступны следующие новые библиотеки:
    • asynclayoutinflater (из support-core-ui)
    • collections (из support-compat)
    • coordinatorlayout (из дизайна)
    • cursoradapter (из support-core-ui)
    • customview (из support-core-ui)
    • documentfile (из support-core-utils)
    • drawerlayout (из support-core-ui)
    • interpolator (из support-core-ui)
    • loader (из support-fragments и core-utils)
    • localbroadcastmanager (из support-core-utils)
    • print (из support-core-utils)
    • slidingpanelayout (из библиотеки support-core-ui)
    • swiperefreshlayout (из support-core-ui)
    • viewpager (из support-core-ui)

Новые API

  • recyclerview-selection предоставляет помощь в выборе товаров для RecyclerView. Пакет включает:
    • Поддержка создания, изменения, проверки и мониторинга изменений в наборе выбранных элементов в списке RecyclerView.
    • Поддержка интуитивно понятных действий с несколькими объектами:
      • Выбор с помощью сенсорного экрана позволяет пользователям выбирать диапазоны объектов с помощью интуитивно понятного жеста долгого нажатия и перетаскивания.
      • Выбор нескольких элементов в списке RecyclerView с помощью мыши позволяет пользователям выбирать блок элементов в списке RecyclerView с помощью традиционных действий указателя мыши.
    • Поддержка устройств с сенсорным экраном, в том числе телефонов и ноутбуков, а также устройств с указателем.
  • HEIF Writer поддерживает запись статичных изображений в формате HEIF.
  • Библиотека дизайна
    • Мы добавили новую тему приложения – Theme.MaterialComponents – с новыми атрибутами и обновленными стилями для компонентов.
    • Мы добавили следующие компоненты:
      • BottomAppBar
      • Чип
      • ChipGroup
      • MaterialButton
      • MaterialCardView
  • Фрагменты – это фреймворк, позволяющий приложениям встраивать контент из других приложений.
    • slices-builders содержит методы для создания контента в формате шаблона.
    • slices-view содержит методы для представления этого контента.
  • Действия браузера – это протокол, позволяющий разработчикам приложений запускать для URL согласованное (но настраиваемое) контекстное меню. Эта функция зависит от наличия приложения браузера (например, Chrome, где она пока находится в разработке), поддерживающего действия браузера.
  • ContextCompat.getSystemService() и getSystemServiceName() позволяют выполнять поиск системных сервисов по типу на всех уровнях API.

Исправлены ошибки.

  • Метод onCleared класса Fragment ViewModel не вызывается (проблема AOSP 74139250)
  • Метод onLoadFinished() вызывается несколько раз в ViewPager с FragmentPagerAdapter (проблема AOSP 74182171)
  • Функция smoothScrollToPosition() класса LinearLayoutManager из RecyclerView в некоторых случаях приводит к нестабильному (туда-сюда) движению (проблема AOSP 71567765).

Версия 27.1.0

(февраль 2018 г.)

Важные изменения

  • Реализация загрузчиков была переписана с использованием жизненного цикла. Хотя API остался прежним, изменилось поведение некоторых функций:
    • initLoader(), restartLoader() и destroyLoader() теперь можно вызывать только в основном потоке.
    • Методы onStartLoading() и onStopLoading() класса Loader теперь вызываются, когда запускается и останавливается содержащий их объект FragmentActivity или Fragment.
    • Функция onLoadFinished() будет вызываться только в период с onStart() по onStop. В результате транзакции с фрагментами теперь можно безопасно выполнять в onLoadFinished().
    • Методы FragmentController, связанные с загрузчиками, теперь считаются устаревшими.
  • Теперь getDialog() в DialogFragment будет иметь ненулевое значение до onDestroyView(), а не до dismiss(). Теперь вы можете определить, был ли диалог закрыт вручную в onStop(), проверив, возвращает ли getDialog().isShowing() значение false.

Новые API

  • ListAdapter для RecyclerView (вместе с AsyncListDiffer) упрощает вычисление различий в списках в фоновом потоке. Они помогают RecyclerView автоматически анимировать изменения контента, не перегружая поток UI. Они используют DiffUtil.
  • SortedList.ReplaceAll позволяет обновлять все данные в SortedList, запуская все необходимые анимации для вставок, удалений, изменений и перемещений (перемещения обрабатываются как удаления и вставки).
  • FragmentActivity и Fragment теперь реализуют ViewModelStoreOwner и могут использоваться с конструкторами ViewModelProvider в качестве альтернативы ViewModelProviders.of().
  • Теперь у фрагментов есть методы requireContext(), requireActivity(), requireHost() и requireFragmentManager(), которые возвращают объект NonNull эквивалентных методов get или вызывают исключение IllegalStateException.
  • В WindowCompat, ActivityCompat и ViewCompat добавлена совместимая с @NonNull версия findViewById(), которая вызывает исключение IllegalArgumentException, если целевой объект не найден.requireViewById()
  • Методы LoaderCallbacks теперь имеют подходящие аннотации @Nullable и @NonNull.
  • FileProvider теперь поддерживает getExternalMediaDirs() на устройствах с API 21 и более поздних версий с помощью нового элемента <external-media-path>.

Исправлены ошибки.

  • Фрагмент, инициализирующий загрузчик в onCreate, имеет нарушенный жизненный цикл внутри ViewPager
  • LoaderManager вызывает исключение IllegalStateException в onLoadFinished
  • LoaderViewModel не очищает загрузчики в onCleared
  • Class file for android.arch.lifecycle.ViewModelStoreOwner not found
  • DialogFragment onDismiss не вызывается сразу после dismiss()
  • Эмодзи с флагами стран не работают на устройствах с ключами выпуска при использовании скачиваемых шрифтов
  • Библиотека настроек использует атрибуты, которые не работают в старых версиях Android
  • Неправильно описаны типы артефактов testlib библиотеки MediaCompat (проблема AOSP 71559905)
  • Сбой Google Sans в TypefaceCompatUtil
  • Добавлен конструктор ArraySet, который принимает коллекцию.
  • updateApi удаляет файлы .ignore, которые должны быть сохранены
  • лишние объекты MainFragment, созданные в BrowseFragment;
  • Удаление использования отражения из CarRecyclerView
  • java.lang.IllegalStateException at FragmentManagerImpl.checkStateLoss
  • Got (undocumented) java.lang.SecurityException when using android.support.v4.content.PermissionChecker.checkSelfPermission
  • RecyclerView IndexOutOfBoundsException, поскольку State.mPreviousLayoutItemCount не очищается в setAdapter (проблема AOSP 37657125)
  • Фрагмент, который инициализирует загрузчик в onCreate, имеет нарушенный жизненный цикл внутри ViewPager (проблема AOSP 34831613)
  • Сбой FragmentManagerImpl.execSingleAction

Выпуск версии 27.0.2

(ноябрь 2017 г.)

Исправлены ошибки.

  • EmojiEditTextHelperбросаетNullPointerException.
  • IllegalStateException – фрагмент ещё не прикреплен.
  • Не удается закрыть всплывающее окно со значком трансляции, нажав в любом месте экрана.
  • MediaMetadataCompatбросаетBadParcelableException.

Выпуск версии 27.0.1

(ноябрь 2017 г.)

Исправлены ошибки.

  • LifecycleRegistry находится в неправильном состоянии после вызова startActivityForResult(). (ошибка 65665621)
  • Цвет неактивных кнопок слишком светлый на более ранних уровнях API.
  • После прокрутки пользователь не может нажать на элемент в RecyclerView. (Проблема AOSP 66996774)
  • В Talkback при нажатии на дополнительные параметры система не объявляет новое всплывающее окно и не фокусируется на новых параметрах.

Версия 27.0.0

(октябрь 2017 г.)

Различия в API

Изменения в API

  • Аннотации Nullability добавлены в различные API, в том числе в следующие: Это может привести к ошибкам компиляции Kotlin, если неверно обработаны возвращаемые типы, допускающие значение null.
  • Fragment может использовать версии библиотеки поддержки для Transition для переходов между фрагментами, включая переходы с общими элементами.
  • Библиотека для постраничной загрузки контента (android.support.content.ContentPager) позволяет реализовать постраничную загрузку контента, предоставляемого через ContentProvider. Использование этой библиотеки позволяет клиенту избежать дорогостоящих межпроцессных "переключений окон курсора" в потоке UI, предоставляя библиотеку совместимости для функции Android 8.0.
  • ViewCompat теперь добавляет оболочки для методов автозаполнения, в том числе getImportantForAutofill(), isImportantForAutofill(), setAutofillHints() и setImportantForAutofill().
  • Leanback получил новые функции и улучшения, а также лишился некоторых устаревших классов, например:
    • Picker теперь может использовать разные разделители между столбцами с помощью метода setSeparators().
    • DiffCallback добавлено, чтобы ArrayObjectAdapter мог использовать выходные данные, предоставленные DiffUtil.
    • Добавлена инфраструктура для поддержки медиаплееров с переменными элементами управления, а также необязательные элементы управления для перемотки вперед, повтора, перемешивания, перехода к следующему или предыдущему треку и перемотки назад.
    • Удалены MediaControllerGlue, PlaybackControlGlue, PlaybackControlSupportGlue и PlaybackOverlayFragment.
  • Для тестирования утилита PollingCheck перенесена из AOSP CTS. Он проверяет, выполняется ли условие в течение заданного времени.
  • Добавлена инфраструктура для поддержки динамических разрешений в приложениях с мгновенным запуском для Android 5.0 с использованием PermissionCompatDelegate.
  • Теперь поддерживаются доверенные специальные вкладки, а также возможность определять связь между приложением и URI источника.
  • Поддержка спящего режима в Android Wear упрощена благодаря использованию фрагмента без интерфейса AmbientMode, который также обеспечивает совместимость спящего режима с компонентами архитектуры.
  • Удалены некоторые устаревшие классы, поскольку мы отказываемся от старых API, выпущенных до версии 14, например android.support.v7.NotificationCompat (вместо него используйте NotificationCompat версии 4), KeyEventCompat, ParallelExecutorCompat и SearchViewCompat.
  • Все константы метаданных манифеста Wear OS теперь доступны через android.support.wear.utils.MetadataConstants.
  • Теперь режим Ambient Mode поддерживается для всех действий, а не только для WearableActivity. Дополнительную информацию можно найти в справочнике по AmbientMode.
  • RoundedDrawable теперь поддерживает инфляцию XML.

Исправлены ошибки.

  • Приложение аварийно завершает работу с библиотекой поддержки 27 и скачиваемым шрифтом
  • Шрифты, скачиваемые по запросу, не работают в новых проектах, созданных после обновления SDK
  • API SpeechRecognizer не работает после последнего обновления
  • Сбой, связанный с фрагментом, во время рисования после удаления анимированного представления
  • support-leanback-demos media playback are all broken
  • Библиотека поддержки Android добавляет в манифест элемент <meta-data>
  • FontResourcesParserCompat должен понимать атрибуты Android
  • Leanback Glue не поддерживает клавишу паузы
  • Неразрешенный символ в IDE, когда у нескольких пакетов один и тот же идентификатор артефакта.
  • Исключение нулевого указателя в CarExtender
  • Неправильный режим перемешивания или повтора задан в PlaybackState после создания MediaController
  • При переходе между кластерами в библиотеке по умолчанию показываются постеры из следующего кластера
  • Метаданные карточки рекомендации обрезаны
  • IllegalArgumentException в RecyclerView.attachViewToParent()
  • ClassNotFoundException при десериализации SavedState (проблема AOSP 37133281)
  • Фокус застревает в RecyclerView
  • Как устранить ошибки ANR в Leanback LayoutManager

Выпуск версии 26.1.0

(сентябрь 2017 г.)

Это специальный выпуск, в котором библиотека поддержки интегрирована с жизненными циклами из компонентов архитектуры. Если вы не используете библиотеку Lifecycles, обновлять версию 26.0.2 не нужно. Подробную информацию можно найти в примечаниях к выпуску компонентов архитектуры.

Важные изменения

Версия 26.0.2

(август 2017 г.)

Исправлены ошибки.

  • В библиотеке поддержки версии 26.0.0 значки меню стали плоскими
  • GuidedAction.multilineDescription работает некорректно с Leanback

Версия 26.0.1

(август 2017 г.)

Исправлены ошибки.

  • Сбой FontCompat 26.0.0 на устройствах с Android O–MR1
  • Библиотека поддержки дизайна версии 26.0.0 не должна включать поддержку multidex (проблема 63999442).
  • В версии 26.0.0 и более поздних у AppBarLayout есть отступ слева размером 300 пикселей.
  • Навигация по элементам управления воспроизведением не работает
  • Метод Fragment.onCreateView вызывается до завершения метода onCreate
  • android.os.BadParcelableException: ClassNotFoundException when unmarshalling: android.support.v4.media.MediaMetadataCompat

Версия 26.0.0

(июль 2017 г.)

Важно! Библиотеки поддержки теперь доступны в репозитории Google Maven. Вам не нужно скачивать репозиторий поддержки из SDK Manager. Подробнее о том, как настроить библиотеку поддержки…

Важные изменения

  • Минимальная версия SDK была повышена до 14. В результате многие API, которые существовали только для совместимости с уровнями API ниже 14, стали устаревшими. Клиентам этих API следует перейти на эквивалентные фреймворки, как указано на справочной странице для каждого устаревшего API.
  • Библиотека Wear UI содержит классы, которые помогают реализовывать шаблоны и макеты, работающие на устройствах Wear. Подробнее о том, как использовать библиотеку Wear UI…
  • Модуль Percent Supportбольше не поддерживается. Клиентам этого модуля следует перейти на новый виджет ConstraintLayout, который предоставляется как отдельный артефакт в SDK Manager.
  • android.support.v7.app.NotificationCompat и содержащиеся в нем классы больше не поддерживаются и будут удалены в будущем выпуске:

Новые API

  • Новый логический флаг fastScrollEnabled для RecyclerView. Если этот параметр включен, необходимо задать значения для fastScrollHorizontalThumbDrawable, fastScrollHorizontalTrackDrawable, fastScrollVerticalThumbDrawable и fastScrollVerticalTrackDrawable.

Различия в API

Исправлены ошибки.

  • Бесконечный цикл в RecyclerView.toString()
  • Исключение ResourceNotFoundException при запуске проекта Kotlin на виртуальном устройстве API 16 после обновления до Canary 6
  • java.lang.AssertionError в режиме дизайна с библиотекой поддержки 26.0.0-beta2
  • Предпросмотр макета в Android Studio не работает для виджетов из библиотеки поддержки
  • Метод Preference.setSingleLineTitle() игнорируется, если объект Preference был создан без атрибутов
  • Аннотации DAC "Since" неправильные для версий 25.3.0 и 25.4.0 библиотеки поддержки
  • ResourcesCompat.getFont() вызывает исключение
  • Название панели инструментов не выделено полужирным шрифтом
  • Автоматическое изменение размера с параметром maxLines дает неожиданные результаты
  • NullPointerException в TextView.checkForRelayout()
  • AppCompatTextViewAutoSizeHelper.setRawTextSize() вызывает requestLayout() во время макета
  • Сбои EmojiAppCompatTextView
  • Автоматическое изменение размера TextView не работает при изменении текста
  • Искажение изображения на экране в Instacart
  • UnsupportedOperationException в MenuItemCompat
  • NotificationCompat не полностью извлекает действия в API 24 и более поздних версий
  • Проблемы с привязкой CoordinatorLayout при обновлении макета