На этой странице представлены сведения о последних выпусках пакетов библиотеки поддержки. Более ранние выпуски см. в архиве версий библиотеки поддержки .
Версия 28.0.0 Производство
(21 сентября 2018 г.)
Это стабильная версия библиотеки поддержки 28.0.0, пригодная для использования в производстве. Это будет последний выпуск функции в пакете android.support
, и разработчикам рекомендуется перейти на AndroidX .
Новые возможности
-
AnimatedStateListDrawableCompat
обеспечивает анимированные переходы между состояниями рисования. -
VectorDrawableCompat
получает поддержку заливок и обводок градиентом иColorStateList
.
Версия 28.0.0 RC 2
(27 августа 2018 г.)
Этот кандидат на выпуск библиотеки поддержки считается полнофункциональным, а его общедоступная поверхность API стабильна. Этот выпуск будет поставляться как окончательная стабильная версия, исключающая любые критические проблемы, которые могут возникнуть. Этот выпуск должен быть безопасным для использования в производстве. Пожалуйста, сообщайте о любых проблемах в общедоступную систему отслеживания проблем .
Исправлены проблемы
- Proguard удаляет конструктор приложения модели представления (общедоступная проблема 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 Search при рендеринге статического фрагмента
- ConcurrentModificationException в библиотеке выбора RecyclerView, когда набор данных изменился с удалением выделения
- PreferenceThemeOverlay обновлен до последней темы материала. Если пользовательская тема не указана, PreferenceThemeOverlay используется в качестве темы по умолчанию.
- Темы PreferenceThemeOverlay.v14 и PreferenceThemeOverlay.v14.Material устарели в пользу PreferenceThemeOverlay.
- Видимость PreferenceGroup теперь привязана к ее дочерним группам: скрытие родительской группы также не позволит ее дочерним элементам отображаться в иерархии. Используйте Preference.isShown(), чтобы узнать, действительно ли предпочтение отображается пользователю в иерархии.
- Preference.onSetInitialValue(boolean, Object) устарел и заменен на onSetInitialValue(Object). PreferenceDataStore теперь также корректно восстанавливает значения по умолчанию.
Версия 28.0.0 Бета 1
(июль 2018 г.)
Эта бета-версия библиотеки поддержки считается полнофункциональной, а ее общедоступная поверхность API стабильна, исключая любые критические проблемы, которые могут возникнуть. Хотя этот выпуск безопасен для использования в производстве, он все равно может содержать ошибки. Пожалуйста, сообщайте о любых проблемах в общедоступную систему отслеживания проблем .
Исправлены проблемы
- GestureSelectionHelper принимает события для невыбираемых элементов
- Срезы ползунка могут иметь дублирующийся значок большого пальца при обновлении значения ползунка.
- IconCompat сломал значки TYPE_URI
- Сбой с настройками при использовании панели поиска
- Сбой в Slice.toString()
- OffsettingListUpdateCallback.onMoved() вызывает mCallback.onRemoved() вместо mCallback.onMoved() (ошибка 110711937 ).
Версия 27.1.1
(апрель 2018 г.)
Исправлены проблемы
- AsyncListDiffer не вызывает getChangePayload (проблема AOSP 73961809 )
- OnCleared фрагмента ViewModel не вызывается (проблема AOSP 74139250 )
- RecyclerView.setRecycledViewPool() увеличивает AttachCount, даже если адаптер имеет значение null
- RecyclerView NPE, если SmoothScroller.onStop вызывает stop() или startSmoothScroller()
- Транзакция замены фрагмента приводит к мерцанию предыдущего фрагмента после отображения нового фрагмента (проблема AOSP 74051124 )
- Критическое изменение обратного вызова загрузчика в версии 27.1.0 (проблема AOSP 74135998 )
- Макет RTL не работает, если столбец набора вертикальной сетки> 1
- onLoadFinished вызывается несколько раз в ViewPager с помощью FragmentPagerAdapter
- AsyncListDiffer должен отправлять обновления после установки текущего списка (проблема AOSP 74003309 ).
- ShareActionProvider выдает ClassCastException в 27.1.0
- Изменение жизненного цикла фрагмента с помощью ViewPager (проблема AOSP 73976255 )
Версия 28.0.0 Альфа 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)
- коллекции (из support-compat)
- координатор макета (из дизайна)
- курсорадаптер (из support-core-ui)
- customview (из support-core-ui)
- файл документа (из support-core-utils)
- расположение ящиков (из support-core-ui)
- интерполятор (из support-core-ui)
- загрузчик (из фрагментов поддержки и основных утилит)
- localbroadcastmanager (из support-core-utils)
- печать (из support-core-utils)
- скользящая панель (из support-core-ui)
- swiperefreshlayout (из support-core-ui)
- viewpager (из support-core-ui)
Новые API
-
recyclerview-selection
обеспечивает поддержку выбора элементов дляRecyclerView
. Пакет обеспечивает:- Поддержка создания, изменения, проверки и мониторинга изменений набора выбранных элементов в списке RecyclerView.
- Поддержка интуитивно понятных действий с множественным выбором:
- Сенсорный выбор позволяет пользователям выбирать диапазоны элементов с помощью интуитивно понятного длительного нажатия и перетаскивания.
- Выбор полосы с помощью мыши позволяет пользователям выбирать блок элементов в списке RecyclerView, используя традиционные действия с полосой указателя мыши или лассо.
- Поддержка сенсорных устройств, включая форм-факторы телефонов и ноутбуков с сенсорным экраном, а также устройств, ориентированных на указатель.
- HEIF Writer обеспечивает поддержку записи неподвижных изображений в формате HEIF.
- Библиотека дизайна
- Мы представили новую тему приложения
Theme.MaterialComponents
с новыми атрибутами и обновленными стилями для компонентов. - Мы добавили следующие компоненты:
- Нижняя панель приложений
- Чип
- ЧипГруппа
- МатериалКнопка
- МатериалКартаView
- Мы представили новую тему приложения
- Slices предоставляет приложениям платформу для встраивания шаблонного контента из других приложений.
- срезы-построители содержат методы для создания контента в формате шаблона.
- слайсы-представление содержат методы для представления этого контента.
- Действия браузера предоставляют разработчикам приложений протокол для запуска согласованного (но настраиваемого) контекстного меню для URL-адресов. Эта функция зависит от наличия браузерного приложения (например, Chrome, где эта функция все еще находится в стадии разработки), которое реализует поддержку действий браузера.
-
ContextCompat.getSystemService()
иgetSystemServiceName()
позволяют выполнять поиск системных служб по типу на всех уровнях API.
Исправления ошибок
- OnCleared фрагмента ViewModel не вызывается (проблема AOSP 74139250 )
- onLoadFinished() вызывается несколько раз в ViewPager с помощью FragmentPagerAdapter (проблема AOSP 74182171 )
- Функция SmoothScrollToPosition() LinearLayoutManager RecyclerView отображает беспорядочное движение (вперед и назад) при определенных обстоятельствах (проблема AOSP 71567765 ).
Выпуск версии 27.1.0
(февраль 2018 г.)
Важные изменения
- Базовая реализация Loaders была переписана для использования Lifecycle . Хотя API остался неизменным, есть ряд изменений в поведении:
-
initLoader()
,restartLoader()
иdestroyLoader()
теперь можно вызывать только в основном потоке. -
onStartLoading()
иonStopLoading()
загрузчика теперь вызываются, когда содержащий FragmentActivity/Fragment запускается и останавливается соответственно. -
onLoadFinished()
будет вызываться только междуonStart()
иonStop
. В результате транзакции Fragment теперь можно безопасно выполнять вonLoadFinished()
. - Методы FragmentController, связанные с загрузчиками, теперь устарели.
-
-
getDialog()
в DialogFragment теперь будет ненулевым вплоть доonDestroyView()
, а не станет нулевым вdismiss()
. Теперь вы можете определить, был ли диалог закрыт вручную вonStop()
проверив, возвращает лиgetDialog().isShowing()
false.
Новые API
-
ListAdapter
дляRecyclerView
(вместе сAsyncListDiffer
) упрощает вычисление различий в списках в фоновом потоке. Это может помочь вашему RecyclerView автоматически анимировать изменения содержимого с минимальной работой в потоке пользовательского интерфейса. Они используютDiffUtil
под капотом. -
SortedList.ReplaceAll
позволяет обновлять все данные в SortedList, который запускает все соответствующие анимации для вставок, удалений, изменений и перемещений (перемещения рассматриваются как удаления и вставки). - FragmentActivity и Fragment теперь реализуют
ViewModelStoreOwner
и теперь могут использоваться с конструкторамиViewModelProvider
в качестве альтернативы использованиюViewModelProviders.of()
- Фрагменты теперь имеют
requireContext()
,requireActivity()
,requireHost()
иrequireFragmentManager()
, которые возвращают объектNonNull
из эквивалентных методов get или вызывают исключениеIllegalStateException
. -
requireViewById()
, версияfindViewById()
совместимая с@NonNull
, была добавлена вWindowCompat
,ActivityCompat
иViewCompat
, которые выдают исключениеIllegalArgumentException
, когда цель не может быть найдена. - Методы
LoaderCallbacks
теперь имеют соответствующие аннотации@Nullable
и@NonNull
. -
FileProvider
теперь поддерживаетgetExternalMediaDirs()
на устройствах API 21 и более поздних версий через новый элемент<external-media-path>
.
Исправления ошибок
- Фрагмент, который инициализирует загрузчик в onCreate, нарушил жизненный цикл внутри ViewPager.
- LoaderManager выдает исключение IllegalStateException в onLoadFinished
- LoaderViewModel не очищает свои загрузчики в onCleared
- Файл класса для android.arch.lifecycle.ViewModelStoreOwner не найден
- DialogFragment onDismiss не вызывается сразу после увольнения()
- Эмодзи с флагом страны не работают на устройствах с ключами выпуска при использовании загружаемых шрифтов.
- Библиотека настроек использует атрибуты, которые не будут работать в старых версиях Android.
- Типы артефактов testlib MediaCompat неправильно документированы (проблема AOSP 71559905 ).
- Сбой Google Sans в TypefaceCompatUtil
- Предоставьте конструктор ArraySet, который принимает Collection.
- updateApi удаляет файлы .ignore, которые следует сохранить.
- избыточные MainFragments, созданные в BrowseFragment
- Удалить использование отражения из CarRecyclerView.
- java.lang.IllegalStateException в FragmentManagerImpl.checkStateLoss
- Получил (недокументированное) java.lang.SecurityException при использовании 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
- Аннотации об отсутствии значений были добавлены к различным API, включая следующие: Это может привести к ошибкам компиляции Kotlin, если типы возвращаемых значений, допускающие значение NULL, не обрабатываются должным образом.
-
Fragment
может использовать версии библиотеки поддержкиTransition
для переходов фрагментов, включая переходы с общими элементами. - Библиотека подкачки контента (
android.support.content.ContentPager
) обеспечивает поддержку подкачки содержимого, предоставляемого черезContentProvider
. Использование этой библиотеки позволяет клиенту избежать дорогостоящих межпроцессных «перестановок окон курсора» в потоке пользовательского интерфейса, предоставляя библиотеку совместимости для функции 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, который также делает поддержку окружающего режима совместимой с использованием компонентов архитектуры.
- Команда Wear ищет отзывы разработчиков об этом значительном изменении. Дополнительную информацию см. в примечаниях к выпуску Android Wear .
- Некоторые устаревшие классы удалены по мере того, как мы отходим от старых API-интерфейсов до версии V14, таких как
android.support.v7.NotificationCompat
(вместо этого используйтеNotificationCompat
v4),KeyEventCompat
,ParallelExecutorCompat
иSearchViewCompat
. - Все перенесенные константы метаданных манифеста износа теперь доступны через
android.support.wear.utils.MetadataConstants
. - Поддержка режима Ambient теперь доступна для всех действий, а не только для WearableActivity. Дополнительные сведения см. в справочнике
AmbientMode
. -
RoundedDrawable
теперь поддерживает инфляцию XML.
Исправления ошибок
- Приложение вылетает из-за библиотеки поддержки 27 и загружаемого шрифта.
- Загружаемые шрифты не работают в новых проектах, созданных после обновления SDK.
- API SpeechRecouncer API не работает в последнем обновлении
- Сбой, связанный с фрагментом, во время отрисовки после удаления анимированного представления.
- поддержка-leanback-демо воспроизведение мультимедиа не работает
- Библиотека поддержки Android добавляет <метаданные> в манифест
- FontResourcesParserCompat должен понимать Android: attrs
- 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. Дополнительные сведения см. в примечаниях к выпуску компонентов архитектуры .
Важные изменения
-
Fragment
иFragmentActivity
(базовый класс дляAppCompatActivity
) теперь реализуют интерфейсLifecycleOwner
из Architecture Components .
Выпуск версии 26.0.2
(август 2017 г.)
Исправления ошибок
- Значки меню в библиотеке поддержки 26.0.0 сведены к минимуму.
-
GuidedAction.multilineDescription
не работает должным образом с Leanback.
Выпуск версии 26.0.1
(август 2017 г.)
Исправления ошибок
- FontCompat 26.0.0 аварийно завершает работу на устройствах O-MR1
- Библиотека поддержки дизайна версии 26.0.0 не должна включать поддержку мультидекса (проблема 63999442 ))
- AppBarLayout теперь имеет 300 пикселей левого заполнения с версии 26.0.0.
- Навигация PlaybackTransportControl не работает.
- Fragment.onCreateView вызывается незадолго до завершения onCreate.
- android.os.BadParcelableException: ClassNotFoundException при демаршаллинге: android.support.v4.media.MediaMetadataCompat
Выпуск версии 26.0.0
(июль 2017 г.)
Важно! Библиотеки поддержки теперь доступны в репозитории Google Maven. Вам не нужно загружать репозиторий поддержки из SDK Manager. Дополнительные сведения см. в разделе Настройка библиотеки поддержки .
Важные изменения
- Минимальная версия SDK была увеличена до 14. В результате многие API, существовавшие только для совместимости с уровнями API до 14, были признаны устаревшими. Клиентам этих API следует перейти на эквиваленты их платформы, как указано на справочной странице для каждого устаревшего API.
- Библиотека пользовательского интерфейса Wear содержит классы, которые помогут вам реализовать шаблоны и макеты, работающие на устройствах Wear. Дополнительные сведения см. в разделе Использование библиотеки пользовательского интерфейса Wear .
- Модуль процентной поддержки устарел. Клиентам этого модуля следует перейти на новый виджет
ConstraintLayout
, который предоставляется как отдельный артефакт в SDK Manager. -
android.support.v7.app.NotificationCompat
и содержащиеся в нем классы устарели и будут удалены в будущем выпуске:- Используйте
NotificationCompat.Builder
вместоv7.app.NotificationCompat.Builder
. Функциональность, которая раньше основывалась на использовании AppCompat Builder версии 7, теперь включена в Compat Builder версии 4. -
DecoratedCustomViewStyle
перемещен в пакетandroid.support.v4.app
. -
MediaStyle
иDecoratedMediaCustomViewStyle
теперь являются частью библиотеки медиа-совместимости и их можно найти в пакете android.support.v4.media.app .
- Используйте
Новые API
- Новый логический флаг
fastScrollEnabled
дляRecyclerView
. Если этот параметр включен, необходимо установитьfastScrollHorizontalThumbDrawable
,fastScrollHorizontalTrackDrawable
,fastScrollVerticalThumbDrawable
иfastScrollVerticalTrackDrawable
.
Различия API
Исправления ошибок
- Бесконечный цикл в RecyclerView.toString()
- ResourceNotFoundException запускает проект Kotlin на API 16 AVD после обновления до Canary 6
- java.lang.AssertionError в режиме дизайна с библиотекой поддержки 26.0.0-beta2
- Предварительный просмотр макета Android Studio не работает для виджетов библиотеки поддержки
- Preference.setSingleLineTitle() игнорируется, если предпочтение не было создано с атрибутами.
- Аннотации DAC "Since" неверны для версий 25.3.0/25.4.0 библиотеки поддержки.
- ResourcesCompat.getFont() выдает исключение
- Название панели инструментов не выделено жирным шрифтом
- Автоматическое определение размера с помощью maxLines дает неожиданные результаты
- NullPointerException в TextView.checkForRelayout()
- AppCompatTextViewAutoSizeHelper.setRawTextSize() вызывает requestLayout() во время макета
- Сбой EmojiAppCompatTextView
- Autosize TextView не регулируется автоматически при изменении текста
- Повреждение экрана в Instacart
- Исключение UnsupportedOperationException в MenuItemCompat
- NotificationCompat не полностью извлекает действия в API 24 или выше.
- Проблемы привязки координатораLayout при обновлениях макета
На этой странице представлены сведения о последних выпусках пакетов библиотеки поддержки. Более ранние выпуски см. в архиве версий библиотеки поддержки .
Версия 28.0.0 Производство
(21 сентября 2018 г.)
Это стабильная версия библиотеки поддержки 28.0.0, пригодная для использования в производстве. Это будет последний выпуск функции в пакете android.support
, и разработчикам рекомендуется перейти на AndroidX .
Новые возможности
-
AnimatedStateListDrawableCompat
обеспечивает анимированные переходы между состояниями рисования. -
VectorDrawableCompat
получает поддержку заливок и обводок градиентом иColorStateList
.
Версия 28.0.0 RC 2
(27 августа 2018 г.)
Этот кандидат на выпуск библиотеки поддержки считается полнофункциональным, а его общедоступная поверхность API стабильна. Этот выпуск будет поставляться как окончательная стабильная версия, исключающая любые критические проблемы, которые могут возникнуть. Этот выпуск должен быть безопасным для использования в производстве. Пожалуйста, сообщайте о любых проблемах в общедоступную систему отслеживания проблем .
Исправлены проблемы
- Proguard удаляет конструктор приложения модели представления (общедоступная проблема 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 Search при рендеринге статического фрагмента
- ConcurrentModificationException в библиотеке выбора RecyclerView, когда набор данных изменился с удалением выделения
- PreferenceThemeOverlay обновлен до последней темы материала. Если пользовательская тема не указана, PreferenceThemeOverlay используется в качестве темы по умолчанию.
- Темы PreferenceThemeOverlay.v14 и PreferenceThemeOverlay.v14.Material устарели в пользу PreferenceThemeOverlay.
- Видимость PreferenceGroup теперь привязана к ее дочерним группам: скрытие родительской группы также не позволит ее дочерним элементам отображаться в иерархии. Используйте Preference.isShown(), чтобы узнать, действительно ли предпочтение отображается пользователю в иерархии.
- Preference.onSetInitialValue(boolean, Object) устарел и заменен на onSetInitialValue(Object). PreferenceDataStore теперь также корректно восстанавливает значения по умолчанию.
Версия 28.0.0 Бета 1
(июль 2018 г.)
Эта бета-версия библиотеки поддержки считается полнофункциональной, а ее общедоступная поверхность API стабильна, исключая любые критические проблемы, которые могут возникнуть. Хотя этот выпуск безопасен для использования в производстве, он все равно может содержать ошибки. Пожалуйста, сообщайте о любых проблемах в общедоступную систему отслеживания проблем .
Исправлены проблемы
- GestureSelectionHelper принимает события для невыбираемых элементов
- Срезы ползунка могут иметь дублирующийся значок большого пальца при обновлении значения ползунка.
- IconCompat сломал значки TYPE_URI
- Сбой с настройками при использовании панели поиска
- Сбой в Slice.toString()
- OffsettingListUpdateCallback.onMoved() вызывает mCallback.onRemoved() вместо mCallback.onMoved() (ошибка 110711937 ).
Версия 27.1.1
(апрель 2018 г.)
Исправлены проблемы
- AsyncListDiffer не вызывает getChangePayload (проблема AOSP 73961809 )
- OnCleared фрагмента ViewModel не вызывается (проблема AOSP 74139250 )
- RecyclerView.setRecycledViewPool() увеличивает AttachCount, даже если адаптер имеет значение null
- RecyclerView NPE, если SmoothScroller.onStop вызывает stop() или startSmoothScroller()
- Транзакция замены фрагмента приводит к мерцанию предыдущего фрагмента после отображения нового фрагмента (проблема AOSP 74051124 )
- Критическое изменение обратного вызова загрузчика в версии 27.1.0 (проблема AOSP 74135998 )
- Макет RTL не работает, если столбец набора вертикальной сетки> 1
- onLoadFinished вызывается несколько раз в ViewPager с помощью FragmentPagerAdapter
- AsyncListDiffer должен отправлять обновления после установки текущего списка (проблема AOSP 74003309 ).
- ShareActionProvider выдает ClassCastException в 27.1.0
- Изменение жизненного цикла фрагмента с помощью ViewPager (проблема AOSP 73976255 )
Версия 28.0.0 Альфа 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)
- коллекции (из support-compat)
- координатор макета (из дизайна)
- курсорадаптер (из support-core-ui)
- customview (из support-core-ui)
- файл документа (из support-core-utils)
- расположение ящиков (из support-core-ui)
- интерполятор (из support-core-ui)
- загрузчик (из фрагментов поддержки и основных утилит)
- localbroadcastmanager (из support-core-utils)
- печать (из support-core-utils)
- скользящая панель (из support-core-ui)
- swiperefreshlayout (из support-core-ui)
- viewpager (из support-core-ui)
Новые API
-
recyclerview-selection
обеспечивает поддержку выбора элементов дляRecyclerView
. Пакет обеспечивает:- Поддержка создания, изменения, проверки и мониторинга изменений набора выбранных элементов в списке RecyclerView.
- Поддержка интуитивно понятных действий с множественным выбором:
- Сенсорный выбор позволяет пользователям выбирать диапазоны элементов с помощью интуитивно понятного длительного нажатия и перетаскивания.
- Выбор полосы с помощью мыши позволяет пользователям выбирать блок элементов в списке RecyclerView, используя традиционные действия с полосой указателя мыши или лассо.
- Поддержка сенсорных устройств, включая форм-факторы телефонов и ноутбуков с сенсорным экраном, а также устройств, ориентированных на указатель.
- HEIF Writer обеспечивает поддержку записи неподвижных изображений в формате HEIF.
- Библиотека дизайна
- Мы представили новую тему приложения
Theme.MaterialComponents
с новыми атрибутами и обновленными стилями для компонентов. - Мы добавили следующие компоненты:
- Нижняя панель приложений
- Чип
- ЧипГруппа
- МатериалКнопка
- МатериалКартаView
- Мы представили новую тему приложения
- Slices предоставляет приложениям платформу для встраивания шаблонного контента из других приложений.
- срезы-построители содержат методы для создания контента в формате шаблона.
- слайсы-представление содержат методы для представления этого контента.
- Действия браузера предоставляют разработчикам приложений протокол для запуска согласованного (но настраиваемого) контекстного меню для URL-адресов. Эта функция зависит от наличия браузерного приложения (например, Chrome, где эта функция все еще находится в стадии разработки), которое реализует поддержку действий браузера.
-
ContextCompat.getSystemService()
иgetSystemServiceName()
позволяют выполнять поиск системных служб по типу на всех уровнях API.
Исправления ошибок
- OnCleared фрагмента ViewModel не вызывается (проблема AOSP 74139250 )
- onLoadFinished() вызывается несколько раз в ViewPager с помощью FragmentPagerAdapter (проблема AOSP 74182171 )
- Функция SmoothScrollToPosition() LinearLayoutManager RecyclerView отображает беспорядочное движение (вперед и назад) при определенных обстоятельствах (проблема AOSP 71567765 ).
Выпуск версии 27.1.0
(февраль 2018 г.)
Важные изменения
- Базовая реализация Loaders была переписана для использования Lifecycle . Хотя API остался неизменным, есть ряд изменений в поведении:
-
initLoader()
,restartLoader()
иdestroyLoader()
теперь можно вызывать только в основном потоке. -
onStartLoading()
иonStopLoading()
загрузчика теперь вызываются, когда содержащий FragmentActivity/Fragment запускается и останавливается соответственно. -
onLoadFinished()
будет вызываться только междуonStart()
иonStop
. В результате транзакции Fragment теперь можно безопасно выполнять вonLoadFinished()
. - Методы FragmentController, связанные с загрузчиками, теперь устарели.
-
-
getDialog()
в DialogFragment теперь будет ненулевым вплоть доonDestroyView()
, а не станет нулевым вdismiss()
. Теперь вы можете определить, был ли диалог закрыт вручную вonStop()
проверив, возвращает лиgetDialog().isShowing()
false.
Новые API
-
ListAdapter
дляRecyclerView
(вместе сAsyncListDiffer
) упрощает вычисление различий в списках в фоновом потоке. Это может помочь вашему RecyclerView автоматически анимировать изменения содержимого с минимальной работой в потоке пользовательского интерфейса. Они используютDiffUtil
под капотом. -
SortedList.ReplaceAll
позволяет обновлять все данные в SortedList, который запускает все соответствующие анимации для вставок, удалений, изменений и перемещений (перемещения рассматриваются как удаления и вставки). - FragmentActivity и Fragment теперь реализуют
ViewModelStoreOwner
и теперь могут использоваться с конструкторамиViewModelProvider
в качестве альтернативы использованиюViewModelProviders.of()
- Фрагменты теперь имеют
requireContext()
,requireActivity()
,requireHost()
иrequireFragmentManager()
, которые возвращают объектNonNull
из эквивалентных методов get или вызывают исключениеIllegalStateException
. -
requireViewById()
, версияfindViewById()
совместимая с@NonNull
, была добавлена вWindowCompat
,ActivityCompat
иViewCompat
, которые выдают исключениеIllegalArgumentException
, когда цель не может быть найдена. - Методы
LoaderCallbacks
теперь имеют соответствующие аннотации@Nullable
и@NonNull
. -
FileProvider
теперь поддерживаетgetExternalMediaDirs()
на устройствах API 21 и более поздних версий через новый элемент<external-media-path>
.
Исправления ошибок
- Фрагмент, который инициализирует загрузчик в onCreate, нарушил жизненный цикл внутри ViewPager.
- LoaderManager выдает исключение IllegalStateException в onLoadFinished
- LoaderViewModel не очищает свои загрузчики в onCleared
- Файл класса для android.arch.lifecycle.ViewModelStoreOwner не найден
- DialogFragment onDismiss не вызывается сразу после увольнения()
- Эмодзи с флагом страны не работают на устройствах с ключами выпуска при использовании загружаемых шрифтов.
- Библиотека настроек использует атрибуты, которые не будут работать в старых версиях Android.
- Типы артефактов testlib MediaCompat неправильно документированы (проблема AOSP 71559905 ).
- Сбой Google Sans в TypefaceCompatUtil
- Предоставьте конструктор ArraySet, который принимает Collection.
- updateApi удаляет файлы .ignore, которые следует сохранить.
- избыточные MainFragments, созданные в BrowseFragment
- Удалить использование отражения из CarRecyclerView.
- java.lang.IllegalStateException в FragmentManagerImpl.checkStateLoss
- Получил (недокументированное) java.lang.SecurityException при использовании 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
- Аннотации об отсутствии значений были добавлены к различным API, включая следующие: Это может привести к ошибкам компиляции Kotlin, если типы возвращаемых значений, допускающие значение NULL, не обрабатываются должным образом.
-
Fragment
может использовать версии библиотеки поддержкиTransition
для переходов фрагментов, включая переходы с общими элементами. - Библиотека подкачки контента (
android.support.content.ContentPager
) обеспечивает поддержку подкачки содержимого, предоставляемого черезContentProvider
. Использование этой библиотеки позволяет клиенту избежать дорогостоящих межпроцессных «перестановок окон курсора» в потоке пользовательского интерфейса, предоставляя библиотеку совместимости для функции 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, который также делает поддержку окружающего режима совместимой с использованием компонентов архитектуры.
- Команда Wear ищет отзывы разработчиков об этом значительном изменении. Дополнительную информацию см. в примечаниях к выпуску Android Wear .
- Некоторые устаревшие классы удалены по мере того, как мы отходим от старых API-интерфейсов до версии V14, таких как
android.support.v7.NotificationCompat
(вместо этого используйтеNotificationCompat
v4),KeyEventCompat
,ParallelExecutorCompat
иSearchViewCompat
. - Все перенесенные константы метаданных манифеста износа теперь доступны через
android.support.wear.utils.MetadataConstants
. - Поддержка режима Ambient теперь доступна для всех действий, а не только для WearableActivity. Дополнительные сведения см. в справочнике
AmbientMode
. -
RoundedDrawable
теперь поддерживает инфляцию XML.
Исправления ошибок
- Приложение вылетает из-за библиотеки поддержки 27 и загружаемого шрифта.
- Загружаемые шрифты не работают в новых проектах, созданных после обновления SDK.
- API SpeechRecouncer API не работает в последнем обновлении
- Сбой, связанный с фрагментом, во время отрисовки после удаления анимированного представления.
- поддержка-leanback-демо воспроизведение мультимедиа не работает
- Библиотека поддержки Android добавляет <метаданные> в манифест
- FontResourcesParserCompat должен понимать Android: attrs
- 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. Дополнительные сведения см. в примечаниях к выпуску компонентов архитектуры .
Важные изменения
-
Fragment
иFragmentActivity
(базовый класс дляAppCompatActivity
) теперь реализуют интерфейсLifecycleOwner
из Architecture Components .
Выпуск версии 26.0.2
(август 2017 г.)
Исправления ошибок
- Значки меню в библиотеке поддержки 26.0.0 сведены к минимуму.
-
GuidedAction.multilineDescription
не работает должным образом с Leanback.
Выпуск версии 26.0.1
(август 2017 г.)
Исправления ошибок
- FontCompat 26.0.0 аварийно завершает работу на устройствах O-MR1
- Библиотека поддержки дизайна версии 26.0.0 не должна включать поддержку мультидекса (проблема 63999442 ))
- AppBarLayout теперь имеет 300 пикселей левого заполнения с версии 26.0.0.
- Навигация PlaybackTransportControl не работает.
- Fragment.onCreateView вызывается незадолго до завершения onCreate.
- android.os.BadParcelableException: ClassNotFoundException при демаршаллинге: android.support.v4.media.MediaMetadataCompat
Выпуск версии 26.0.0
(июль 2017 г.)
Важно! Библиотеки поддержки теперь доступны в репозитории Google Maven. Вам не нужно загружать репозиторий поддержки из SDK Manager. Дополнительные сведения см. в разделе Настройка библиотеки поддержки .
Важные изменения
- Минимальная версия SDK была увеличена до 14. В результате многие API, существовавшие только для совместимости с уровнями API до 14, были признаны устаревшими. Клиентам этих API следует перейти на эквиваленты их платформы, как указано на справочной странице для каждого устаревшего API.
- Библиотека пользовательского интерфейса Wear содержит классы, которые помогут вам реализовать шаблоны и макеты, работающие на устройствах Wear. Дополнительные сведения см. в разделе Использование библиотеки пользовательского интерфейса Wear .
- Модуль процентной поддержки устарел. Клиентам этого модуля следует перейти на новый виджет
ConstraintLayout
, который предоставляется как отдельный артефакт в SDK Manager. -
android.support.v7.app.NotificationCompat
и содержащиеся в нем классы устарели и будут удалены в будущем выпуске:- Используйте
NotificationCompat.Builder
вместоv7.app.NotificationCompat.Builder
. Функциональность, которая раньше основывалась на использовании AppCompat Builder версии 7, теперь включена в Compat Builder версии 4. -
DecoratedCustomViewStyle
перемещен в пакетandroid.support.v4.app
. -
MediaStyle
иDecoratedMediaCustomViewStyle
теперь являются частью библиотеки медиа-совместимости и их можно найти в пакете android.support.v4.media.app .
- Используйте
Новые API
- Новый логический флаг
fastScrollEnabled
дляRecyclerView
. Если этот параметр включен, необходимо установитьfastScrollHorizontalThumbDrawable
,fastScrollHorizontalTrackDrawable
,fastScrollVerticalThumbDrawable
иfastScrollVerticalTrackDrawable
.
Различия API
Исправления ошибок
- Бесконечный цикл в RecyclerView.toString()
- ResourceNotFoundException запускает проект Kotlin на API 16 AVD после обновления до Canary 6
- java.lang.AssertionError в режиме дизайна с библиотекой поддержки 26.0.0-beta2
- Предварительный просмотр макета Android Studio не работает для виджетов библиотеки поддержки
- Preference.setSingleLineTitle() игнорируется, если предпочтение не было создано с атрибутами.
- Аннотации DAC "Since" неверны для версий 25.3.0/25.4.0 библиотеки поддержки.
- ResourcesCompat.getFont() выдает исключение
- Название панели инструментов не выделено жирным шрифтом
- Автоматическое определение размера с помощью maxLines дает неожиданные результаты
- NullPointerException в TextView.checkForRelayout()
- AppCompatTextViewAutoSizeHelper.setRawTextSize() вызывает requestLayout() во время макета
- Сбой EmojiAppCompatTextView
- Autosize TextView не регулируется автоматически при изменении текста
- Повреждение экрана в Instacart
- Исключение UnsupportedOperationException в MenuItemCompat
- NotificationCompat не полностью извлекает действия в API 24 или выше.
- Проблемы привязки координатораLayout при обновлениях макета
На этой странице представлены сведения о последних выпусках пакетов библиотеки поддержки. Более ранние выпуски см. в архиве версий библиотеки поддержки .
Версия 28.0.0 Производство
(21 сентября 2018 г.)
Это стабильная версия библиотеки поддержки 28.0.0, пригодная для использования в производстве. Это будет последний выпуск функции в пакете android.support
, и разработчикам рекомендуется перейти на AndroidX .
Новые возможности
-
AnimatedStateListDrawableCompat
обеспечивает анимированные переходы между состояниями рисования. -
VectorDrawableCompat
получает поддержку заливок и обводок градиентом иColorStateList
.
Версия 28.0.0 RC 2
(27 августа 2018 г.)
Этот кандидат на выпуск библиотеки поддержки считается полнофункциональным, а его общедоступная поверхность API стабильна. Этот выпуск будет поставляться как окончательная стабильная версия, исключающая любые критические проблемы, которые могут возникнуть. Этот выпуск должен быть безопасным для использования в производстве. Пожалуйста, сообщайте о любых проблемах в общедоступную систему отслеживания проблем .
Исправлены проблемы
- Proguard удаляет конструктор приложения модели представления (общедоступная проблема 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 Search при рендеринге статического фрагмента
- ConcurrentModificationException в библиотеке выбора RecyclerView, когда набор данных изменился с удалением выделения
- PreferenceThemeOverlay обновлен до последней темы материала. Если пользовательская тема не указана, PreferenceThemeOverlay используется в качестве темы по умолчанию.
- Темы PreferenceThemeOverlay.v14 и PreferenceThemeOverlay.v14.Material устарели в пользу PreferenceThemeOverlay.
- Видимость PreferenceGroup теперь привязана к ее дочерним группам: скрытие родительской группы также не позволит ее дочерним элементам отображаться в иерархии. Используйте Preference.isShown(), чтобы узнать, действительно ли предпочтение отображается пользователю в иерархии.
- Preference.onSetInitialValue(boolean, Object) устарел и заменен на onSetInitialValue(Object). PreferenceDataStore теперь также корректно восстанавливает значения по умолчанию.
Версия 28.0.0 Бета 1
(июль 2018 г.)
Эта бета-версия библиотеки поддержки считается полнофункциональной, а ее общедоступная поверхность API стабильна, исключая любые критические проблемы, которые могут возникнуть. Хотя этот выпуск безопасен для использования в производстве, он все равно может содержать ошибки. Пожалуйста, сообщайте о любых проблемах в общедоступную систему отслеживания проблем .
Исправлены проблемы
- GestureSelectionHelper принимает события для невыбираемых элементов
- Срезы ползунка могут иметь дублирующийся значок большого пальца при обновлении значения ползунка.
- IconCompat сломал значки TYPE_URI
- Сбой с настройками при использовании панели поиска
- Сбой в Slice.toString()
- OffsettingListUpdateCallback.onMoved() вызывает mCallback.onRemoved() вместо mCallback.onMoved() (ошибка 110711937 ).
Версия 27.1.1
(апрель 2018 г.)
Исправлены проблемы
- AsyncListDiffer не вызывает getChangePayload (проблема AOSP 73961809 )
- OnCleared фрагмента ViewModel не вызывается (проблема AOSP 74139250 )
- RecyclerView.setRecycledViewPool() увеличивает AttachCount, даже если адаптер имеет значение null
- RecyclerView NPE, если SmoothScroller.onStop вызывает stop() или startSmoothScroller()
- Транзакция замены фрагмента приводит к мерцанию предыдущего фрагмента после отображения нового фрагмента (проблема AOSP 74051124 )
- Критическое изменение обратного вызова загрузчика в версии 27.1.0 (проблема AOSP 74135998 )
- Макет RTL не работает, если столбец набора вертикальной сетки> 1
- onLoadFinished вызывается несколько раз в ViewPager с помощью FragmentPagerAdapter
- AsyncListDiffer должен отправлять обновления после установки текущего списка (проблема AOSP 74003309 ).
- ShareActionProvider выдает ClassCastException в 27.1.0
- Изменение жизненного цикла фрагмента с помощью ViewPager (проблема AOSP 73976255 )
Версия 28.0.0 Альфа 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)
- коллекции (из support-compat)
- координатор макета (из дизайна)
- курсорадаптер (из support-core-ui)
- customview (из support-core-ui)
- файл документа (из support-core-utils)
- расположение ящиков (из support-core-ui)
- интерполятор (из support-core-ui)
- загрузчик (из фрагментов поддержки и основных утилит)
- localbroadcastmanager (из support-core-utils)
- печать (из support-core-utils)
- скользящая панель (из support-core-ui)
- swiperefreshlayout (из support-core-ui)
- viewpager (из support-core-ui)
Новые API
-
recyclerview-selection
обеспечивает поддержку выбора элементов дляRecyclerView
. Пакет обеспечивает:- Поддержка создания, изменения, проверки и мониторинга изменений набора выбранных элементов в списке RecyclerView.
- Поддержка интуитивно понятных действий с множественным выбором:
- Сенсорный выбор позволяет пользователям выбирать диапазоны элементов с помощью интуитивно понятного длительного нажатия и перетаскивания.
- Выбор полосы с помощью мыши позволяет пользователям выбирать блок элементов в списке RecyclerView, используя традиционные действия с полосой указателя мыши или лассо.
- Поддержка сенсорных устройств, включая форм-факторы телефонов и ноутбуков с сенсорным экраном, а также устройств, ориентированных на указатель.
- HEIF Writer обеспечивает поддержку записи неподвижных изображений в формате HEIF.
- Библиотека дизайна
- Мы представили новую тему приложения
Theme.MaterialComponents
с новыми атрибутами и обновленными стилями для компонентов. - Мы добавили следующие компоненты:
- Нижняя панель приложений
- Чип
- ЧипГруппа
- МатериалКнопка
- МатериалКартаView
- Мы представили новую тему приложения
- Slices предоставляет приложениям платформу для встраивания шаблонного контента из других приложений.
- срезы-построители содержат методы для создания контента в формате шаблона.
- слайсы-представление содержат методы для представления этого контента.
- Действия браузера предоставляют разработчикам приложений протокол для запуска согласованного (но настраиваемого) контекстного меню для URL-адресов. Эта функция зависит от наличия браузерного приложения (например, Chrome, где эта функция все еще находится в стадии разработки), которое реализует поддержку действий браузера.
-
ContextCompat.getSystemService()
иgetSystemServiceName()
позволяют выполнять поиск системных служб по типу на всех уровнях API.
Исправления ошибок
- OnCleared фрагмента ViewModel не вызывается (проблема AOSP 74139250 )
- onLoadFinished() вызывается несколько раз в ViewPager с помощью FragmentPagerAdapter (проблема AOSP 74182171 )
- Функция SmoothScrollToPosition() LinearLayoutManager RecyclerView отображает беспорядочное движение (вперед и назад) при определенных обстоятельствах (проблема AOSP 71567765 ).
Выпуск версии 27.1.0
(февраль 2018 г.)
Важные изменения
- Базовая реализация Loaders была переписана для использования Lifecycle . Хотя API остался неизменным, есть ряд изменений в поведении:
-
initLoader()
,restartLoader()
иdestroyLoader()
теперь можно вызывать только в основном потоке. -
onStartLoading()
иonStopLoading()
загрузчика теперь вызываются, когда содержащий FragmentActivity/Fragment запускается и останавливается соответственно. -
onLoadFinished()
будет вызываться только междуonStart()
иonStop
. В результате транзакции Fragment теперь можно безопасно выполнять вonLoadFinished()
. - Методы FragmentController, связанные с загрузчиками, теперь устарели.
-
-
getDialog()
в DialogFragment теперь будет ненулевым вплоть доonDestroyView()
, а не станет нулевым вdismiss()
. Теперь вы можете определить, был ли диалог закрыт вручную вonStop()
проверив, возвращает лиgetDialog().isShowing()
false.
Новые API
-
ListAdapter
дляRecyclerView
(вместе сAsyncListDiffer
) упрощает вычисление различий в списках в фоновом потоке. Это может помочь вашему RecyclerView автоматически анимировать изменения содержимого с минимальной работой в потоке пользовательского интерфейса. Они используютDiffUtil
под капотом. -
SortedList.ReplaceAll
позволяет обновлять все данные в SortedList, который запускает все соответствующие анимации для вставок, удалений, изменений и перемещений (перемещения рассматриваются как удаления и вставки). - FragmentActivity и Fragment теперь реализуют
ViewModelStoreOwner
и теперь могут использоваться с конструкторамиViewModelProvider
в качестве альтернативы использованиюViewModelProviders.of()
- Фрагменты теперь имеют
requireContext()
,requireActivity()
,requireHost()
иrequireFragmentManager()
, которые возвращают объектNonNull
из эквивалентных методов get или вызывают исключениеIllegalStateException
. -
requireViewById()
, версияfindViewById()
совместимая с@NonNull
, была добавлена вWindowCompat
,ActivityCompat
иViewCompat
, которые выдают исключениеIllegalArgumentException
, когда цель не может быть найдена. - Методы
LoaderCallbacks
теперь имеют соответствующие аннотации@Nullable
и@NonNull
. -
FileProvider
теперь поддерживаетgetExternalMediaDirs()
на устройствах API 21 и более поздних версий через новый элемент<external-media-path>
.
Исправления ошибок
- Фрагмент, который инициализирует загрузчик в onCreate, нарушил жизненный цикл внутри ViewPager.
- LoaderManager выдает исключение IllegalStateException в onLoadFinished
- LoaderViewModel не очищает свои загрузчики в onCleared
- Файл класса для android.arch.lifecycle.ViewModelStoreOwner не найден
- DialogFragment onDismiss не вызывается сразу после увольнения()
- Эмодзи с флагом страны не работают на устройствах с ключами выпуска при использовании загружаемых шрифтов.
- Библиотека настроек использует атрибуты, которые не будут работать в старых версиях Android.
- Типы артефактов testlib MediaCompat неправильно документированы (проблема AOSP 71559905 ).
- Сбой Google Sans в TypefaceCompatUtil
- Предоставьте конструктор ArraySet, который принимает Collection.
- updateApi удаляет файлы .ignore, которые следует сохранить.
- избыточные MainFragments, созданные в BrowseFragment
- Удалить использование отражения из CarRecyclerView.
- java.lang.IllegalStateException в FragmentManagerImpl.checkStateLoss
- Получил (недокументированное) java.lang.SecurityException при использовании 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
- Аннотации об отсутствии значений были добавлены к различным API, включая следующие: Это может привести к ошибкам компиляции Kotlin, если типы возвращаемых значений, допускающие значение NULL, не обрабатываются должным образом.
-
Fragment
может использовать версии библиотеки поддержкиTransition
для переходов фрагментов, включая переходы с общими элементами. - Библиотека подкачки контента (
android.support.content.ContentPager
) обеспечивает поддержку подкачки содержимого, предоставляемого черезContentProvider
. Использование этой библиотеки позволяет клиенту избежать дорогостоящих межпроцессных «перестановок окон курсора» в потоке пользовательского интерфейса, предоставляя библиотеку совместимости для функции 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, который также делает поддержку окружающего режима совместимой с использованием компонентов архитектуры.
- Команда Wear ищет отзывы разработчиков об этом значительном изменении. Дополнительную информацию см. в примечаниях к выпуску Android Wear .
- Некоторые устаревшие классы удалены по мере того, как мы отходим от старых API-интерфейсов до версии V14, таких как
android.support.v7.NotificationCompat
(вместо этого используйтеNotificationCompat
v4),KeyEventCompat
,ParallelExecutorCompat
иSearchViewCompat
. - Все перенесенные константы метаданных манифеста износа теперь доступны через
android.support.wear.utils.MetadataConstants
. - Поддержка режима Ambient теперь доступна для всех действий, а не только для WearableActivity. Дополнительные сведения см. в справочнике
AmbientMode
. -
RoundedDrawable
теперь поддерживает инфляцию XML.
Исправления ошибок
- Приложение вылетает из-за библиотеки поддержки 27 и загружаемого шрифта.
- Загружаемые шрифты не работают в новых проектах, созданных после обновления SDK.
- API SpeechRecouncer API не работает в последнем обновлении
- Сбой, связанный с фрагментом, во время отрисовки после удаления анимированного представления.
- поддержка-leanback-демо воспроизведение мультимедиа не работает
- Библиотека поддержки Android добавляет <метаданные> в манифест
- FontResourcesParserCompat должен понимать Android: attrs
- 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. Дополнительные сведения см. в примечаниях к выпуску компонентов архитектуры .
Важные изменения
-
Fragment
иFragmentActivity
(базовый класс дляAppCompatActivity
) теперь реализуют интерфейсLifecycleOwner
из Architecture Components .
Выпуск версии 26.0.2
(август 2017 г.)
Исправления ошибок
- Значки меню в библиотеке поддержки 26.0.0 сведены к минимуму.
-
GuidedAction.multilineDescription
не работает должным образом с Leanback.
Выпуск версии 26.0.1
(август 2017 г.)
Исправления ошибок
- FontCompat 26.0.0 аварийно завершает работу на устройствах O-MR1
- Библиотека поддержки дизайна версии 26.0.0 не должна включать поддержку мультидекса (проблема 63999442 ))
- AppBarLayout теперь имеет 300 пикселей левого заполнения с версии 26.0.0.
- Навигация PlaybackTransportControl не работает.
- Fragment.onCreateView вызывается незадолго до завершения onCreate.
- android.os.BadParcelableException: ClassNotFoundException при демаршаллинге: android.support.v4.media.MediaMetadataCompat
Выпуск версии 26.0.0
(июль 2017 г.)
Важно! Библиотеки поддержки теперь доступны в репозитории Google Maven. Вам не нужно загружать репозиторий поддержки из SDK Manager. Дополнительные сведения см. в разделе Настройка библиотеки поддержки .
Важные изменения
- Минимальная версия SDK была увеличена до 14. В результате многие API, существовавшие только для совместимости с уровнями API до 14, были признаны устаревшими. Клиентам этих API следует перейти на эквиваленты их платформы, как указано на справочной странице для каждого устаревшего API.
- Библиотека пользовательского интерфейса Wear содержит классы, которые помогут вам реализовать шаблоны и макеты, работающие на устройствах Wear. Дополнительные сведения см. в разделе Использование библиотеки пользовательского интерфейса Wear .
- Модуль процентной поддержки устарел. Клиентам этого модуля следует перейти на новый виджет
ConstraintLayout
, который предоставляется как отдельный артефакт в SDK Manager. -
android.support.v7.app.NotificationCompat
и содержащиеся в нем классы устарели и будут удалены в будущем выпуске:- Используйте
NotificationCompat.Builder
вместоv7.app.NotificationCompat.Builder
. Функциональность, которая раньше основывалась на использовании AppCompat Builder версии 7, теперь включена в Compat Builder версии 4. -
DecoratedCustomViewStyle
перемещен в пакетandroid.support.v4.app
. -
MediaStyle
иDecoratedMediaCustomViewStyle
теперь являются частью библиотеки медиа-совместимости и их можно найти в пакете android.support.v4.media.app .
- Используйте
Новые API
- Новый логический флаг
fastScrollEnabled
дляRecyclerView
. Если этот параметр включен, необходимо установитьfastScrollHorizontalThumbDrawable
,fastScrollHorizontalTrackDrawable
,fastScrollVerticalThumbDrawable
иfastScrollVerticalTrackDrawable
.
Различия API
Исправления ошибок
- Бесконечный цикл в RecyclerView.toString()
- ResourceNotFoundException запускает проект Kotlin на API 16 AVD после обновления до Canary 6
- java.lang.AssertionError в режиме дизайна с библиотекой поддержки 26.0.0-beta2
- Предварительный просмотр макета Android Studio не работает для виджетов библиотеки поддержки
- Preference.setSingleLineTitle() игнорируется, если предпочтение не было создано с атрибутами.
- Аннотации DAC "Since" неверны для версий 25.3.0/25.4.0 библиотеки поддержки.
- ResourcesCompat.getFont() выдает исключение
- Название панели инструментов не выделено жирным шрифтом
- Автоматическое определение размера с помощью maxLines дает неожиданные результаты
- NullPointerException в TextView.checkForRelayout()
- AppCompatTextViewAutoSizeHelper.setRawTextSize() вызывает requestLayout() во время макета
- Сбой EmojiAppCompatTextView
- Autosize TextView не регулируется автоматически при изменении текста
- Повреждение экрана в Instacart
- Исключение UnsupportedOperationException в MenuItemCompat
- NotificationCompat не полностью извлекает действия в API 24 или выше.
- Проблемы привязки координатораLayout при обновлениях макета