支持库

注意:随着 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) 的设备提供了对片段的支持。
  • 便利类和辅助类 - 支持库提供了许多辅助类,特别是用于用户界面开发。例如,RecyclerView 类提供了一个用于显示和管理很长列表的用户界面小部件,可用于 Android 从 API 级别 7 及更高版本的版本。
  • 调试和实用程序 - 有许多功能提供了超出您将代码合并到应用程序的功能,包括 support-annotations 库,用于改进方法输入的代码 lint 检查,以及 Multidex 支持,用于配置和分发方法超过 65,536 个的应用程序。

使用支持 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)或更高版本。