最新支持库版本

此页面提供有关最新支持库软件包版本的详细信息。有关早期版本,请参阅支持库版本存档

版本 28.0.0 正式版

(2018 年 9 月 21 日)

这是支持库 28.0.0 的稳定版本,适用于生产环境。这将是 android.support 打包下的最后一个功能版本,鼓励开发者迁移到AndroidX

新功能

版本 28.0.0 RC 2

(2018 年 8 月 27 日)

此支持库的候选版本被认为功能完整,其公共 API 表面稳定。除非出现任何严重问题,否则此版本将作为最终稳定版本发布。此版本应该可以在生产环境中安全使用。请将任何问题报告给公共问题跟踪器

已修复的问题

  • Proguard 删除 ViewModel Application 构造函数(公共问题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 表面稳定。除非出现任何严重问题,否则此版本将作为最终稳定版本发布。此版本应该可以在生产环境中安全使用。请将任何问题报告给公共问题跟踪器

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

已修复的问题

  • BottomNavigationView 菜单在设计支持库中未正确初始化
  • PositionalDataSource 未正确处理预先添加的项目插入到数据库中
  • 滑块卡顿且无响应
  • `SlicesProviderCompat.getPinnedSpecs()` 不会将用户 ID 添加到 URI 中
  • RoutePlayer2:远程播放不会切换回本地播放
  • 缓存切片解析在操作时崩溃
  • Google 搜索应用在渲染静态切片时崩溃
  • 当数据集更改并删除选择时,RecyclerView 选择库中出现 ConcurrentModificationException
  • 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 年 7 月)

此支持库的 Beta 版本被认为功能完整,其公共 API 表面稳定,除非出现任何严重问题。虽然此版本可以在生产环境中安全使用,但它可能仍包含错误。请将任何问题报告给公共问题跟踪器

已修复的问题

  • GestureSelectionHelper 在不可选项目上吞噬事件
  • 当滑块值正在更新时,滑块切片可能具有重复的拇指图标
  • IconCompat 中断了 TYPE_URI 图标
  • 使用 Seekbar 的 Preferences 崩溃
  • Slice.toString() 中崩溃
  • OffsettingListUpdateCallback.onMoved() 调用 mCallback.onRemoved() 而不是 mCallback.onMoved()(问题110711937

版本 27.1.1

(2018 年 4 月)

已修复的问题

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

版本 28.0.0 Alpha 1

(2018 年 3 月)

注意:28.0.0-alpha1 是一个预发布版本,用于支持 Android P 开发者预览版。其 API 表面可能会发生变化,并且不一定包含来自支持库最新稳定版本的特性或错误修复。

重要更改

  • 如之前在Android KTX 公告中所述,我们正在继续在我们的库中采用 androidx 包前缀。一些全新的库,包括 heifwriterrecyclerview-selection,正从这个新包开始。我们希望 android.*androidx.* 之间的区别可以更清楚地表明哪些 API 与平台捆绑在一起,哪些是适用于不同 Android 版本的应用开发人员的静态库。
  • 我们已将 support-core-ui、support-core-utils 和 support-compat 的部分内容拆分为更小的库。此更改将帮助我们在将来解开支持库依赖项。我们现在有以下新库

    • 异步布局膨胀器 (来自 support-core-ui)
    • 集合 (来自 support-compat)
    • 协调器布局 (来自 design)
    • 游标适配器 (来自 support-core-ui)
    • 自定义视图 (来自 support-core-ui)
    • 文档文件 (来自 support-core-utils)
    • 抽屉布局 (来自 support-core-ui)
    • 插值器 (来自 support-core-ui)
    • 加载器 (来自 support-fragments 和 core-utils)
    • 本地广播管理器 (来自 support-core-utils)
    • 打印 (来自 support-core-utils)
    • 滑动面板布局 (来自 support-core-ui)
    • 滑动刷新布局 (来自 support-core-ui)
    • 视图分页器 (来自 support-core-ui)

新 API

  • recyclerview-selectionRecyclerView 提供了项目选择支持。该包提供
    • 支持创建、修改、检查和监视 RecyclerView 列表中一组选中项目的更改。
    • 支持直观的批量选择操作
      • 触摸驱动的选择允许用户使用直观的长按拖动手势选择一系列项目。
      • 鼠标驱动的区域选择允许用户使用传统的鼠标指针区域/套索操作在 RecyclerView 列表中选择一块项目。
    • 支持以触摸为中心的设备,包括手机和平板电脑等设备,以及以指针为中心的设备。
  • HEIF 写入器提供对写入 HEIF 格式静态图像的支持。
  • 设计库
    • 我们引入了一个新的应用程序主题,Theme.MaterialComponents,其中包含新的属性和更新的组件样式。
    • 我们添加了以下组件
      • 底部应用栏
      • 芯片
      • 芯片组
      • 材质按钮
      • 材质卡片视图
  • 切片为应用提供了一个框架,以便嵌入来自其他应用的模板化内容。
    • slices-builders 包含以模板格式构建内容的方法。
    • slices-view 包含呈现该内容的方法。
  • 浏览器操作为应用开发者提供了一个协议,用于为 URL 启动一致(但可自定义)的上下文菜单。此功能取决于浏览器应用(例如 Chrome,此功能仍在开发中)是否实现了对浏览器操作的支持。
  • ContextCompat.getSystemService()getSystemServiceName() 允许在所有 API 级别上按类型查找系统服务。

错误修复

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

27.1.0 版发布

(2018 年 2 月)

重要更改

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

新 API

  • ListAdapter 用于 RecyclerView(以及 AsyncListDiffer)使在后台线程上计算列表差异变得更容易。这些可以帮助您的 RecyclerView 自动为内容更改设置动画,并在 UI 线程上减少工作量。它们在后台使用 DiffUtil
  • SortedList.ReplaceAll 支持更新 SortedList 中的所有数据,它会为插入、删除、更改和移动运行所有相应的动画(移动被视为删除和插入)。
  • FragmentActivity 和 Fragment 现在实现了 ViewModelStoreOwner,并且现在可以与 ViewModelProvider 构造函数一起使用,作为使用 ViewModelProviders.of() 的替代方法。
  • Fragment 现在具有 requireContext()requireActivity()requireHost()requireFragmentManager() 方法,这些方法返回等效 get 方法的 NonNull 对象或抛出 IllegalStateException
  • requireViewById()findViewById()@NonNull 兼容版本已添加到 WindowCompatActivityCompatViewCompat 中,当找不到目标时,它们会抛出 IllegalArgumentException
  • LoaderCallbacks 方法现在具有适当的 @Nullable@NonNull 注解。
  • FileProvider 现在支持在 API 21 及更高版本的设备上通过新的 <external-media-path> 元素支持 getExternalMediaDirs()

错误修复

  • 在 onCreate 中初始化加载器的 Fragment 在 ViewPager 中具有损坏的生命周期
  • LoaderManager 在 onLoadFinished 中抛出 IllegalStateException
  • LoaderViewModel 在 onCleared 中没有清除其加载器
  • 找不到 android.arch.lifecycle.ViewModelStoreOwner 的类文件
  • DialogFragment 的 onDismiss 不会在 dismiss() 后立即调用
  • 在使用可下载字体时,国家/地区标志表情符号在发布密钥设备上不起作用
  • 首选项库使用在旧版 Android 上无法使用的属性
  • MediaCompat 的 testlib 工件类型记录不正确(AOSP 问题 71559905
  • Google Sans 在 TypefaceCompatUtil 中崩溃
  • 公开接收 Collection 的 ArraySet 构造函数。
  • updateApi 删除了应该保留的 .ignore 文件
  • 在 BrowseFragment 中创建了冗余的 MainFragments
  • 从 CarRecyclerView 中删除反射的使用
  • java.lang.IllegalStateException at FragmentManagerImpl.checkStateLoss
  • 使用 android.support.v4.content.PermissionChecker.checkSelfPermission 时出现(未记录的)java.lang.SecurityException
  • RecyclerView IndexOutOfBoundsException,因为 State.mPreviousLayoutItemCount 在 setAdapter 中未清除(AOSP 问题 37657125
  • 在 onCreate 中初始化加载器的 Fragment 在 ViewPager 中具有损坏的生命周期(AOSP 问题 34831613
  • FragmentManagerImpl.execSingleAction 崩溃

27.0.2 版发布

(2017 年 11 月)

错误修复

  • EmojiEditTextHelper 抛出 NullPointerException
  • IllegalStateException:Fragment 尚未附加。
  • 无法通过点击屏幕上的任何位置关闭“Cast”图标弹出窗口。
  • MediaMetadataCompat 抛出 BadParcelableException

27.0.1 版发布

(2017 年 11 月)

错误修复

  • 在调用 startActivityForResult() 后,LifecycleRegistry 处于错误状态。(问题 65665621
  • 在较旧的 API 级别上,禁用按钮的颜色太浅。
  • 用户滚动后,无法点击 RecyclerView. 中的项目。(AOSP 问题 66996774
  • Talkback 中,点击更多选项不会导致系统宣布新弹出窗口或将焦点添加到新选项。

27.0.0 版发布

(2017 年 10 月)

API 差异

API 更改

  • 已向各种 API 添加了可空性注解,包括以下内容当未正确处理可空返回类型时,这可能会导致 Kotlin 编译错误。
  • Fragment 可以使用支持库版本的 Transition 进行片段转换,包括共享元素转换。
  • 内容分页库(android.support.content.ContentPager)提供对通过 ContentProvider 公开的内容进行分页的支持。使用此库允许客户端避免在 UI 线程上进行昂贵的进程间“游标窗口交换”,从而为 Android 8.0 功能提供兼容性库。
  • ViewCompat 现在为自动填充方法添加了包装器,包括 getImportantForAutofill()isImportantForAutofill()setAutofillHints()setImportantForAutofill()
  • Leanback 获得了新的功能和改进,并删除了一些已弃用的类,例如
    • Picker 现在可以使用不同的分隔符在每列之间使用 setSeparators() 方法。
    • DiffCallback 已添加以允许 ArrayObjectAdapter 利用 DiffUtil 提供的输出。
    • 添加了基础结构以支持具有可变控件的媒体播放器,为快进、重复、随机播放、下一首、上一首和倒带添加了可选控件。
    • 删除了 MediaControllerGlue、PlaybackControlGlue、PlaybackControlSupportGluePlaybackOverlayFragment
  • 为了进行测试,PollingCheck 实用程序是从 AOSP CTS 移植的。它轮询某个条件在超时窗口内发生。
  • 添加了基础结构以使用 PermissionCompatDelegate 支持 Android 5.0 上即时应用的运行时权限。
  • 现在支持受信任的自定义标签,以及定义应用程序和源 URI 之间关系的功能。
  • 通过使用 AmbientMode 无头片段简化了 Android Wear 环境模式支持,这也使支持环境模式与使用架构组件兼容。
  • 随着我们逐渐淘汰旧的 V14 之前的 API,删除了一些已弃用的类,例如 android.support.v7.NotificationCompat(改用 v4 NotificationCompat)、KeyEventCompatParallelExecutorCompat SearchViewCompat
  • 迁移的 Wear 清单元数据常量现在都可通过 android.support.wear.utils.MetadataConstants 获取。
  • 现在所有 Activity(不仅仅是 WearableActivity)都支持环境模式。有关更多信息,请参阅AmbientMode 参考。
  • RoundedDrawable 现在支持 XML 膨胀。

错误修复

  • 使用支持库 27 和可下载字体时应用程序崩溃
  • 更新 SDK 后创建的新项目中可下载字体无法正常工作
  • 最新升级中 SpeechRecognizer API 出现故障
  • 移除动画 View 后绘制期间出现与 Fragment 相关的崩溃
  • support-leanback-demos 中的所有媒体播放均已损坏
  • Android 支持库正在将 <meta-data> 添加到清单中
  • FontResourcesParserCompat 应理解 android: attrs
  • Leanback Glue 不支持暂停输入键
  • 当多个包共享相同的工件 ID 时,IDE 中出现未解析的符号。
  • CarExtender 中出现空指针异常
  • 创建 MediaController 后,播放状态设置错误的随机播放/重复模式
  • 库集群默认海报在导航时会运行到下一个集群
  • 推荐卡片元数据被截断
  • RecyclerView.attachViewToParent() 处出现 IllegalArgumentException
  • 反序列化 SavedState 时出现 ClassNotFoundException(AOSP 问题 37133281
  • RecyclerView 中焦点卡住
  • 修复 Leanback LayoutManager 中的 ANR

26.1.0 版发布

(2017 年 9 月)

这是一个特殊版本,用于将支持库与来自架构组件生命周期集成。如果您未使用生命周期库,则无需从 26.0.2 更新。有关更多信息,请参阅架构组件发行说明

重要更改

26.0.2 版发布

(2017 年 8 月)

错误修复

  • 支持库 26.0.0 中菜单图标被扁平化
  • GuidedAction.multilineDescription 在 Leanback 中无法正常工作

26.0.1 版发布

(2017 年 8 月)

错误修复

  • FontCompat 26.0.0 在 O-MR1 设备上崩溃
  • 26.0.0 设计支持库不应包含多 dex 支持(问题 63999442))
  • 自 26.0.0 以来,AppBarLayout 现在有 300px 的左侧填充
  • PlaybackTransportControl 导航已损坏
  • Fragment.onCreateView 有时会在 onCreate 完成之前被调用
  • android.os.BadParcelableException: 反序列化时出现 ClassNotFoundException:android.support.v4.media.MediaMetadataCompat

26.0.0 版发布

(2017 年 7 月)

重要提示:支持库现在可通过 Google 的 Maven 存储库获得。您无需从 SDK 管理器下载支持存储库。有关更多信息,请参阅支持库设置

重要更改

  • 最小 SDK 版本已提高到 14。因此,许多仅为了与 14 之前的 API 级别兼容而存在的 API 已被弃用。这些 API 的客户端应迁移到其框架等效项,如每个弃用 API 的参考页面中所述。
  • Wear UI 库包含有助于您实现可在 Wear 设备上使用的模式和布局的类。有关更多信息,请参阅使用 Wear UI 库
  • 已弃用百分比支持模块。此模块的客户端应迁移到新的ConstraintLayout 小部件,该小部件作为 SDK 管理器中的单独工件提供。
  • android.support.v7.app.NotificationCompat 及其包含的类已弃用,将在以后的版本中删除

新 API

  • 用于RecyclerView 的新的fastScrollEnabled 布尔标志。如果启用,则必须设置fastScrollHorizontalThumbDrawablefastScrollHorizontalTrackDrawablefastScrollVerticalThumbDrawablefastScrollVerticalTrackDrawable

API 差异

错误修复

  • RecyclerView.toString() 中出现无限循环
  • 升级到 Canary 6 后,在 API 16 AVD 上运行 Kotlin 项目时出现 ResourceNotFoundException
  • 使用支持库 26.0.0-beta2 时,设计视图中出现 java.lang.AssertionError
  • Android Studio 布局预览对于支持库小部件已损坏
  • 如果首选项不是使用属性创建的,则忽略 Preference.setSingleLineTitle()
  • 支持库 25.3.0/25.4.0 版本的 DAC“自”注释错误
  • ResourcesCompat.getFont() 抛出异常
  • 工具栏标题不是粗体字体
  • 使用 maxLines 进行自动调整大小会产生意外的结果
  • TextView.checkForRelayout() 中出现 NullPointerException
  • AppCompatTextViewAutoSizeHelper.setRawTextSize() 在布局期间调用 requestLayout()
  • EmojiAppCompatTextView 崩溃
  • 文本更改时,自动调整大小的 TextView 不会自动调整
  • Instacart 中出现屏幕损坏
  • MenuItemCompat 中出现 UnsupportedOperationException
  • NotificationCompat 无法在 API 24 或更高版本上完全提取操作
  • 布局更新时 CoordinatorLayout 锚定问题