<Android 基础(四十二)> MultiDex

来源:互联网 发布:淘宝怎么做手机上 编辑:程序博客网 时间:2024/06/04 19:23

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源码。

原创粉丝点击