支持库

注意:随着 Android 9.0 (API 级别 28) 的发布,AndroidX 这一新版支持库已作为 Jetpack 的一部分发布。AndroidX 库包含现有的支持库,还包含最新的 Jetpack 组件。

您可以继续使用支持库。旧版库(版本 27 及更早版本,打包为 android.support.*)仍可在 Google Maven 上获取。不过,所有新的库开发工作都将在 AndroidX 库中进行。

建议在所有新项目中使用 AndroidX 库。您还应考虑将现有项目迁移到 AndroidX。

在开发支持多个 API 版本的应用时,您可能需要一种标准方法来在早期 Android 版本上提供较新的功能,或者优雅地回退到等效功能。您可以使用这些库来提供兼容性层,而不必构建代码来处理早期平台版本。此外,支持库还提供了标准框架 API 中没有的其他便利类和功能,以便更轻松地开发和支持更多设备。

Android 支持库最初是一个用于应用的单个二进制库,现已发展成为一个用于应用开发的库套件。其中许多库现在被强烈推荐,甚至可以说是应用开发中不可或缺的一部分。

本文档概述了支持库,可帮助您了解其组件以及如何在应用中有效地使用它。

注意:从支持库版本 26.0.0(2017 年 7 月)开始,大多数支持库的最低支持 API 级别已提高到 Android 4.0 (API 级别 14)。如需了解详情,请参阅本页面的版本支持和软件包名称

支持库的用途

支持库有几种不同的用途。为早期平台版本提供向后兼容性类只是其中之一。以下是您可以在应用中使用支持库的更完整列表:

  • 向后兼容更新的 API - 大量支持库为较新的框架类和方法提供了向后兼容性。例如,Fragment 支持类为运行低于 Android 3.0 (API 级别 11) 版本的设备提供 Fragment 支持。
  • 便利和辅助类 - 支持库提供了许多辅助类,特别是对于用户界面开发。例如,RecyclerView 类提供了一个用户界面微件,用于显示和管理非常长的列表,可用于 Android API 级别 7 及更高版本。
  • 调试和实用工具 - 支持库提供了许多超出您合并到应用中的代码的实用功能,包括用于改进方法输入的代码 Lint 检查的 support-annotations 库以及用于配置和分发方法数超过 65,536 的应用的 Multidex 支持

使用支持库 API 还是框架 API

支持库提供了与 Android 框架中的 API 非常相似的类和方法。发现这一点后,您可能会想,应该使用框架版本的 API 还是支持库的等效版本。以下是何时应使用支持库类替代框架 API 的指导原则:

  • 特定功能的兼容性 - 如果您想在运行早期平台版本的设备上支持最新的平台功能,请使用支持库中相应的类和方法。
  • 相关库功能的兼容性 - 更复杂的支持库类可能依赖于一个或多个其他支持库类,因此您应该为这些依赖项使用支持库类。例如,ViewPager 支持类应与 FragmentPagerAdapterFragmentStatePagerAdapter 支持类一起使用。
  • 常规设备兼容性 - 如果您没有打算以向后兼容的方式在应用中使用特定的平台功能,那么在应用中使用支持库类仍然是一个好主意。例如,您可能想使用 ActivityCompat 来代替框架 Activity 类,这样以后就可以利用更新的功能,例如集成 Android 6.0 (API 级别 23) 中引入的新权限模型。

提供平台 API 类兼容实现的支援库类,由于托管设备平台版本的限制,可能无法提供最新版本中可用的全套功能。在这种情况下,支援库类旨在优雅地降级,并且可能无法提供当前平台 API 的所有功能或数据。因此,您应查看您使用的库类和方法的参考文档,并在您的应用支持的最早平台版本上进行彻底测试。

注意:支持库不为每个框架 API 提供等效的类和方法。在某些情况下,您可能需要使用明确的 SDK 版本检查来封装框架方法调用,并提供替代代码来处理设备上不可用的方法。有关在代码中使用版本检查的更多信息,请参阅支持不同的平台版本

版本支持和软件包名称

一些支持库软件包的软件包名称使用 v# 符号表示它们最初支持的最低 API 级别,例如 support-v4 软件包。从支持库版本 26.0.0(2017 年 7 月发布)开始,所有支持库软件包的最低支持 API 级别已更改为 Android 4.0 (API 级别 14)。因此,在使用任何最新版本的支持库时,您不应假设 v# 软件包符号表示最低 API 支持级别。近期版本中的这一更改也意味着 v4 和 v7 等库软件包在它们支持的最低 API 级别方面基本等效。例如,对于支持库版本 26.0.0 及更高版本,support-v4 和 support-v7 软件包都支持最低 API 级别 14。

支持库发布版本

支持库的发布版本(例如 24.2.0 或 25.0.1)不同于该版本中任何库支持的最低 API 级别。发布版本号表示它是基于哪个平台 API 版本构建的,因此,表示此版本库中可能包含的最新 API。

具体来说,发布版本号的第一部分(例如版本 24.2.0 中的 24)通常与发布时可用的平台 API 版本相对应。支持库的发布版本级别表明它包含该 API 级别的某些功能,但您不应假定它与新平台 API 版本中发布的所有功能兼容。

库依赖项

Android 支持库套件中的大多数库都对一个或多个库有依赖关系。例如,几乎所有支持库都依赖于 support-compat 软件包。通常,您无需担心支持库的依赖关系,因为 Gradle 构建工具会为您管理库依赖关系,它会自动包含依赖的库。

如果您想查看应用中包含哪些库和库依赖项,请在应用开发项目的构建根目录运行以下命令,以获取该项目的依赖项报告,包括 Android 支持库和其他库:

gradle -q dependencies your-app-project:dependencies

有关使用 Gradle 将支持库添加到开发项目的更多信息,请参阅支持库设置。有关使用 Gradle 的更多信息,请参阅配置您的构建

请注意,所有 Android 支持库也依赖于某个基本级别的平台,对于最新版本来说,这是 Android 4.0 (API 级别 14) 或更高版本。