ERROR:D8: Cannot fit requested classes in a single dex file (# methods: 93246 > 65536)
com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: 
The number of method references in a .dex file cannot exceed 64K.

firestore를 사용하기 위해 cloud_firestore라이브러리를 다운받고 앱을 실행할 때 발생한 오류.

 

단일 dex파일에 있을 수 있는 최대 메서드 수가 64k인데, 앱에서 64k이상의 메서드로 빌드를 하려고 해서 생긴 오류이다. 이 오류를 해결하려면 메서드를 여러 dex파일로 분할해야한다. (이러한 기능을 multidex라고 한다.)

 

 

multidex기능을 활성화하자.

 

android/app/build.gradle에 가서 아래 코드를 추가한다.

android{
	defaultConfig {
    	// 추가
        multiDexEnabled true 
    }
}

dependencies {

	// androidx 사용하면 첫번째 줄, 사용안하면 두번째 줄 입력
    implementation "androidx.multidex:multidex:2.0.1"
    implementation "com.android.support:multidex:1.0.3"
}

 

사용하는 sdk버전이 21이상이면 별다른 작업 없이

minSdkVersion 값을 21로 변경하면 된다. (나는 이렇게 해결했음)

minSdkVersion 21

 

 

 

 

참고

https://developer.android.com/studio/build/multidex?hl=ko 

 

메서드가 64K개를 초과하는 앱에 관해 멀티덱스 사용 설정  |  Android 개발자  |  Android Developers

앱이 여러 DEX 파일을 빌드하고 읽을 수 있도록 하는 멀티덱스 앱 구성의 사용 방법에 관해 알아보세요.

developer.android.com

https://stackoverflow.com/questions/48249633/errorcannot-fit-requested-classes-in-a-single-dex-file-try-supplying-a-main-dex

 

Error:Cannot fit requested classes in a single dex file.Try supplying a main-dex list. # methods: 72477 > 65536

I want to add fused location services but it shows me some error. Help me. apply plugin: 'com.android.application' android { compileSdkVersion 26 buildToolsVersion "27.0.1"

stackoverflow.com

(androidx는 Android Support Library의 문제점(유지보수, 버전관리)을 개선하고, 새로운 기능을 추가하여 출시된 새로운 라이브러리라고 함)