支持库

注意:随着 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 类提供了一个用户界面 Widget,用于显示和管理非常长的列表,可在 API 级别 7 及更高版本的 Android 版本上使用。
  • 调试和实用程序 - 有许多功能提供了超出您集成到应用中的代码的实用程序,包括用于改进方法输入代码 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# 表示法(例如 support-v4 包)来指明其最初支持的最低 API 级别。从 2017 年 7 月发布的支持库 26.0.0 版本开始,所有支持库包的最低支持 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)或更高版本。