31

我刚刚阅读了对 Android 支持包/兼容性库的描述...

http://developer.android.com/sdk/compatibility-library.html

......这让我有点困惑!它说 v13 库是 v4 的超集,但我认为它是相反的方式?

实用:如果我想使用兼容性库,以便我的应用程序在运行 Android 2.2 (API 8) 到 4.0 (API 14) 及更高版本的手机上构建和运行良好,v4 对我来说是否足够?

4

6 回答 6

35

要以 API 8 (v2.2) 为目标,您应该使用 v4 版本。

v13 的大部分内容都可以使用,但是如果您使用其中的任何依赖于平台 13 API 的功能,您的应用程序将在旧设备上崩溃。

除非有特别令人信服的理由需要 v13,否则我建议直接使用 v4。

于 2012-03-29T13:41:22.393 回答
9

答案是正确的,但也有点令人困惑!目前有 3 个支持 jar:V4、V7 和 V13。不幸的是,V7 仅适用于网格布局,因此不是超集。

我们只对支持库中的一个 jar 感兴趣[除非我们也想要 gridlayout(我不知道它是什么!)]。因此,我们正在查看我们的 android:minSdkVersion="8" 并对照 jar 进行检查。所以我们想要V4。

V13 只是一个超集,因为它复制了 V4 的方法,而不是代码。即在这个例子中使用V13 是不正确的。

于 2013-05-07T16:45:17.713 回答
5

我认为我们不应该使用超集(或子集)来描述这三个库(v4、v7、v13),尽管最简单的含义似乎是向后兼容的版本 4、7 和 13。

Google 首先在 v4 中添加 Fragment,然后在每个新版本发布时对其进行更新。这意味着除非您的应用仅支持最新版本(强烈不推荐),否则我们几乎随时都需要 support-v4。假设您的 minsdk 为 14,其中有片段已经,但“嵌入式片段”仅支持 17 之后,所以我们仍然需要 v4 并在这种情况下使用 v4 片段。

今年(2013)谷歌发布了v7,并在其中添加了appcompat-library。这意味着除了 11 之前的第三个支持 Actionbar(ActionbarSherlock) 之外,官方支持可能是一个更好的One ?? 然后,我相信将来在 v7 中发布每个新版本时,我们都会更新所有操作栏功能。

今天(2013 年 11 月 24日)我们仍然需要 minsdk=XX(7 到 10 之间)。我们应该为片段添加 support-v4,为 actionBar 添加 support-v7,以实现最佳实践。

于 2013-11-24T11:29:28.783 回答
1

我检查了 v13 的源代码,它只增加了 4 个类。

  • 片段兼容性
  • FragmentPagerAdapter
  • FragmentStatePagerAdapter
  • 片段标签主机

FragmentCompat 添加了 2 个静态 util 方法,这些方法已经包含在 v4 Fragment 中。

FragmentPagerAdapter、FragmentStatePagerAdapter 和 FragmentTabHost,这 3 个类在 v4 中都有对应的同名类,并且具有相同的行为。

v13 中提供的额外 API 不是必需的。

因此,通过添加 v4,您可以支持比 v13 更多的平台,并且与 v13 具有相同的行为,那么为什么不直接使用 v4 呢?

所以我看不出v13有任何必要性。我对吗?

于 2014-09-16T03:58:16.970 回答
0

v13 只有关于 Fragment 的功能。大多数情况下,如果您的 minVersion 高于 13 并且未使用以下功能:FragmentPagerAdapter、FragmentStatePagerAdapter、FragmentTabHost 和嵌套片段;您不需要支持 v13。

所以“v4 是 v13 的子集”是不正确的!

于 2014-05-12T01:28:48.883 回答
0

有点晚了,但请仔细看看下面的图片。在 JAR 文件 android-support-v13.jar 中,有 3 个包:

  • 注解
  • v4
  • v13

这意味着我们只需要添加这个 jar,我们将同时支持 v4 和 v13。由于 v7 不在编译中,我们需要自己添加该 JAR。

在此处输入图像描述

于 2015-05-23T23:48:16.307 回答