是什么?
Support Library是许多包(package)的集合,包里有许多类。在Android开发时我们要使用这些类来构建app。
为什么要使用Support Library中的类?
Android app的开发本质上是对Android系统提供的API进行运用,具体来讲就是运用SDK。但是不同的Android系统版本提供的>SDK是有差别的,已有的API可能改变或者加入新的API。
在开发一款APP时,我们是希望它能够在尽可能多的不同版本系统上运行的,并且UI/行为表现的一致。
现在假如没有Support Library我们会如何开发一款包含Fragment的APP呢?
我们会导入Framwork(Android Framwork)的Fragment类进行开发。这里有个问题出现了,Fragment是在Android3.0才引入的。>如果你要使用Fragment,那么minSDKVersion就要大于等于11(Android3.0对应API版本为11)。开发完成后将app安装到Android2.3的手机时发现程序无法运行了,2.3系统还没有Fragment。
那么Android2.3的手机就无法享受使用Fragment类开发出来的APP了吗?Material相关类在Android5.0才引入,系统4.x的手机就>无法简单实现这个效果了吗?当然不是。
现在如果使用Support Library中的类就不会有问题了。比如导入Fragment时从Support Library的v4包中导入。现在用的是>Support Library中的类,所以就和具体的系统版本(2.3`、3.0)无关了。就可以在不同版本的系统上使用Fragment,并得到统一的>行为。
一句话概括,使用Support Library可以让App一定程度上向后兼容。让老版本的系统可以拥有新系统的一些特性。比如4.x系统的>手机上运行的App有Material效果。
如何选择?
Support Library中有不同的包,包名如appcompat-v7这里的v7代表的是这个包向后兼容到API7,如果系统比这还低appcomat-v7也不能让其有v7及其以上系统的一些新增特性。
不过随着Support Library24.2.0的发布,版本大于等于24.2.0的Support Library中的包最低只兼容到v9,也就是Android2.3。换句>话来说这种版本的Support Library中的v4最低也是兼容到API9的,而不是API4了。