android 完美解决Android Studio中类和方法数大于65536

阿木木 阿木木 | 22 | 2022-09-21

问题:

相信大家在做项目中随着项目引入的依赖和库越来越多,就会遇到这个问题了:类数 + 方法数 +属性数 > 65536 。
今天,我们就来解决它!

原因:

要解决问题首先要弄明白问题为什么发生。65536是什么样的数?2的16次方或者说64KB。
原来,在Android中,一个APP的的代码都在baiDex文件中。当Android启动应用的时候,只会在第一次加载Dex时使用DexOpt的工具优化Dex。但是在Android系统中,DexOpt会把方法数,属性数和类数的id检索起来,存在一个链表结构里面。可是这个链表的长度是用一个short类型来保存的,这就使得方法数id不能超过65535。
MultiDex

为解决该问题,Android5.0时Google推出了官方解决方案:MultiDex。
打包时,把一个应用分成多个dex,例:classes.dex、classes2.dex、
classes3.dex…,加载的时候把这些dex都追加到DexPathList对应的数组中,
这样就解决了方法数的限制。

Andorid 5.0之后,ART虚拟机天然支持MultiDex,Andorid 5.0之前,系统只加载一个主dex,其它的dex采用MultiDex手段来加载。

解决方法

第一步:添加配置和依赖(mudule下build.gradle)
(1)、配置

defaultConfig {
    multiDexEnabled true
}

(2)、依赖

//方法数+类数>65536解决办法
implementation 'com.android.support:multidex:1.0.3'

第二步:新建app包并自定义Application类
继承自:MultiDexApplication

/**
 * @describe  //解决项目 类+方法数>65536 的bug问题
 */
public class WanAdroidApplication extends MultiDexApplication {
    @Override
    public void onCreate() {
        super.onCreate();
        MultiDex.install(this); //必须
    }
}

第三步:更改AndroidManifest.xml
将application下的name值更改为你刚自定义的app包下的application类。

<application
        android:name=".app.WanAdroidApplication">
</application>

然后运行一下,又可以愉快的编码了!!!
到这里就结束啦。

文章标签: Android
推荐指数:

真诚点赞 诚不我欺~

android 完美解决Android Studio中类和方法数大于65536

点赞 收藏 评论