本页详细介绍了最新的支持库软件包版本。如需了解早期版本,请参阅 支持库修订版本归档。
修订版 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软件包前缀。这个新软件包将开始提供一系列全新的库,包括heifwriter和recyclerview-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-selection为RecyclerView提供内容选择支持。该软件包提供以下功能:- 支持创建、修改、检查和监控对 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
RecyclerView的ListAdapter(以及AsyncListDiffer)可以更轻松地在后台线程上计算列表差异。它们可以帮助您的 RecyclerView 动画内容自动更改,只需在界面线程上完成极少的工作。在后台,它们使用的是