Quantcast
Channel: CSDN博客移动开发推荐文章
Viewing all articles
Browse latest Browse all 5930

MultiDex

$
0
0

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 查看评论

Viewing all articles
Browse latest Browse all 5930

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>