何时使用支持库

我对Android支持库的用途感到困惑,什么时候需要它。 我的理解是,使用支持库的主要优点是Android可以在旧版本中自行实现主题和UIfunction,而无需开发人员明确定义它们。 其中一个重要的用户界面function就是Action Bar,它是为Honeycomb的平板电脑推出的,然后join到冰淇淋三明治的整个平台中。

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

果冻豆包括操作栏,16和19之间几乎没有主要的UI变化。在这种情况下,我应该使用支持库吗? 如果我使用它,它有什么好处? 我正在寻找解释支持库的好处的一个答案,以及一个示例用例。

Solutions Collecting From Web of "何时使用支持库"

支持库通常用于你想轻松地支持更多版本的操作系统版本,而不需要特定的源代码 – 通过它,你可以使用在较早版本的操作系统中引入的function,而不必担心和检查这个平台是否有该function,并做一些事情,如果没有。

有几个版本的支持库 – v4,v7,v8和v13。 它们都添加了在较高版本的API中引入的function,然后是库的版本。 例如,v4可以添加来自API 5,6,7,8 …的function,而v7只能从API 8及以上版本添加。

该库的其他主要function是定期更新,以便您可以select依赖支持库来获取某些function,而不是依赖当前安装的操作系统版本(这可能会引入该function中的错误)。

当然,它们也有其不足之处 – 支持库是您项目的附加依赖项。

这是你的答案 – 总是

以下推理直接从Big Nerd Ranch的Android Dev书中复制而来。 强调我的:

本书使用内置在Android OS中的实现的支持库实现,这可能看起来是一个不寻常的select。 毕竟,最初创build了片段的支持库实现,以便开发人员可以在旧版本的Android上使用不支持该API的片段。 今天,大多数开发人员可以专门处理包含碎片支持的Android版本。

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

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

使用支持库的片段没有显着的缺点 。 支持库中的碎片实现与操作系统中的几乎相同 。 唯一的缺点是必须在项目中包含支持库,并且它的大小不是零。 然而, 它目前在兆字节以下 – 你也可能会使用支持库来实现其他一些function。

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

所以…总会有一个支持库,因为你几乎总是需要支持较旧的设备,原因有很多:

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

  • 服务提供商和制造商并不担心更新非旗舰型手机 – 在新版Android之上花费回报testing他们的英国媒体报道。
  • 一些设备所有者(幸好不是全部!)对手机上的Android版本非常关心。 与Tinder应用程序完全不同的情况。
  • 设备所有者可能没有资源升级到最新/较新的设备。 发展中国家的应用开发者可能面临这个问题。 谷歌的平台版本统计不是地区特定的,即使它们可能应该是!

无论如何,这里的要点是:支持库具有与OS /框架API完全相同的function,并且它们具有紧凑的尺寸 – 因为它们必须包含在APK中,所以它们不会增加太多的尺寸。 所以我们已经确定使用/包含它们没有任何不利之处。 现在,上涨是巨大的 – 看在上面的片段例子。

支持库有不同的版本,因为每个版本都包含以前版本中没有的新function。

在此页面上,您可以看到每个版本都包含了修改。 http://developer.android.com/tools/support-library/index.html

这个支持库的目的是让您访问您所定位的版本的function不包括在内。 您想使用最新的API中有什么,但是您所定位的版本不包括? 如果是,那么你必须包括最新版本的支持库(在上面的页面上查看支持库包括你需要的)。

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

它提到:

此外,在某些情况下,开发人员可能会认为他们在特定function的框架和支持实现之间进行select,只是发现支持依赖性决定了他们的决定。 例如,v7-appcompat库使开发人员可以使用API​​ 21中介绍的Material Design UIfunction。但是,这样做要求所有活动都从AppCompatActivity扩展到AppCompatActivity,后者从v4支持FragmentActivity扩展。 因此,针对API 21以外的任何开发人员,希望使用Material Design UIfunction的开发人员都被迫使用v4支持Fragments,而不是使用框架Fragments。

Google认为使用支持库是最佳做法,即使不一定要求也是如此。 它包括大多数示例代码以及Android Studio新项目模板中的v7-appcompat和v4库。 Google显然在这些兼容性库中投入了大量的精力,并希望开发人员能够严重依赖这些库。