Android Dev Summit, October 23-24: two days of technical content, directly from the Android team. Sign-up for livestream updates.

支持库

注意:Android 9.0(API 级别 28)发布后,新版支持库 AndroidX 也随之诞生,它属于 Jetpack。除了现有的支持库,AndroidX 库还包含最新的 Jetpack 组件。

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

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

在开发支持多个 API 版本的应用时,您可能需要一种标准的方法,以便对早期版本的 Android 系统提供新功能,或者优雅地回退到等效的功能。您可以利用这些库提供相应的兼容性层,而无需编译代码来处理早期版本的平台。此外,支持库还提供标准 Framework API 中未提供的额外的工具类和功能,使您能更轻松地面向更多设备进行开发和提供支持。

Android 支持库最初是适用于各种应用的单个二进制库,如今它已经发展为一套用于应用开发的库。现在,其中许多库在应用开发过程中即使不是必需的,我们也强烈推荐使用。

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

注意:从支持库版本 26.0.0(2017 年 7 月)开始,对于大多数库软件包,大部分支持库中支持的最低 API 级别已提升至 Android 4.0(API 级别 14)。有关详情,请参阅本文档中的版本支持和软件包名称部分。

支持库的用途

支持库有一些独特的用途,而针对平台早期版本的向后兼容性类只是其中之一。下表完整列出了支持库在应用中的用途:

  • 新版 API 的向后兼容性 - 大量的支持库都为较新的框架类和方法提供向后兼容性。例如,Fragment 支持类为搭载 Android 3.0(API 级别 11)之前版本的设备中的 Fragment 提供支持。
  • 工具类和辅助类 - 支持库提供了许多辅助类,特别是针对界面开发。例如,RecyclerView 类提供了一个界面微件,用于显示和管理超长的列表,并可在 API 级别 7 及更高版本的 Android 系统中使用。
  • 调试和实用工具 - 许多功能可以提供您集成到应用中的代码所不具备的实用工具,包括 support-annotations 库,它改进了对方法输入进行的代码 Lint 检查;以及多 dex 处理支持,用于通过 65536 种以上的方法配置和分发应用。

使用支持 API 与使用框架 API

支持库提供的类和方法与 Android 框架中的 API 非常相似。了解这点后,您可能想确定应该使用 API 的框架版本,还是使用等效的支持库。以下指南介绍了何时应使用支持库类代替框架 API:

  • 特定功能的兼容性 - 如果要在搭载早期版本平台的设备上支持最新的平台功能,请使用支持库中等效的类和方法。
  • 相关库功能的兼容性 - 更复杂的支持库类可能依赖于一个或多个其他支持库类,因此您应该针对这些依赖项使用支持库类。例如,ViewPager 支持类应该与 FragmentPagerAdapterFragmentStatePagerAdapter 支持类一起使用。
  • 常规设备兼容性 -如果您不打算以向后兼容的方式在您的应用中使用的特定平台功能,则依然建议在该应用中使用支持库类。例如,您可能想要使用 ActivityCompat 代替框架 Activity 类,以便以后可以利用更新的功能,例如集成在 Android 6.0(API 级别 23)中引入的新权限模型。

提供平台 API 类兼容实现的支持库类可能无法提供最新版本中的全套功能,这是因为主机设备平台版本存在限制。在这种情况下,支持库类会优雅地降级,并且可能无法提供当前平台 API 的所有功能或数据。因此,您应该查看您所使用的库类和方法对应的参考文档,并在搭载您应用支持的最早版本平台的设备上进行全面测试。

注意:支持库并不会为每个框架 API 都分别提供等效的类和方法。在某些情况下,您可能需要将框架方法调用放入显式 SDK 版本检查代码块中,并提供替代代码以处理设备上不可用的方法。要详细了解如何在代码中使用版本检查,请参阅支持不同的平台版本

版本支持和软件包名称

部分支持库软件包的名称会指示其最初支持的最低 API 级别。这些名称使用 v# 表示法,例如 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)或更高版本。