반응형
기존에 문제 없이 잘 사용하던 프로젝트가 몇가지 수정을 하고 rebuild를 돌리는 순간 에러가 발생했다. 이건 또 무슨 에러지? 급하게 스텍 오버플로우 및 안드로이드 Document를 확인하여 해결방법을 찾아보았다.
출력되는 에러 메세지는 아래와 같다.
Cannot fit requested classes in a single dex file (# methods: 74581 > 65536)
안드로이드 설정은 minSdkVersion 16, AndroidX를 사용하고 있으므로, defaultConfig 설정과 dependencies 설정을 추가했다. 안드로이드는 버전에 따른 설정 호환이 참 까다로운것 같다. (뭔가 쉽게 깨지는 계란같은 느낌이 들어서 수정하면서 괜시리 걱정이 되는 부분들이 있었다.)
위와 같은 에러가 발생하는 원인은, 안드로이드 apk파일은 dex파일 형식의 실행 가능한 바이트 코드 파일이 있고 파일 내 참조 가능한 메서드 갯수가 65,536으로 제한된다. 그런데 진행중인 프로젝트 내 추가하려는 라이브러리가 포함되면서 dex파일 내 메서드 갯수가 초과되어 에러가 발생했다. 그래서 multiDexEnabled true와 dependencies에서 dex 라이브러리를 추가해주어 문제를 해결합니다.
build.gradle 파일
android {
compileSdkVersion 30
buildToolVersion "30.0.3"
defaultConfig {
applicationId "com.example.project"
minSdkVersion 16
targetSdkVersion 30
versionCode 1
versionName "1.0"
multiDexEnabled true
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}
dependencies {
implementation 'androidx.multidex:multidex:2.0.1'
}
이렇게 설정하면 리빌드시 발생했던 에러가 해결되는 것을 확인 할 수 있다.
참고
https://developer.android.com/studio/build/multidex#groovy
반응형
댓글