appcompat-v7 是为了兼容4.0(API-14)以下的版本,比如主题等。
如果在新建Android工程时,选择最低sdk为API-14,那么就不需要该兼容包。
appcompat-v7在sdk下载的时候,是与当前的最高编译版本对应的。比如说,当前最高编译版本是API-23,那在它对应的appcompat-v7版本中,会有对低API的适配。
例如:
来个案例:
假设当前的最高编译sdk为API 23
在新建项目test时,如果选择
最低要求版本Minimum Required SDK为API-8,
编译版本Complie with为API-19,
注:跟目标版本Target SDK无关,
并且选了主题。
在生成项目的时候,就会报错!!!!!
因为,
选用了主题,最低SDK又小于API-14,系统就会自动引入appcompat-v7包,但是注意到,此时appcompat-v7的编译SDK关联的是之前选择的API-19,显然要报错,因为它需要对应的最高SDK,即API23。那么,就打开它的project.properties文件修改target为android-23。注意:这里的target指的就是编译SDK。然后保存后,clean以下项目。appcompat-v7就不再报错。
但是,
对于test项目还是有错误,因为它关联的编译SDK为API-19,而它引用的appcompat-v7为API-23,于是没有办法生成R文件。那只能再更改它的target为android-23。
于是,
这样等于是创建了一个编译SDK为API-23的test项目。前面的都是徒劳。。。
又但是,
明白了这些道理之后,我们假设就是需要使用API-19的test项目,那么就要找一个与API-19对应的appcompat-v7,把它作为library引入,然后工程test引用它就行了。可能还产生v4包版本不一致的报错,这个简单,只要将工程test中libs下v4包复制一份到appcompat-v7下覆盖即可。
(啰嗦--才能把事情说明白)