解决“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"后也能运行,这里我有点纳闷,不知道啥原因,知道原因的朋友可以发出来大家学习学习。



个人网站:分享客(https://sharerdiary.com/)
这个网站经常分享一些免费视频、免费音乐、实用工具和各种福利,感兴趣的朋友可以看看!

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



你可能感兴趣的:(Android,Android疑难杂症)