1. 前言
最近做项目开发的时候,遇到一个问题,NoClassDef,NoMethod之类的错误,但是把log往前看,会发现一些Dalvik的一些报错,看到这些log之后,就会觉得后面的什么方法找不到,类没有定义什么的错误真是的应该出现,那么这些Dalvik的错误怎么解释呢?
因为类似的报错只出现在了一个同事的手机上,而且是KK版本,比较老。介绍下我的分析思路:
1. 确定问题发生位置,注释掉(并解决因注释引起的编译错误)—> Defeat
2. 因为是KK版本,调整minSDK到19 —> Defeat
3. 删除或者更新引起问题的jar包 —> Defeat
4. 考虑到MultiDex在Android5.0 以后默认支持,为兼容旧版本,手动兼容一下
————————>Victory
2. 配置MultiDex
Android5.0及以上版本默认支持MultiDex
2.1 修改build.gradle
android {
compileSdkVersion 21
buildToolsVersion "21.1.0"
defaultConfig {
...
minSdkVersion 14
targetSdkVersion 21
...
// Enabling MultiDex support.
multiDexEnabled true
}
...
}
dependencies { compile 'com.android.support:multidex:1.0.1'
}
2.2 修改application
三种方法
2.2.1 在AndroidManifest.xml的application中声明android.support.MultiDex.MultiDexApplication
2.2.2 让自己的application类继承MultiDexApplication;
2.2.3 重写attachBaseContext()方法
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
3. 推荐文章
更多关于MultiDex可以查阅
美团技术沙龙关于分包的博客
或者直接查看MultiDex源码。
作者:poorkick 发表于2017/9/12 21:23:09 原文链接
阅读:256 评论:0 查看评论