MultiDex使用中导致的crash(VerifyError)问题解决方案
来源:互联网 发布:js构造函数prototype 编辑:程序博客网 时间:2024/05/16 18:42
关于问题描述
在项目中遇到一个奇葩的问题,多台测试机测试,其中有一台直接crash(点个名vivo的手机),并且报以前没有见到过的Error类型java.lang.VerifyError,下面是log截图:
在网上百度了一番之后,众说纷纭,现在马上都已经是2017年了,所以排除了一些关于eclipse的解决方案,我用的是AS,其中有两篇文章还是很有用的:
http://blog.csdn.net/zhuobattle/article/details/47153025
以及
http://blog.csdn.net/zhuobattle/article/details/52958364
好了,相面直接说说我的分析和解决方法了。
分析及解决方案
简单分析
首先看到log之后,log中报错的地方似乎和常见的错误不太一样,其中重要的信息有Could not find class,这是一个非常有效的信息,意思都明白,没有找打相关的类,why?我的这个项目可是一个已经上线的项目移植过来的,好吧,想了想,估计是项目第三方sdk比较多,导致程序又庞大了不少,原来程序就因为API数超过了64K,而分成了两个dex, 用的是MultiDex,最终导致crash!!!
解决方案
用MultiDex来突破64K的method id数量的限制,具体实现步骤如下:
1. 在Module的build.gradle里添加multiDexEnabled true
例如:
defaultConfig { applicationId "com.baidu.my" minSdkVersion 14 targetSdkVersion 24 versionCode 1 versionName "1.0" // dex突破65535的限制 multiDexEnabled true }
2. 接着在Module的build.gradle里添加
dependencies { compile 'com.android.support:multidex:1.0.1'}
3. 第三步有两种情况
1)如果你的apk没有定义application,则在AndroidManifest.xml里的application里做如下修改:
添加MultiDexApplication(因为是具体项目,这个方式并没有测试)
<application android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" android:name="android.support.multidex.MultiDexApplication" tools:replace="android:icon, android:name" >
2)第二种也就是大家最常用到的方式了,在自定义的application中复写方法,具体如下
@Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); }
结束
好了,至此,重新再在vivo上跑一遍,终于不crash了,如果你也遇到和我一样的问题,希望你也顺利解决哦。
- MultiDex使用中导致的crash(VerifyError)问题解决方案
- MultiDex使用方法及由此导致的crash、ANR问题解决方案
- iOS10 权限导致crash的问题解决方案
- Android中Multidex的使用
- ubuntu使用中遇到的问题解决方案
- android导致VFY(verifyerror)错误的一种情况
- 关于TimePicker导致FC的问题解决方案
- PreparedStatement的setString导致越界问题解决方案
- DMA导致的CACHE一致性问题解决方案
- dex分包方案概述与multidex包的配置使用
- dex分包方案概述与multidex包的配置使用
- c中字符串数组导致的crash
- SDK中使用GDI+出现的编译问题解决方案
- 使用URLHttpConnection访问中session的问题解决方案
- vS2013中使用 strcpy()会报错的问题解决方案
- robotium:tearDown中使用solo.finishOpenedActivities()会导致执行测试用例crash问题
- Android Multidex导致的App启动缓慢
- 自定义title 后导致的坐标无法居中 问题解决方案
- 教你如何破解zendstudio获得永久使用权
- 使用 Ultra Pull To Refresh 定制自己的下拉刷新头部
- SQL基础(2):数据查询
- Java输出系统当前的日期(年月日时分秒毫秒)
- bat批处理zip加密压缩
- MultiDex使用中导致的crash(VerifyError)问题解决方案
- xhtml中使用CDATA标记
- 十,Annotation
- IEEE802.11协议基础知识
- Vue.js 快速入门
- Centos7开放端口
- 蓝桥杯ALGO_03(k好数)
- rviz segmentation fault / corrupted double-linked list错误
- poj 3294 Life Forms (后缀数组)