【转】eclipse导入V7包出现错误解决办法

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库工程中引入的支持包):

运行项目,大功告成

时间: 2024-10-15 14:22:55

【转】eclipse导入V7包出现错误解决办法的相关文章

Android 导入v7包常见错误,以及项目引用v7包错误解决,androidv7

Android 导入v7包常见错误,以及项目引用v7包错误解决,androidv7 android下v4    v7   v21等包是android系统的扩展支持包,就想windows的系统补丁一个道理. android的扩展包主要是用来兼容低版本的,比如android3.0以后出现了actionbar,如果要使用actionbar,那么手机系统必须在3.0以上才能使用,这样将会导致很多用户不能安装apk从而损失用户:(有人会想,为什么不直接将新出来的东西全部打包到sdk中而是提供各种支持包?我

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

android下v4    v7   v21等包是android系统的扩展支持包,就想windows的系统补丁一个道理. android的扩展包主要是用来兼容低版本的,比如android3.0以后出现了actionbar,如果要使用actionbar,那么手机系统必须在3.0以上才能使用,这样将会导致很多用户不能安装apk从而损失用户:(有人会想,为什么不直接将新出来的东西全部打包到sdk中而是提供各种支持包?我是这样理解的,比如:如果将原生actionbar直接打包到低版本的sdk包中,而低版

eclipse 导入 v7包

从github上面导入了工程后发现需要v7包的支持,这个包在SDK路径下面就有,如:G:\work soft\android-sdk-windows\extras\android\support\v7, 里面有一个appcompat需要导入,直接File->Import->copy into workspace,在需要的项目里面添加这个库即可 另外碰到一个问题就是找不到  Theme.AppCompat.Light.NoActionBar 这个可以自定义一个 <resources>

Eclipse导入Maven项目出现错误:Unsupported IClasspathEntry kind=4

使用Eclipse导入Maven项目失败,提示: An internal error occurred during: "Importing Maven projects". Unsupported IClasspathEntry kind=4 修复这个问题需要做两件事 1.保证m2e插件的版本高于 1.1.0,如果没有则到站点升级 : https://repository.sonatype.org/content/repositories/forge-sites/m2e/1.1.0/

eclipse中加放js文件报js语法错误解决办法

1) eclipse设置         window->preference-> JavaScript -> Validator->Errors/Warnings->Enable Javascript Sematic validation前面的钩号去掉 2) .project文件    下面的代码删除 <buildCommand> <name>org.eclipse.wst.jsdt.core.javascriptValidator</name

工具-chrome相关-安装crx包及错误解决(99.3.2)

目录 1.安装教程 2.程序包无效:"CRX_HEADER_INVALID" @(安装crx包及错误解决) 1.安装教程 在浏览器上输入 chrome://extensions 并且选择开发者模式 将.crx文件拖拽到Chrome的扩展程序列表 完成安装 若出错参考下面 2.程序包无效:"CRX_HEADER_INVALID" 将安装出错的crc文件后缀改为rar 打开该文件夹,把里面的"_metadata"文件夹改名为"metadat

在项目中导入import javax.servlet 出错解决办法

我们有时会把别人的项目copy到自己这里进行二次开发或者参考学习,有的时候会发生下图的错误,即eclipse项目里我们导入的项目里提示HttpServletRequest 不能引用,会伴随头疼的小红叉出现 具体原因是我们工程里面web-inf/lib目录下少了相应的包:Package javax.servlet.http引起的:通俗且确切的讲就是缺少TOMCAT_HOME\lib下的servlet-api.jar.在别人的机器上他配置了Server,一般都是tomcat,而在拷贝的过程中Serv

【XS128】Link error L1822 symbol _FADD / _FSUB/ _FDIV/ _FMUL.....错误解决办法

这是飞思卡尔 XS128平台比较常见的LINK错误. 但是要解决起来也比较头疼. 很多人也许有这样的经历,整个工程目录是在别人做过的所有文件拷贝过来然后修改代码符合自己项目要求而产生的.这就发生了一个问题, 当初新建工程时的很多配置,比如预处理器配置,就会出现不适用当前项目.比如,本文所要提到的链接错误. 这个错误发生于: 原工程在新建的时候在某一步有与float相关的三个选项,如图: 如果你选择了none,那么不幸的是,如果在代码中加入关于float的四则运算等代码,就会出现该链接错误. 然而

Unable to locate package错误解决办法

新装了VMWare Player,结果装上Ubuntu12.04后安装软件都提示:Unable to locate package错误,解决方法非常简单,终端输入以下命令即可: [cpp] view plaincopy sudo apt-get update 究其原因,应该是刚安装,软件源还来不及更新,所以才会无法找到包.我猜测在更换软件源之后,也很可能会出现这个问题. Unable to locate package错误解决办法,布布扣,bubuko.com