2012-03-29 73 views
31

我刚读了Android支持包/兼容库的描述......Android支持包/兼容性库 - 使用v4还是v13?

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

...并且它给我留下了小迷糊!它说v13库是v4的超集,但我认为这是另一种方式?实用:如果我想使用兼容性库,以便我的应用程序能够在运行Android 2.2(API 8)至4.0(API 14)及更高版本的手机上生成并正常工作,那么v4是否足以满足我的需求?

回答

35

要定位API 8(v2.2),您应该使用v4版本。

v13的大部分内容都可以使用,但如果您使用依赖于平台13 API的任何功能,则您的应用将在旧设备上爆炸。

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

+0

澄清:我在我的清单中指定 'targetSdkVersion' 为 “14” 和 '的minSdkVersion' 为 “8”。那么v4仍然是我想要的吗? – 2012-03-29 13:56:36

+2

如果您使用v13,并且您使用的功能依赖于平台13 API,则您的应用程序将会崩溃。仅仅因为它编译,并不意味着它可以在所有设备上运行。 – 2012-03-29 14:07:08

+0

我仍然不明白,如果v13需要13+设备为什么它是v4的超集... – Olivier 2012-07-19 22:55:37

9

答案是正确的,但也有点混淆! 目前有3个支持罐:V4,V7和V13。 不幸的是,V7仅适用于gridlayout,因此不是超集。

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

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

5

我不认为我们应该用超(或子集)来描述这三个库(V4,V7,V13)虽然最简单的意义似乎向后兼容的版本4,7和13

加入谷歌这意味着除非你的应用只支持最新版本(强烈推荐),我们几乎需要support-v4。假设你的minsdk有14个片段已经可以,但'嵌入式片段'仅支持17位以后,所以我们仍然需要v4和v4片段。

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

我们仍然需要minsdk = XX today(Nov.24,2013)(7和10之间)。我们应该添加支持-V4的片段和支持-V7的动作条都为最佳实践。

+0

你的回答很好地解释了大多数人相信这些库之间没有子集超集关系。 – thedarkpassenger 2017-09-27 14:50:53

0

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

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

1

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

  • FragmentCompat
  • FragmentPagerAdapter
  • FragmentStatePagerAdapter
  • FragmentTabHost

FragmentCompat增加被包括在V4片段已经2种静态util的方法。

FragmentPagerAdapter,FragmentStatePagerAdapter和FragmentTabHost,所有这些3类有相应的V4相同名称的类,并且有相同的行为。

在V13提供额外的API是没有必要的。加入V4

因此,可以支持更多的平台比V13,与V13相同的行为,那么为什么不使用V4?

,所以我不能看到任何V13 neccessarity。 我说得对不对?

0

晚了一点,但请有下面的图片很好看。 在JAR文件Android的支持,v13.jar,有3包:

  • 注释
  • V4
  • V13

这意味着我们只需要添加这一个罐子,我们会支持v4和v13。由于v7不在编译中,因此我们需要自行添加该JAR。

enter image description here