你能解释一下为什么 android 支持 v4 和 v7
Can you explain why support v4 and v7 on android
我正在检查 android 的支持库,但我不明白为什么它们分为 v4 和 v7?
为什么不对所有版本使用一个支持库?甚至支持所有类,正确使用 SDK?
v4 一直兼容到 Android 的第 4 版。 v7 兼容回 v7。由于 Android SDK v4 更受限制,因此更难将某些东西移植回(有些东西甚至可能无法移植回那么远,但可能移植到 7)。 Google 认为增加难度不值得,因为 v4 太过时了(它不到活跃设备的 1%)。
实际上还有更多版本 - v8、v11 和 v13 支持库已存在,只是不太常用。
but i cant understand why they divided into v4 and v7 ?
他们不是 "divided into v4 and 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-v4
和 support-v13
。 support-v13
包含 support-v4
中的所有内容,外加一些仅与 运行ning API 13 级或更高级别设备相关的附加 类。
工件名称中的 -vNN
符号只是为了帮助提醒您该库中的代码返回到 Android API 级别。
Why just dont use one support library for all versions?
出于同样的原因,我们没有在人类历史上编写的每一行代码中进行编译:我们不需要它。例如,appcompat-v7
是 leanback-v17
的一个独立库——它们与我的一个库的相关性差不多。
Or even all classes on support, be on SDK properly?
在某些情况下,这是因为我们还没有发明时间机器,所以我们不能 "retcon" 旧版本的 Android 有不同的 类 和方法。例如,appcompat-v7
存在的部分原因是允许操作栏模式在返回到 API 级别 7 的设备上使用;本机操作栏仅出现在 API 级别 11。
制造商也施加压力,要求减小 OS 的大小,尤其是框架 类,以减少构建 Android 所需的 RAM 和闪存量设备。因此,有些东西(例如 leanback-v17
,用于 Android 电视风格的体验)不是 OS 的一部分,因为它们并不是到处都需要的。
此外,通过将内容放入库中,您的应用可以更加独立于底层设备。例如,一些开发人员会在 support-v4
或 support-v13
中使用片段的反向移植,而不是因为他们想 运行 在早于 API 级别 11 的设备上(当原生片段是引入),但因为他们想要一个在所有 Android 版本中都工作相同的片段的实现。本机片段实现将因 Android OS 版本而异。
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)及更高版本并支持片段用户界面模式
我正在检查 android 的支持库,但我不明白为什么它们分为 v4 和 v7?
为什么不对所有版本使用一个支持库?甚至支持所有类,正确使用 SDK?
v4 一直兼容到 Android 的第 4 版。 v7 兼容回 v7。由于 Android SDK v4 更受限制,因此更难将某些东西移植回(有些东西甚至可能无法移植回那么远,但可能移植到 7)。 Google 认为增加难度不值得,因为 v4 太过时了(它不到活跃设备的 1%)。
实际上还有更多版本 - v8、v11 和 v13 支持库已存在,只是不太常用。
but i cant understand why they divided into v4 and v7 ?
他们不是 "divided into v4 and 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-v4
和 support-v13
。 support-v13
包含 support-v4
中的所有内容,外加一些仅与 运行ning API 13 级或更高级别设备相关的附加 类。
工件名称中的 -vNN
符号只是为了帮助提醒您该库中的代码返回到 Android API 级别。
Why just dont use one support library for all versions?
出于同样的原因,我们没有在人类历史上编写的每一行代码中进行编译:我们不需要它。例如,appcompat-v7
是 leanback-v17
的一个独立库——它们与我的一个库的相关性差不多。
Or even all classes on support, be on SDK properly?
在某些情况下,这是因为我们还没有发明时间机器,所以我们不能 "retcon" 旧版本的 Android 有不同的 类 和方法。例如,appcompat-v7
存在的部分原因是允许操作栏模式在返回到 API 级别 7 的设备上使用;本机操作栏仅出现在 API 级别 11。
制造商也施加压力,要求减小 OS 的大小,尤其是框架 类,以减少构建 Android 所需的 RAM 和闪存量设备。因此,有些东西(例如 leanback-v17
,用于 Android 电视风格的体验)不是 OS 的一部分,因为它们并不是到处都需要的。
此外,通过将内容放入库中,您的应用可以更加独立于底层设备。例如,一些开发人员会在 support-v4
或 support-v13
中使用片段的反向移植,而不是因为他们想 运行 在早于 API 级别 11 的设备上(当原生片段是引入),但因为他们想要一个在所有 Android 版本中都工作相同的片段的实现。本机片段实现将因 Android OS 版本而异。
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)及更高版本并支持片段用户界面模式