所以,我的主要问题是:Fragment库在支持库中和在API 11(Android v3.0,蜂巢)引入的Fragment库之间有什么区别?
我的第二个问题是,如果可能把所有新的API都放在支持库中,为什么我们有两种类型的库?我的意思是,Android可以将所有API都发布在支持库下,而不是支持库和Android版本X.xx库。
classes.dex
(应用程序中所有类的Dalvik可执行文件)也包括该支持库的类,资源也是如此。因此,如果没有支持库,我的应用程序大小为1MB,现在加上支持库后,额外增加了2MB,总大小为3MB。Android 4.0.x (ICS)相比于Android 2.3.x(Gingerbread)增加了许多功能。兼容性库的作用是为了弥补ICS中添加的一些更改,这些更改可能被Gingerbread支持。“可能”是关键词,因为对ICS进行了大量更改,其中很多更改不适用于Gingerbread,当然也不会有兼容性库。
例如,您提到的片段在ICS中与兼容性库中略有不同,因为ICS可以使用更多功能。如果您查看ICS的代码中的片段类,则与兼容性库中的不同。这是一整套代码,使ICS中的“类似”片段可以在旧版本(如Gingerbread)中使用,而程序员几乎看不到任何差异。
这就是兼容性库的目的,也是为什么它们不会广泛地修补Gingerbread以使用ICS中的所有功能(它们无法做到)。兼容性库的重点是将新版本Android(如ICS)可用的内容和方式接口化,以便将其用于较旧的版本,如GB,以GB的方式完成。
至于为什么他们不保持支持库增长并保留相同的基本操作系统 - 这是兼容性问题的答案。如果用户只有v4,而v12已经发布,会发生什么?Android现在使用操作系统的Android API版本作为应用程序兼容性的基础,并且开发人员可以选择包含支持库(增加其应用程序的文件大小,但提供新功能)。每个使用支持库的应用程序都单独包含它们(意味着4个应用程序= 4倍的包含量)。
这个想法是,您只能下载受当前操作系统API版本支持的应用程序(就谷歌Play而言),并且您可以选择包括支持库,以便为不具备您选择对这些用户可用的新API特性的旧API提供支持。这实际上只是一个外观和感觉的考虑,而不是其他方面的任何东西。
希望这解决了疑问 :)
支持库实际上并没有包含所有新的API。它确实支持Fragment API的部分内容,但尚不支持ActionBar。为此,您需要另一个类似于ActionBar Sherlock的库。
为什么会有两个库?
这是因为问题的一部分是Google只回溯了其中一些内容,但我的理解是,由于Android UI框架核心中存在限制和缺失API,一些新功能无法进行回溯。
Android在最近的版本中推出了碎片和操作栏的很酷的功能。
现在,如果我们想要使用这些功能并支持旧版Android,则必须编写高度混乱的版本相关代码,这是不好的。
为了使我们免受所有这些混乱的困扰,Android推出了支持库,该库虽然不提供新功能的完全支持,但足以让开发人员编写整洁的代码,并支持所有设备。
回答你的第二个问题非常简单,碎片是v3.0的集成部分,如果你希望你的应用程序仅在v3.0+上运行,那么你真的不需要包含外部库。
Support库中的片段相当于Honeycomb+的片段。
根据文档的第二个问题:
v13是v4的超集,包括额外的支持类来处理v13 API
即相同的功能,只是适应于v13 API。
我使用修改后的v4支持库 - 带有地图。