java.lang.VerifyError解决方案

最近开发公司一个项目,融云的demo接入。android5.0的手机大部分可以正确使用,其他之下的手机会报java.lang.VerifyError.。之前以为是融云的兼容问题,后来把融云屏蔽掉,后面又接连报错,才意思到是我项目出问题,百度了一些资料,才发现java.lang.VerifyError有几种情况会报错;

google的官方说法是:java.lang.VerifyError是adt与jdk的不同版本的不同,进入架包之类的会报错各种不同的错误,是无法机器无法解决的。

解决方法一

网上的一些解释是:app项目过大,必须分成2个Dex文件,android studio才会运行正常。


但是,不要忘记,这只是让你app的编辑文件分成2分,你软件运行有可能只运行第一个软件,它是默认运行的,有可能会报VerifyError。

Apk在运行的时候,有一个dexpathlist,而Multidex的源码中,会根据你的系统版本号对dexpathlist做修改,将所有的dex都添加到dexpathlist中.

接下来集成有两个步骤:

一. 从sdk\extras\android\support\multidex\library\libs 目录将android-support-multidex.jar导入工程中

二. 如果你的工程中已经含有Application类,那么让它继承android.support.multidex.MultiDexApplication类,

     如果你的Application已经继承了其他类并且不想做改动,那么还有另外一种使用方式,覆写attachBaseContext()方法:



这样才能让你的两个dex文件合并在一起,不会报异常了。

解决方法二:

我只说使用android studio的情况,有可能是你的升级android studio2.0出现的问题 Android Studio 2.0带来了很多新功能和优化,其中最让我兴奋的是Instant Run和Gradle编译速度的提升,虽然预览版bug多,但是程序员怕这个?

网上处理的方法是:解决方法就是把Gradle版本改回去,改成1.5版本比较稳定,不会出现问题

解决方法三:

最后一种是,我也没有碰见过,但是我看着比较靠谱,所有写下来,哈哈  我的记性比较差,请原谅我这个智障哦/(ㄒoㄒ)/~~。

你的LibRARY架包包含的.class源文件与你自己module内的一个架包一个源文件.class文件冲突,所有你可以通过ctrl+N,可以在android studio中遍历你的.class源文件,删除其中一个,运行是ok的。



由于是第一次写,有点没头没脑,只要是想给那些遇见跟我一样问题的人  一些解决方案 O(∩_∩)O哈哈~,不过这个问题我难了一个月,头疼死了。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值