서론
6일 차 공부를 하는 중에 발생하게 된 에러입니다.
코드팩토리님의 책을 보면서 공부하는 중인데 11 챕터를 진행하다가 발생하였습니다.
가상머신에 빌드를 시도한 후 다음과 같은 에러가 발생하게 되었습니다.
발생한 에러를 해결하는 과정과 해결 방법을 이야기해볼 예정입니다.
본론
에러 해결 과정
ERROR:D8: Cannot fit requested classes in a single dex file (# methods: 67230 > 65536)
com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
The number of method references in a .dex file cannot exceed 64K.
--- 에러 생략 ---
--- 최하단 ---
BUILD FAILED in 3s
[!] App requires Multidex support
Multidex support is required for your android app to build since the number of methods has exceeded 64k. See https://docs.flutter.dev/deployment/android#enabling-multidex-support for more information. You may pass the --no-multidex flag to skip Flutter's multidex support to use a manual solution.
Flutter tool can add multidex support. The following file will be added by flutter:
android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java
cannot prompt without a terminal ui
Error: Gradle task assembleDebug failed with exit code 1
보통 에러가 발생하면 처음 공부하시는 분들은 책을 그대로 따라 했는데 왜 에러가 발생하지 라는 방식으로 당황할 수 있습니다.
하지만 저희가 생각하는 것 이상으로 에러로그에 많은 힌트가 존재합니다.
위에 나와있는 에러코드 부분을 확인하면
- .dex file cannot exceed 64K.
- App requires Multidex support
Multidex support is required for your android app to
이런 식으로 보이는 키워드가 있습니다. 해당 키워드 들을 그대로 복사해서 구글에 검색합니다.
검색하는데 저희가 사용 중인 Flutter라는 키워드도 추가로 넣어서 검색하면 더 좋습니다.
EX) [ Flutter App requires Multidex support ] 이런 식의 내용으로 검색
다양한 구글링 결과 미리 해당 에러를 해결하신 분들이 정리해 주신 글들이 나와 있습니다.
참고해서 진행하면 생각보다 쉽게 해결 가능할 수 있습니다.
에러 해결 방법
1. 프로젝트 경로 / Android / app / src / build.gradle 파일에 접근합니다.
* Android / build.gradle 파일과는 다른 파일입니다.
2. 코드를 내리다 보면 defaultConfig { --- } 부분이 있습니다. 해당 부분 마지막 줄에 다음 코드를 추가합니다.
multiDexEnabled true
3. 조금 더 코드를 내리다 보면 dependencies {} 이런 식으로 되어 있는 부분에 사이에 다음 코드를 추가합니다.
implementation 'com.android.support:multidex:2.0.1'
어려우신 분들을 위해 코드 이미지를 추가합니다. (하단 부분에 노란색으로 강조했습니다.)
프로젝트 경로 / Android / app / src / build.gradle
작성 완료 후 다시 빌드하면 자연스럽게 버그가 해결되었습니다.
모두 수고하셨습니다 :)