解决“Cannot fit requested classes in a single dex file”的问题

问题描述

编译时出现Cannot fit requested classes in a single dex file (# methods: 73436 > 65536)的问题。

原因:项目貌似有点大,已经超过65k个方法。一个dex已经装不下了,需要个多个dex,也就是multidex ,因为Android系统定义总方法数是一个short int,short int 最大值为65536。



解决办法

①、在 app 的 build.gradle 文件中

android {
    defaultConfig {
   		 ···
        // 这里添加
        multiDexEnabled true
    }
}

dependencies {
    // 引入support支持库的multidex库
    implementation 'com.android.support:multidex:1.0.3'
    //或androidx支持库的multidex库
    implementation 'androidx.multidex:multidex:2.0.1'
}

②、在自定义的 application 中初始化 MultiDex

import android.app.Application;
import android.content.Context;

import androidx.multidex.MultiDex;

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

③在AndroidManifestapplication标签内修改android:name

<application   
	······ 
	android:name=".MyApplication" >   
    ······
</application>

如果还不行,则修改android:nameandroid:name="androidx.multidex.MultiDexApplication"再编译。我就是遇到这个问题,一开始使用android:name=".MyApplication"编译不行,然后使用android:name="androidx.multidex.MultiDexApplication"再编译就正常运行了,接着我再次改为android:name=".MyApplication"后也能运行,这里我有点纳闷,不知道啥原因,知道原因的朋友可以发出来大家学习学习。



您的关注和点赞是我分享的动力,如有帮助请勿吝啬!ヽ( ̄▽ ̄)ノ



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值