美文网首页
MultiDex浅聊

MultiDex浅聊

作者: 初心一点 | 来源:发表于2019-02-23 13:38 被阅读1次

    先简单了解下.apk和.dex

    • .apk Android安装包
    1. AndroidManifest.xml配置文件
    2. META-INF 签名信息
    3. classes.dex Java字节码文件
    4. res 资源文件
    5. resources.arsc 二进制配置文件
    • .dex Android Dalvik虚拟机执行文件

    什么是MultiDex?

    1. Android中一个Dex文件最多存储65536个方法,也就是一个short类型范围。但随着应用方法数量的不断增加,当Dex文件突破65536方法数量时,打包时就会抛出异常
    2. 为解决该问题,Android5.0时Google推出了官方解决方案:MultiDex
    3. 打包时将一个应用分成多个dex,例:classes.dex、classes2.dex...,加载时把这些dex都追加到DexPathList对应的数组中,这样就解决了方法数的限制
    4. Andorid 5.0之后,ART虚拟机天然支持MultiDex
    5. Andorid 5.0之前,系统只加载一个主dex,其它的dex采用MultiDex手段来加载

    如何使用?

    1. build.gradle配置
    android {
        defaultConfig {
            ...
            // Enabling multidex support.
            // 如果是android 5.0以上的设备,只需要设置为multiDexEnabled true
            // minSdkVersion 为 20 或更低值,还需执行下面的2、3步
            multiDexEnabled true
        }
        ...
    }
    
    dependencies {
    compile 'com.android.support:multidex:1.0.0'
    }
    
    1. Manifest声明修改,如果有自己的Application,继承MulitDexApplication
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" ...>
    <application
    ...
    android:name="android.support.multidex.MultiDexApplication">
    ...
    </application>
    </manifest>
    
    1. 重写 Application的attachBaseContext()这个方法
    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);     
    }
    

    ok了

    参考链接

    1. https://www.jianshu.com/p/a5353748159f
    2. https://blog.csdn.net/xiaxl/article/details/83089944

    相关文章

      网友评论

          本文标题:MultiDex浅聊

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