何时使用支持库

问题描述 投票:12回答:4

我对Android支持库的目的以及何时需要它感到困惑。我的理解是,使用支持库的主要优点是Android在旧版本中自己实现主题和UI功能,而无需开发人员明确定义它们。其中一个关键UI功能是Action Bar,它是在Honeycomb中为平板电脑引入的,然后添加到Ice Cream Sandwich的整个平台中。

也就是说,假设我想开发一个针对KitKat的应用程序(编写本文时的最新API),但我只想支持最早版本的Jelly Bean API 16。

Jelly Bean包含Action Bar,在16到19之间几乎没有主要的UI更改。在这种情况下我应该使用支持库吗?如果我使用它会带来什么好处?我正在寻找一个解释支持库的好处的答案,以及一个示例用例。

android android-support-library
4个回答
14
投票

这是你的答案 - 永远!

以下推理直接从Big Nerd Ranch的Android Dev书中复制。我的重点:

本书使用了支持库实现的片段,而不是Android操作系统内置的实现,这可能看起来像是一个不寻常的选择。毕竟,最初创建了片段的支持库实现,以便开发人员可以在不支持API的旧版Android上使用片段。今天,大多数开发人员可以专门使用Android版本,其中包括对片段的支持。

我们仍然更喜欢支持片段。为什么?支持片段非常出色,因为您可以随时更新应用程序中支持库的版本并发布新版本的应用程序。支持库的新版本每年出现多次。将新功能添加到片段API时,该功能也会添加到支持库片段API以及任何可用的错误修复程序中。要使用此新功能,只需更新应用程序中的支持库版本即可。

例如,Android 4.2中添加了对片段嵌套(在片段中托管片段)的官方支持。如果您使用Android操作系统的片段实现并支持Android 4.0及更高版本,则无法在您的应用支持的所有设备上使用此API。如果您使用的是支持库,则可以更新应用程序中的库版本并嵌套片段,直到设备上的内存不足为止。

使用支持库的片段没有明显的缺点。片段的实现在支持库中与在OS中几乎相同。唯一真正的缺点是您必须在项目中包含支持库,并且它具有非零大小。但是,它目前在一兆字节以下 - 您可能也会使用支持库来实现其他一些功能。

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

所以......总会有一个支持库,因为出于各种原因,你几乎总是需要支持旧设备:

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

  • 服务提供商和制造商对于更新非旗舰型手机并不感到困扰 - 在新版Android上回归测试他们的英国媒体报道需要花钱。
  • 一些设备所有者(谢天谢地不是全部!)对手机上的Android版本关注甚少。虽然Tinder应用程序的情况完全不同。
  • 设备所有者可能没有资源升级到最新/更新的设备。发展中国家的应用开发者可能面临这个问题。 Google's Platform Versions statistics不是区域特定的,即使它们可能应该是!

无论如何,这里是要点:支持库具有与OS /框架API完全相同的功能,并且它们具有紧凑的尺寸 - 因为它们必须包含在您的APK中,它们不会非常大地增加尺寸。所以我们已经确定使用/包含它们没有任何缺点。现在,好处是巨大的 - 看看上面的片段示例。


7
投票

Support Library通常用于您希望轻松支持更少版本特定源的OS版本 - 使用它可以在较旧版本的平台上使用更高版本操作系统中引入的功能,而无需担心并检查此平台是否具有该功能功能,并做一些事情,如果它没有。

支持库有几个versions - v4,v7,v8和v13。它们都添加了API的更高版本中引入的功能,然后是库的版本。例如,v4可以添加来自API 5,6,7,8 ...的功能,而v7仅来自API 8及更高版本。

这些库的其他主要特性是它们经常是updated,因此您可以选择依赖支持库来获取某些功能,而不是安装当前的操作系统版本(这可能会引入该功能中的错误)。

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


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认为使用支持库是最佳做法,即使不是必需的。它包括大多数示例代码中的v7-appcompat和v4库以及Android Studio的新项目模板。谷歌显然在这些兼容性库中投入了大量精力,并期望开发人员严重依赖它们。

© www.soinside.com 2019 - 2024. All rights reserved.