美文网首页
Multidex(分包)实现简要分析

Multidex(分包)实现简要分析

作者: 涛涛123759 | 来源:发表于2018-04-27 09:55 被阅读29次

    1、Multidex的产生

    在android5.0之前,每一个android应用中只会含有一个dex文件,但是因为Android系统本身的BUG,使得这个dex的方法数量被限制在65535之内,这就是著名的"64K(641024)"*事件。为了解决这个问题,Google官方推出了这个类似于补丁一样的support-library。关于这个库的详细使用,可以参考官方文档,当然使用起来也会有些坑的,美团填坑记或者这位老兄。使用这个库后,我们的APP不再只会仅有一个dex文件,可能会产生多个dex文件,这样就避免了64K问题。

    2、使用方式

    用Gradle配置使用Multidex

    Android 的 Gradle插件在 Android Build Tool 21.1开始就支持使用multidex了。

    设置你的应用程序开发项目中使用multidex配置,要求你做出一些修改您的应用程序开发项目。

    • 修改Gradle的配置,支持multidex
    • 修改你的manifest。让其支持multidexapplication类
    • 修改Gradle的build如下:
     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.0'
    }
    

    对于Multidex的使用,大致有以下几种方式
    直接继承MultiDexApplication

    public class MyApplication extends MultiDexApplication{
          // ...........
    }
    

    直接调用MultiDex.install(Context);

    public class MyApplication extends Application{
        public void onCreate(){
            MultiDex.install(this);
        }
    }
    

    这两种使用方式,其实本质是一样的,都是通过MultiDex.install(this)来完成dex的加载,看看MultiDexApplication的实现:

    public class MultiDexApplication extends Application {
       @Override
       protected void attachBaseContext(Context base) {
          super.attachBaseContext(base);
          MultiDex.install(this);
       }
    }
    

    3、错误

    • 一、错误类型是: Could not resolve com.android.support:multidex:1.0.2 时,解决方法如下
    buildscript {
        repositories {
            jcenter()
              mavenLocal()
              google()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.0.0'
        }
    }
    
    allprojects {
        repositories {
            jcenter()
            google()
        }
    }
    

    相关文章

      网友评论

          本文标题:Multidex(分包)实现简要分析

          本文链接:https://www.haomeiwen.com/subject/nkxblftx.html