首先我们要明白这些包到底是干什么用的
google提供了Android Support Library package 系列的包来保证来高版本sdk开发的向下兼容性,
即我们用4.x开发时,在1.6等版本上,可以使用高版本的有些特性,如fragement,ViewPager等,
下面,简单说明下这几个版本间的区别:
- Android Support v4: 这个包是为了照顾1.6及更高版本而设计的,这个包是使用最广泛的,eclipse新建工程时,都默认带有了
- Android Support v7: 这个包是为了考虑照顾2.1及以上版本而设计的,但不包含更低,故如果不考虑1.6,我们可以采用再加上这个包,另外注意,v7是要依赖v4这个包的,即,两个得同时被包含
- Android Support v13 :这个包的设计是为了android 3.2及更高版本的,一般我们都不常用,平板开发中能用到。
导入这些包遇见的各种各样的问题
- 项目中需要使用到Android support包中提供的东西,不免就要把support包放到libs下,然后使用。但我在使用android-support-v7-appcompat.jar却出现了如下问题:
- 我明明使用了v7的包,ActionBarActivity类也导入成功了,但还是用不了~~
- 原来v7是对v4存在依赖的,并且两者的版本还必须一样,否则没法使用。所以只需要在网上找个v4和v7一起的资源放在一起用就行了。
- Android sdk里面都自带的有这些support包,位置为..sdkextrasandroidsupport。如果想用v7的包,直接到..sdkextrasandroidsupportv7appcompatlibs下拿就行了,其他类同。不仅版本一致,而且版本都是与当前sdk的版本一致的
可能遇到的问题一: styles......No resource found
resvaluesstyles.xml:4: error: Error retrieving parent for item:
No resource found that matches the given name 'Theme.AppCompat.Light.DarkActionBar'.
对于values这个地方产生的no resource found问题,说明是没有v7下的资源
-
解决方法:
添加资源库,针对上面的例子,AppCompat这个是v7里的,所以缺少的是v7的资源。从sdk去获取,路径是sdkextrasandroidsupportv7appcompat,把这个library通过eclipse导入(import)。然后之前的项目添加该lib,再clean下。这样上面的问题可以搞定
可能遇到的问题二:values-v11,values-v21,values-v17等等下的No resource found
appcompat
esvalues-v21styles_base.xml:75: error: Error
retrieving parent for item: No resource found that matches the
given name 'android:Widget.Material.ActionButton'.
appcompat
esvalues-v11 hemes_base.xml:178: error: Error:
No resource found that matches the given name: attr 'android:windowActionBar'.
appcompat
esvalues-v14 hemes_base.xml:27: error: Error:
No resource found that matches the given name: attr 'android:actionModePasteDrawable'.
对于在values-v11这类针对不同android target加载的values下找不到资源
的问题,原因还是一样,找不到这个target下的资源
-
解决方法:
很简单,把project.properties里的target=android-8或者可能稍微高点,改到target=android-21或者更高(前提是sdk已经下载了该target的库),然后再clean下项目。这样这类问题也就解决了,当然你在Manifest里不要忘记加上uses-sdk,来允许最低版本