你能解释为什么在android上支持v4和v7

时间:2015-01-02 22:32:11

标签: android facebook-android-sdk

我正在检查Android的支持库,但我不明白为什么他们分为v4和v7?

为什么不为所有版本使用一个支持库?甚至所有支持的课程都适用于SDK?

3 个答案:

答案 0 :(得分:13)

  

但我不明白为什么他们分为v4和v7?

它们不是"分为v4和v7"。它们按功能划分。 Android支持包有很多部分,例如:

compile 'com.android.support:appcompat-v7:21.0.0'
compile 'com.android.support:cardview-v7:21.0.0'
compile 'com.android.support:gridlayout-v7:21.0.0'
compile 'com.android.support:leanback-v17:21.0.0'
compile 'com.android.support:mediarouter-v7:21.0.0'
compile 'com.android.support:palette-v7:21.0.0'
compile 'com.android.support:recyclerview-v7:21.0.0'
compile 'com.android.support:support-annotations:21.0.0'
compile 'com.android.support:support-v13:21.0.0'
compile 'com.android.support:support-v4:21.0.0'

其中唯一替换为support-v4support-v13的替代品。 support-v13包含support-v4中的所有内容,以及一些仅与运行API级别13或更高级别的设备相关的其他类。

工件名称中的-vNN表示法只是为了帮助提醒您该库中的代码所使用的Android API级别。

  

为什么不对所有版本使用一个支持库?

出于同样的原因,我们没有在人类历史上编写的每一行代码中编译:我们不需要它。例如,appcompat-v7是来自leanback-v17的独立库 - 它们与我的某个库相关。

  

甚至所有支持的课程都适用于SDK?

在某些情况下,它是因为我们尚未发明时间机器,所以我们不能" retcon"旧版本的Android有不同的类和方法。例如,appcompat-v7存在的部分原因是允许操作栏模式在返回到API级别7的设备上使用;本机操作栏仅出现在API级别11。

制造商也面临着降低操作系统规模的压力,特别是框架类,以减少构建Android设备所需的RAM和闪存存储量。因此,某些内容(例如,leanback-v17,适用于Android电视风格体验)不属于操作系统,因为它们并非在任何地方都需要。

此外,通过在库中添加内容,您的应用程序更加独立于底层设备。例如,一些开发人员将使用support-v4support-v13中的片段的backport,而不是因为他们想要在比Level Level 11更早的设备上运行(当引入本机片段时),但是因为他们想要一个在所有Android版本中实现相同功能的片段。本机片段的实现因Android OS版本而异。

答案 1 :(得分:6)

v4兼容到Android的第4版。 v7与v7兼容。由于Android SDK v4受限制较多,因此将某些内容移植回来更加困难(有些事情甚至可能无法移植到那么远,但可能会移植到7)。谷歌认为增加的难度并不值得,因为v4只是古老的(它不到1%的有源设备)。

实际上有更多的版本 - 存在v8,v11和v13支持库,它们使用起来不太常见。

答案 2 :(得分:2)

v4支持库 v7支持库均支持 Android版本2.3(API级别9)及更高版本,并且需要向后兼容设备

<强>差

v4 拥有最多的API,而不是其他应用程序组件,用户界面功能,数据处理,网络连接和实用程序。

v7 提供了可以独立包含在您应用中的特定功能集。

还有 v7 AppCompact v13 SupportLbrary

v7 AppCompact - 用于ActionBar用户界面和设计。它也需要v4。

v13 SupportLbrary - android版本3.2(API级别13)及更高版本,支持片段用户界面模式