虚拟机相关

2019-08-04-Android 64K方法数限制问题总结

2019-08-04  本文已影响0人  王元

1,64k限制的原因

Android的 APK文件本质是一个压缩文件,它里面包含的classes.dex文件是可执行的Dalvik字节码文件,这个dex文件存放的是所有编译过后的Java代码。Dalvik可执行文件规范限制了单个dex文件最多能引用的方法数是65536个。这其中包括了Android Framwork,App自身和第三方库的方法

2,使用MultiDex解决64k限制问题

3,如何避免出现64k方法数限制

4,配置MultiDex

由于各种原因,我们没有办法将方法数降低到64k以下,那么就之后使用Google的MultiDex解决方案。Android的Gradle,首先需要配置Application Molule的build.gradle,使用MultiDex函数库的依赖,同时使用MultiDex

android {
    .....
    defaultConfig {
        .....
        //使用MultiDex支持
        multiDexEnabled true
    }
    .....
}

dependencies {
    .....
    implementation "com.android.support:multidex:1.0.1"
}

然后在自定义的Application类中,做如下声明

protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}

4, MultiDex的限制

5,开发阶段优化MultiDex的构建

MultiDex之所以会增加显著的构建时间,原因在于构建系统需要经过复杂的计算决定哪些类要包含到主dex文件中,哪些类可以包含在从Dex文件中

为了解决这个问题,我们可以在gradle中配置开发阶段使用的sdk版本和生产环境使用的sdk版本,提升开发阶段的的效率

productFlavors {
    dev {
        minSdkVersion(21)
    }
    prod {
        minSdkVersion(rootProject.ext.android.minSdkVersion)
    }
}
上一篇 下一篇

猜你喜欢

热点阅读