android的 adt 升级18后,使用三方jar包,报错:NoClassDefFound或VerifyError

前几日导入了别人发来的一个工程,运行到某个类调用的时候,总报错:java.lang.VerifyError: com.***

经过几日网上的磨战,总算找到了解决方法。


参考1:

http://zoulu1.blog.163.com/blog/static/46733149201231910577936/

经过分析 是插件adt使用aapt工具打包生成 apk文件的时候 没有把三方的类库打包的apk里面 。

在adt17 的版本之前 使用建立一个目录叫 lib 然后把jar包添加到环境变量
在adt17之后, 只需要建立一个叫libs的目录 ,把jar包放到目录里面就行了,adt会自动管理jar包的依赖,自动添加到环境变量.

adt会自动导入libs下的包。不需要再手动导入。问题完美解决

参考2:
http://blog.csdn.net/iamkila/article/details/7455423

解决方法一:

1, 在项目上单击右键,Properties---Java Build path----Libraries---remove掉之前添加的所有外部jar包,只留下两个自带的:Android x.x.x 和Android Dependencies。点击ok。第一步完成。

如图:

android的 adt 升级18后,使用三方jar包,报错:NoClassDefFound或VerifyError_第1张图片

变化:如果你已经移出了所有的外部jar包,Referenced Libraies文件夹消失。 

2,复制所要使用的jar包到此工程下的libs文件夹。如果项目中没有libs文件夹,手动新建:项目上单击右键,新建一个文件夹,命名为libs(注意必须命名为libs,否则会报错)

变化:Android Dependencies文件夹里自动出现了你要使用的所有jar包。

android的 adt 升级18后,使用三方jar包,报错:NoClassDefFound或VerifyError_第2张图片

运行ok。

注:如果之前就有lib包存放jar包,只需要按照步骤1,然后修改文件夹lib为libs即可。

解决方法二:

如果不建立libs文件,只是单纯的通过Add External JARs导入jar包,见下图

android的 adt 升级18后,使用三方jar包,报错:NoClassDefFound或VerifyError_第3张图片 

那么可以很轻松的解决这个问题。

点击Order and Export,选中你要使用的jar包,例如jsoup,点击ok。运行即可。

android的 adt 升级18后,使用三方jar包,报错:NoClassDefFound或VerifyError_第4张图片

原因:外部引入的jar包,虽然已经存在于项目中,但是实际的位置仍然在其他位置,如上图所示(我的项目在c盘,jar包在f盘)。以上两种方法都将jar包放入项目中。运行的时候,将jar包加入apk中。成功运行后,你可以观察下,apk是否比之前大了一些。

Plus:

如果执行上面两种方法之后,仍然有requires unavailable shared library的错误log提示,请打开AndroidManifest.xml文件。删除其中的<uses-library />配置。即可。

End

你可能感兴趣的:(android,jar,Build,工具,library,dependencies)