何时使用支持库

15

我对Android支持库的用途和使用时机感到困惑。据我了解,使用支持库的主要优点是在旧版本中让Android自动实现主题和UI特性,而无需开发人员显式定义它们。其中一个关键的UI特性是Action Bar,在Honeycomb中为平板电脑引入,然后在Ice Cream Sandwich中添加到整个平台。

假设我想开发一个针对KitKat的应用程序(目前写作本文时最新的API版本),但我只想支持API 16及更早的版本(Jelly Bean的最早版本)。由于Jelly Bean已经包含了Action Bar,并且在16到19之间几乎没有重大的UI变化,那么在这种情况下,我应该使用支持库吗?如果我确实使用了它,会有什么好处呢?我正在寻找一个解释支持库的好处和示例用例的答案。


考虑存在多个支持库。 - joao2fast4u
2
支持库是为了针对早期版本提供更多最新功能而设计的。在您的情况下,是否存在低版本目标不支持但支持库可以添加的功能?如果没有,那么就不需要使用支持库。 - njzk2
API 15是Jelly Bean的最早版本。最早的Jelly Bean版本是16。 - Phantômaxx
你说得对。我已经进行了编辑以反映这一点。 - Sean Beach
如果您需要像导航抽屉(Gmail)、滑动菜单(Facebook)、操作栏功能等新功能。所有这些功能都在JellyBean之后可用,因此,如果您想在(gingerbread、ics)低版本中使用这些类型的功能,则必须使用android.supportv7兼容库。 - skyshine
谷歌文档现在表示:“注意:随着Android 9.0(API级别28)的发布,支持库有一个名为AndroidX的新版本,它是Jetpack的一部分。” - Flimm
4个回答

15

以下是您的答案——总是!

下面的论据摘自Big Nerd Ranch的Android Dev图书,重点是我自己加的:

本书使用支持库实现fragment而不是Android OS内置的实现,这可能看起来像一个不寻常的选择。毕竟,支持库的fragment实现最初是为了让开发人员在不支持API的旧版Android上使用fragment。今天,大多数开发者可以专门使用包含fragments支持的Android版本。

我们仍然喜欢支持fragments。为什么?支持fragments更优秀,因为你可以随时更新应用中的支持库版本并发布新版本的应用程序。支持库每年都会发布多个新版本。当添加新的特性到fragment API时,该特性也将与所有可用的错误修复一起添加到支持库fragment API中。要使用这个新功能,请只需更新应用程序中的支持库版本。

例如,官方支持片段嵌套(在片段中托管片段)是在Android 4.2中添加的。如果你正在使用Android OS实现的片段并支持Android 4.0及以上版本,则无法在您的应用程序支持的所有设备上使用此API。如果您使用支持库,则可以更新应用程序中库的版本并嵌套片段,直到设备上内存用完。

使用支持库的fragments 没有明显的缺点。支持库的fragment实现几乎相同于OS中的实现。唯一的真正缺点是你必须在项目中包含支持库,并且它有一个非零的大小。但是,目前它不到一兆字节 - 你可能也会使用支持库的其他功能。

我们在本书和自己的应用程序开发中采取实用的方法。 支持库就是王者

所以...始终会有一个支持库,因为由于多种原因,您几乎总是需要支持旧设备:

设备所有者可能无法更新到最新版本,因为:

  • 服务提供商和制造商不关心更新非旗舰类型手机 - 在新版Android上对其膨胀软件进行回归测试需要花费金钱。
  • 一些设备所有者(幸运的是并非所有人!)非常少关心其手机上的Android版本。然而 Tinder 应用程序完全不同情况。
  • 设备所有者可能没有升级到最新或更新设备的资源。开发中国家的应用程序开发人员可能面临此问题。 Google 的平台版本统计数据 不是区域特定的,尽管它们可能应该是!

无论如何,这就是要点:支持库具有与 OS / 框架 API 相同的功能,并且它们的大小紧凑 - 因为它们必须包含在您的 APK 中,所以它们不会增加太多的大小。因此,我们已经证实使用/包含它们没有任何缺点。现在,好处非常大 - 看看上面的 Fragment 示例。


Fragment已被弃用,建议使用SupportFragment。 - Shawn Li

8

支持库通常用于在不需要特定版本源代码的情况下轻松支持更广泛的操作系统版本 - 使用它,您可以在旧平台上使用较高版本操作系统中引入的功能,而无需担心和检查该平台是否具有该功能,并在没有该功能的情况下执行某些操作。

支持库有几个版本 - v4、v7、v8和v13。它们都添加了在API的较高版本中引入的功能。例如,v4可能会添加来自API 5、6、7、8等的功能,而v7仅会添加来自API 8及以上的功能。

库的另一个重要特点是它们经常更新,因此您可以选择依赖于支持库以获取某些功能,而不是依赖于安装的当前操作系统版本(该版本可能会在该功能中引入错误)。

当然,它们也有缺点 - 支持库是项目的额外依赖项。


1

存在不同版本的支持库,因为每个版本都包含之前版本中不可用的新功能。

您可以在此页面上查看每个版本及所包含的修改。 http://developer.android.com/tools/support-library/index.html

支持库的目的是为您提供访问当前目标版本未包含的功能。如果您想使用最新 API 中的任何功能,但当前目标版本没有包含,则必须包含最新版本的支持库(请先在上述页面上检查支持库是否包含您需要的内容)。


0

我在http://martiancraft.com/blog/2015/06/android-support-library/上找到了一篇好文章。

它提到:

此外,在某些情况下,开发人员可能认为他们可以选择特定功能的框架和支持实现,结果发现支持依赖项规定了这种选择。例如,v7-appcompat库使开发人员能够使用API 21中引入的Material Design UI功能。然而,这样做需要所有活动都扩展自AppCompatActivity,它是扩展自v4支持FragmentActivity的。因此,目标低于API 21并希望使用Material Design UI功能的开发人员被迫使用v4支持片段,而不是框架片段。

Google认为使用支持库是最佳实践,即使不一定需要。它在大多数示例代码以及Android Studio的新项目模板中包括v7-appcompat和v4库。Google显然在这些兼容性库上投入了大量精力,并期望开发人员大量依赖它们。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接