支持库的最新修订版本

本页详细介绍了最新的支持库软件包版本。如需了解早期版本,请参阅 支持库修订版本归档

修订版 28.0.0 正式版

(2018 年 9 月 21 日)

这是支持库 28.0.0 的稳定版,适合在生产环境中使用。这将是 android.support 打包下的最后一个功能版本,我们建议开发者迁移到 AndroidX

新功能

  • AnimatedStateListDrawableCompat 可提供可绘制对象状态之间的动画转换。
  • VectorDrawableCompat 获得了对渐变以及 ColorStateList 填充和描边的支持。

修订版 28.0.0 RC 2

(2018 年 8 月 27 日)

此支持库的候选版本被视为功能完备,并且其公共 API Surface 也稳定。除非出现任何严重问题,否则此版本将作为最终稳定版推出。此版本应可在生产环境中放心使用。如有任何问题,请向公开问题跟踪器报告。

修复的问题

  • Proguard 移除了视图模型应用构造函数(公开问题 112230489
  • 修复了 `AnimatedStateListDrawableCompat` 常量状态
  • 从 mediarouter 1.0.0 中移除了 media2 依赖项
  • 点击主屏幕按钮时,“Fragment.getViewLifecycleOwner()”不会停止(公开问题 113070421)([公开问题 113070421](https://issuetracker.google.com/issues/113070421))

修订版 28.0.0 RC 1

(2018 年 8 月 6 日)

此支持库的候选版本被视为功能完备,并且其公共 API Surface 也稳定。除非出现任何严重问题,否则此版本将作为最终稳定版推出。此版本应可在生产环境中放心使用。如有任何问题,请向公开问题跟踪器报告。

注意:某些库(如 media2)仍处于 Alpha 版阶段,因为其 API Surface 尚未最终确定。我们不建议在生产环境中使用 Alpha 版库。库应严格避免在生产环境中依赖于 Alpha 版库,因为其 API Surface 可能会以与源代码和二进制文件不兼容的方式发生变化。

修复的问题

  • BottomNavigationView 菜单未在 Design 支持库中正确初始化
  • PositionalDataSource 无法正确处理向数据库中插入前置项的操作
  • 滑块卡顿且无响应
  • `SlicesProviderCompat.getPinnedSpecs()` 不会将用户 ID 添加到 URI
  • RoutePlayer2:远程播放不会切换回本地播放
  • 缓存的切片解析在执行操作时崩溃
  • Google 搜索应用在渲染静态切片时崩溃
  • 当数据集随着移除选择而发生更改时 RecyclerView 选择库中出现 ConcurrentModificationException
  • PreferenceThemeOverlay 已更新为最新的素材主题背景。如果未提供自定义主题,则会将 PreferenceThemeOverlay 用作默认主题。
  • PreferenceThemeOverlay.v14 和 PreferenceThemeOverlay.v14.Material 主题背景已废弃,取而代之的是 PreferenceThemeOverlay。
  • PreferenceGroup 可见性现在与其子级相关联 - 如果隐藏父组,也会阻止其子级显示在层次结构中。使用 Preference.isShown() 可了解是否在层次结构中向用户实际显示了某项偏好设置。
  • Preference.onSetInitialValue(boolean, Object) 已弃用,取而代之的是 onSetInitialValue(Object)。PreferenceDataStore 现在也可以正确恢复默认值。

修订版 28.0.0 Beta 版 1

(2018 年 7 月)

除非出现任何严重问题,否则此支持库 Beta 版被视为功能完备,并且其公共 API Surface 也稳定。虽然此版本可在生产环境中放心使用,但可能仍会存在 bug。 如有任何问题,请向公开问题跟踪器报告。

修复的问题

  • 不可选项上的 GestureSelectionHelper 吞食事件
  • 更新滑块值时,滑块切片可能具有重复的拇指图标
  • IconCompat 破坏了 TYPE_URI 图标
  • 使用拖动条的偏好设置发生崩溃
  • Slice.toString() 中发生崩溃
  • OffsettingListUpdateCallback.onMoved() 会调用 mCallback.onRemoved() 而不是 mCallback.onMoved()(问题 110711937

修订版 27.1.1

(2018 年 4 月)

修复的问题

  • AsyncListDiffer 不调用 getChangePayload(AOSP 问题 73961809
  • 未调用 Fragment ViewModel 的 onCleared(AOSP 问题 74139250
  • 即使适配器为 null,RecyclerView.setRecycledViewPool() 也会增加 attachmentsCount
  • SmoothScroller.onStop 调用 stop() 或 startSmoothScroller() 时会出现 RecyclerView NPE
  • fragment 替换事务会导致在显示新的 fragment 后,之前的 fragment 闪烁(AOSP 问题 74051124
  • 27.1.0 中的加载器回调重大变更(AOSP 问题 74135998
  • 当垂直网格视图的列 >1 时,RTL 布局不起作用
  • 在 ViewPager 中使用 FragmentPagerAdapter 多次调用 onLoadFinished
  • AsyncListDiffer 应该在设置当前列表后调度更新(AOSP 问题 74003309
  • ShareActionProvider 在 27.1.0 中抛出 ClassCastException
  • Fragment 生命周期随 ViewPager 的变化(AOSP 问题 73976255

修订版 28.0.0 Alpha 版 1

(2018 年 3 月)

注意:28.0.0-alpha1 是一个预发布版本,支持 Android P 开发者预览版。其 API Surface 可能会发生更改,且不一定包含最新稳定版支持库中的功能或 bug 修复。

重要变更

  • 如之前在 Android KTX 公告中所述,我们将继续在所有库中采用 androidx 软件包前缀。这个新软件包将开始提供一系列全新的库,包括 heifwriterrecyclerview-selection。我们希望 android.*androidx.* 之间的区别更明确,哪些 API 与平台捆绑在一起,以及哪些 API 是适用于不同 Android 版本的应用开发者的静态库。
  • 我们已将 support-core-ui、support-core-utils 和 support-compat 的部分拆分为更小的库。此更改将帮助我们将来摆脱对支持库的依赖。现在,我们有了以下新库:
    • asynclayoutinflater(来自 support-core-ui)
    • collections(来自 support-compat)
    • coordinatorlayout(来自 design)
    • cursoradapter(来自 support-core-ui)
    • customview(来自 support-core-ui)
    • documentfile(来自 support-core-utils)
    • drawerlayout(来自 support-core-ui)
    • interpolator(来自 support-core-ui)
    • loader(来自 support-fragment 和 core-utils)
    • localbroadcastmanager(来自 support-core-utils)
    • print(来自 support-core-utils)
    • slidingpanelayout(来自 support-core-ui)
    • swiperefreshlayout(来自 support-core-ui)
    • viewpager(来自 support-core-ui)

新增 API

  • recyclerview-selectionRecyclerView 提供内容选择支持。该软件包提供以下功能:
    • 支持创建、修改、检查和监控对 RecyclerView 列表中一组选定项的更改。
    • 支持直观的多选操作:
      • 触摸驱动的选择可让用户通过直观的长按并拖动手势选择一系列项。
      • 鼠标驱动的频带选择可让用户使用传统的鼠标指针频段/套索操作选择 RecyclerView 列表中的项块。
    • 支持以触摸为中心的设备,包括手机和支持触摸的笔记本电脑,以及以指针为中心的设备。
  • HEIF Writer 提供对编写 HEIF 格式静态图片的支持。
  • Design 库
    • 我们推出了一个新的应用主题 Theme.MaterialComponents,它为组件提供了新的属性和样式。
    • 我们添加了以下组件:
      • BottomAppBar
      • Chip
      • ChipGroup
      • MaterialButton
      • MaterialCardView
  • Slice 为应用提供了一个框架,用于嵌入来自其他应用的模板化内容。
    • slices-builders 包含以模板格式构建内容的方法。
    • slices-view 包含呈现相应内容的方法。
  • 浏览器操作为应用开发者提供了一种协议,可让应用开发者为网址启动一致(但可以自定义)的上下文菜单。此功能取决于是否存在实现了对浏览器操作的支持的浏览器应用(例如,此功能仍在开发中的 Chrome 应用)。
  • ContextCompat.getSystemService()getSystemServiceName() 允许在所有 API 级别按类型查找系统服务。

bug 修复

  • 未调用 Fragment ViewModel 的 onCleared(AOSP 问题 74139250
  • 在 ViewPager 中使用 FragmentPagerAdapter 多次调用 onLoadFinished()(AOSP 问题 74182171
  • 在某些情况下,RecyclerView 的 LinearLayoutManager 的 smoothScrollToPosition() 显示不稳定(来回)移动(AOSP 问题 71567765

修订版 27.1.0 版本

(2018 年 2 月)

重要变更

  • 加载器的底层实现已经重写,可以使用 Lifecycle。虽然 API 保持不变,但也存在一些行为变更:
    • initLoader()restartLoader()destroyLoader() 现在只能在主线程上调用。
    • 现在,在启动和停止包含的 FragmentActivity/Fragment 时,会分别调用加载器的 onStartLoading()onStopLoading()
    • 系统仅会在 onStart()onStop 之间调用 onLoadFinished()。因此,现在可以在 onLoadFinished() 中安全地完成 Fragment 事务。
    • 与加载器相关的 FragmentController 方法现已废弃。
  • 现在,DialogFragment 的 getDialog()onDestroyView() 之前将为非 null 值,而不是在 dismiss() 中变为 null。您现在可以通过检查 getDialog().isShowing() 是否返回 false 来确定是否在 onStop() 中手动关闭对话框。

新增 API

  • RecyclerViewListAdapter(以及 AsyncListDiffer)可以更轻松地在后台线程上计算列表差异。它们可以帮助您的 RecyclerView 动画内容自动更改,只需在界面线程上完成极少的工作。在后台,它们使用的是