Flutter를 접하고 실제로 무언가 결과물을 만들어내는 과정에서 상당히 많은 부분에서 놀라운 경험을 하고 있다.
물론 Native App만이 가진 조금 더 고급기능이거나 조금 더 빠른 퍼포먼스등은 당연히 처음부터 기대하지 않았다.
그런데 생각보다 그런 점들조차 단점으로 느껴지지 않을 만큼 충분히 좋은 퍼포먼스가 있는 것 같다.
그리고 왠만한 것들은 Package로 잘 만들어져 있다 보니 Native 로만 구현이 가능할 거라는 제약도 거의 못 느끼고 있다.
물론 아직까지는 그렇다.
그리고 Flutter에서 매우 놀라운 그리고 가장 훌륭하다고 생각되는 기능은 단연코 Hot reload 기능이다.
이건 정말 개발 퍼포먼스를 엄청나게 끌어올려준다.
그렇게 열심히 무언가 내가 원하는 것들을 하나하나 만들어가던 중...
flutter package 를 추가할 일이 있어 추가를 하다가 보니 갑자기 Debug Mode 수행 중에 오류가 나면서 실행이 안 되는 상황이 발생해 버렸다.
정말 어제까지만 해도 멀쩡했던 앱실행이 안 되는 상황...
게다가 Flutter 최강의 강점인 Hot Reload를 사용하지 못하는 상황이 돼버린;;;ㅠ
그래서 왜 이러나 하고 열심히 구글링 해서 답을 찾아 이렇게 기록으로 남겨둔다.
원인은 앱을 개발하면서 이것저것 Package들을 가져다 쓰다 보니 DEX에서 Method들을 담아서 빌드까지 할 공간이 부족해서 그렇다고...
Flutter 빌드 중 오류 해결방법 1
그리고 찾아낸 답은 생각보다 간단했다.
커맨드창에서 Flutter clean 해주고 put get 한 다음 다시 Flutter run을 해주면 끝.
PS D:\workspace_flutter\test_flutter> flutter clean;
PS D:\workspace_flutter\test_flutter> flutter pub get;
Resolving dependencies...
ffi 2.1.0 (2.1.2 available)
....(Put Get Log)....
test_api 0.6.1 (0.7.1 available)
PS D:\workspace_flutter\test_flutter> flutter run;
Launching lib\main.dart on moto g13 in debug mode...
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
ERROR:D8: Cannot fit requested classes in a single dex file (# methods: 82975 > 65536)
com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
The number of method references in a .dex file cannot exceed 64K.
Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html
at com.android.builder.dexing.D8DexArchiveMerger.getExceptionToRethrow(D8DexArchiveMerger.java:151)
at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:138)
....(Error Log)....
> Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 1m 4s
Running Gradle task 'assembleDebug'... 65.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
Do you want to continue with adding multidex support for Android? [y|n]: y
Multidex enabled. Retrying build.
Retrying Gradle Build: #1, wait time: 100ms
Building with Flutter multidex support enabled.
Running Gradle task 'assembleDebug'... 25.6s
√ Built build\app\outputs\flutter-apk\app-debug.apk.
Installing build\app\outputs\flutter-apk\app-debug.apk... 8.4s
Syncing files to device moto g13... 145ms
그렇게 Flutter run을 수행해 주면 에러로그가 주르륵 나오면서 마지막에 무언가를 추가하겠냐는 물음이 나오고
거기서 y를 선택해 주면 파일이 하나 자동생성되는 걸 확인할 수 있다.
Flutter 빌드 중 오류 해결방법 2
가장 일반적으로 사람들이 얘기하는 해결방법은 dependency에 multiDex 옵션을 true로 설정해 주는 방식이었다.
다만 첫 번째 방법으로 해결을 하다 보니 이 방법은 다음에 시도해봐야 할 것 같다ㅎㅎ
- android > app > build.gradle 파일을 열고
- defaultConfig 안에 multiDexEnabled true라고 한 줄을 추가
- 그리고 다시 빌드하면 된다고 한다.
'IT, Software > Android, Flutter' 카테고리의 다른 글
Flutter - 맥북 Xcode iOS Emulator 실행오류 해결하기 (1) | 2024.06.28 |
---|---|
Flutter 빌드에러 The binary version of its metadata is 1.8.0, expected version is 1.6.0. 해결방법 (0) | 2024.06.22 |
Flutter - Navigator Route 화면이동 (0) | 2024.04.25 |
맥북 M2 플루터(Flutter) 설치하기, Cocoapods 설치 오류 해결하기 (2) | 2024.03.23 |
Flutter - Toast 팝업으로 메세지 띄우기 (0) | 2024.02.15 |
댓글