use*_*366 12 android facebook-android-sdk
我正在检查Android的支持库,但我不明白为什么他们分为v4和v7?
为什么不对所有版本使用一个支持库?甚至所有支持的课程都适用于SDK?
Com*_*are 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'
Run Code Online (Sandbox Code Playgroud)
这些中唯一的替代品是support-v4和support-v13.support-v13包含所有内容support-v4,以及一些仅与运行API级别13或更高级别的设备相关的其他类.
-vNN工件名称中的表示法只是为了帮助提醒您该库中的代码所使用的Android API级别.
为什么不对所有版本使用一个支持库?
出于同样的原因,我们不会在人类历史上编写的每一行代码中编译:我们不需要它.例如,它appcompat-v7是一个独立的图书馆leanback-v17- 它们与我的一个图书馆有关.
甚至所有支持的课程都适用于SDK?
在某些情况下,因为我们还没有发明时间机器,所以我们不能"重新调整"旧版本的Android以拥有不同的类和方法.例如,appcompat-v7存在的部分原因是允许操作栏模式在返回到API级别7的设备上使用; 本机操作栏仅出现在API级别11.
制造商也面临着降低操作系统规模的压力,尤其是框架类,以减少构建Android设备所需的RAM和闪存存储量.因此,有些东西(例如,leanback-v17对于Android TV风格的体验)不是操作系统的一部分,因为它们并不是随处可见的.
此外,通过在库中添加内容,您的应用程序更加独立于底层设备.例如,一些开发人员将使用片段的backport,support-v4或者support-v13不是因为他们想要在比Level Level 11更早的设备上运行(当引入本机片段时),而是因为他们想要在所有Android上实现相同的片段实现版本.本机片段的实现因Android OS版本而异.
v4兼容到Android的第4版.v7与v7兼容.由于Android SDK v4受限制较多,因此将某些内容移植回来更加困难(有些事情甚至可能无法移植到那么远,但可能会移植到7).谷歌认为增加的难度并不值得,因为v4只是古老的(它不到1%的有源设备).
实际上有更多的版本 - 存在v8,v11和v13支持库,它们使用起来不太常见.
| 归档时间: |
|
| 查看次数: |
3182 次 |
| 最近记录: |