android下v4    v7   v21等包是android系统的扩展支持包,就想windows的系统补丁一个道理 。

android的扩展包主要是用来兼容低版本的,比如android3.0以后出现了actionbar,如果要使用actionbar,那么手机系统必须在3.0以上才能使用,这样将会导致很多用户不能安装apk从而损失用户;(有人会想,为什么不直接将新出来的东西全部打包到sdk中而是提供各种支持包?我是这样理解的,比如:如果将原生actionbar直接打包到低版本的sdk包中,而低版本手机里面却没有相关的代码,这样即使在开发的时候能在兼容低版本,但运行在低版本手机上时,应用去系统中找actionbar,发现没有就会报错,所以这种做法是不能实现的)

google开发人员将高版本出来的新东西做了很多向下兼容的支持包,这就是v4、v7...等包的作用,实现的原理就是模仿高版本的新内容,使用低版本去实现(比如v7包中actionbar,其实就是自定义了一个title栏,然后上面有title、logo、back键等等,给这些控件赋值或者设置属性都是模仿原生actionbar的属性名称,具体请关注我下一篇博客---使用actionbarsherlock替换原生actionbar)

然而,当我使用v7包的时候却不是那么顺畅,在这里总结一下使用的步骤、遇到的错误以及解决的办法:

1、导入v7包:

Eclipse——>Import--->Existing Android Code Into Workspase--->

D:\IDE\ANDROID64\sdk\extras\android\support\v7\appcompat;(导入成功后,在工作空间里就会有这样一个项目,打开看看里面的内容,发现src目录下是空的,为什么没有代码呢?原来v7包将java源代码打成了jar包,在项目libs目录下;整个工程的结构就是引用了v7-appcompat.jar,然后一个res目录;其实这个res目录才是重点,如果没有res目录,v7包的使用就不会这么麻烦,直接将v7-appcompat.jar拷贝到项目中就行了,但是这个jar包中是没有资源目录的,这就是为什么v7支持包需要一库工程的形式供开发者使用。)

2、接下来会发现v7工程报了错误:

res目录下有很多values目录,这是android为了兼容和适配不同版本系统而细分了很多个values目录,

values-v21就是Android5.0系统加载的资源目录(根据values后面的后缀,可区分不同版本、不同分辨率、不同语言等从而兼容不同版本、适配不同屏幕大小和不同国家语言),有人会尝试把这些“多余”的values包删除掉,就不报错了,但是发现删除这个后又有了新的错误,永无止境,况且即使你把所有的错误都删除,估计这个v7包也没什么用了,所以这种解决办法是不可行的。

刚刚上面说到了values-v21是Android5.0加载资源的目录,但是我发现我的编译版本是4.0,这就是为什么报错,因为编译版本是4.0,在应用编译打安装包时,她不认为这个应用会安装到5.0上,因为target是4.0,所以它不会为5.0做任何事情,也就更不会将values-21打包进去,既然不会打包进去,存在就没什么价值,所以认为Android4.0应用中不应该存在这个values-21,所以就报错了;解决办法就是讲编译版本提高到5.0以上:

解决办法:只要将编译版本提高到5.0就行

(右击-->Properties--->Project Build Target--->勾选5.0———>clean库工程)

3、我们的工程应用库工程后,还是报错,同样的道理,因为我们的工程将v7库工程引用进来后,我么你的资源目录里面就包括了v7的资源目录,里面照样也会有values-v21等,我已也要将我们的工程编译版本提高到5.0,然后clean

4、完成上述操作后,发现工程没有错误了,但是一运行,又报错:

                                             

它说在support-v7包的ActionBar中有多个dex文件,但遇到这种错误,一般都是重复引入jar包造成的;

再看看工程的build path:

果然发现引入了两个v4和v7包,这是为什么?

原来在我们自己的工程libs下有一个v4包和一个v7包,而v7库工程里面也有,我的工程又引用了v7库工程,

这样将v7库工程下的v4和v7包也引入了,所以导致工程中重复了:

找到了原因,问题就迎刃而解了,打开工程的build path,Remove掉我们工程中的两个支持包就行

(使用v7库工程中引入的支持包):

运行项目,大功告成

Android 导入v7包常见错误,以及项目引用v7包错误解决,相关推荐

  1. maven 引用其他项目引用的包出现BOOT-INF问题

    maven 引用其他项目引用的包的子模块出现BOOT-INF问题 在B项目中引入A项目的类,但是发现怎么也引入不进来 再来看看依赖进来的jar,发现被依赖进来A项目的包下面多了一个BOOT-INF目录 ...

  2. [转]Android 导入v7包常见错误,以及项目引用v7包错误解决

    android下v4    v7   v21等包是android系统的扩展支持包,就想windows的系统补丁一个道理. android的扩展包主要是用来兼容低版本的,比如android3.0以后出现 ...

  3. android导入工程以后报错,Android 导入v7包常见错误,以及项目引用v7包错误解决...

    android下v4    v7   v21等包是android系统的扩展支持包,就想windows的系统补丁一个道理. android的扩展包主要是用来兼容低版本的,比如android3.0以后出现 ...

  4. android生成aar无效,android studio生成aar包并在其他工程引用aar包的方法

    1.aar包是android studio下打包android工程中src.res.lib后生成的aar文件,aar包导入其他android studio 工程后,其他工程可以方便引用源码和资源文件 ...

  5. 一个android工程生成两个aar,android studio生成aar包并在其他工程引用aar包(示例代码)...

    1.aar包是android studio下打包android工程中src.res.lib后生成的aar文件,aar包导入其他android studio 工程后,其他工程可以方便引用源码和资源文件 ...

  6. Linux中把文件夹打成war包,SpringBoot中maven项目打成war包部署在liunx服务器上的方法...

    说明:Spring Boot由于内嵌了如Tomcat,Jetty和Undertow这样的容器,也就是说可以直接跑起来,用不着再像Spring项目还需要外置的Tomcat等容器来进行部署工作了,通过启动 ...

  7. java使用eclipse打jar包_Eclipse对Java项目打Jar包

    在本Java项目中,如下图一所示,Java项目含有外部依赖Jar包 -- fastjson-1.2.29.jar  包. 在经历了多次的失败后,最后我终于使用 Eclipse 对 "Java ...

  8. java程序默认包含的包是,Java程序默认引用的包是 答案:java.lang包

    intentional也:adj.有意之,故也:谋之. 在用(控件时.,一页面中惟其中之服务器控件或事而新作,而页面之他境不为新也: 我可受一执行者欲速成一任而不求工也:误 民乃史之创造者,为国之主. ...

  9. Maven项目引用本地jar包

    前言 正常情况下,是可以通过更改远程仓库地址是可以完成资源拉取和调用的有这么几种特殊情况需要特别处理: 1> 公司内网开发,搭建了私服云,但是又没有维护私服云 2> 其他合作公司开发的ja ...

最新文章

  1. domain,DNS,冗余,DNS劫持的大致原理
  2. 科目二倒车入库不论怎么都能入进去的方法
  3. hdu-1207(规律推导)
  4. MIDDLEWARE 在传输大量数据时,经常会发生堵塞,如果有一条错误的数据整个队列将无法处理
  5. java jtable defaulttablemodel_java – JTable和DefaultTableModel
  6. WordPress函数:get_sidebar(获取侧边栏)
  7. 计算机网络对口题目,2011-2015计算机对口升学网络试题汇总.doc
  8. cmd删除txt部分文字_Python识别图片中的文字
  9. hik中心服务器登录失败,蒲公英云平台登录失败解决方案
  10. Linux删除文件夹的方法
  11. hdu 1005(规律)
  12. TOP to Down设计简单例子 Creo3.0
  13. 什么是肠漏综合征,它如何影响健康?
  14. 第三讲 cs224n系列之skip-pram优化 Global Vector by Manning 词向量评价
  15. Koo叔说Shader-- 熟悉渲染管线
  16. numpy向量化函数
  17. WIN10 EXCEL 快捷键
  18. 如何利用番茄工作法提高学习和工作的效率
  19. CF 115B. Lawnmower
  20. Launchpad是什么?Launchpad使用教程

热门文章

  1. Linux echo的 > 和 >>
  2. php的cgi.fix_pathinfo解析
  3. B2C商城网站建设的四大关键点
  4. SQL%BULK_ROWCOUNT 和SQL%ROWCOUNT的区别
  5. SpringBoot中rabbitMQ确认机制和return机制
  6. 2k19一直显示储存到服务器,NBA2K19画面设置保存不了解决办法
  7. Android 动态注册短信拦截
  8. elasticsearch高级功能系列之completion suggest
  9. 2021-09-28 双等号==和三等号===的区别
  10. 心电图多少为正常范围_心电图的检查正常值是多少呢?