Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

D8: Cannot fit requested classes in a single dex file

Tags:

I am trying to add the below dependencies:

  firebase_auth: ^0.14.0+5   google_sign_in: ^4.0.7   cloud_firestore: ^0.12.9+5   fluttertoast: ^3.1.3   image_picker: ^0.6.1+8   shared_preferences: ^0.5.3+4   firebase_storage: ^3.0.6   cached_network_image: 2.0.0-rc.1   firebase_messaging: 6.0.13   flutter_local_notifications: 1.4.0   photo_view: ^0.5.0 

I found this error:

D8: Cannot fit requested classes in a single dex file (# methods: 85948 > 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:131)         at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:118)         at com.android.build.gradle.internal.transforms.DexMergerTransformCallable.call(DexMergerTransformCallable.java:102)         at com.android.build.gradle.internal.tasks.DexMergingTaskRunnable.run(DexMergingTask.kt:444)         at com.android.build.gradle.internal.tasks.Workers$ActionFacade.run(Workers.kt:335)         at org.gradle.workers.internal.AdapterWorkAction.execute(AdapterWorkAction.java:50)         at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:47)         at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1$1.create(NoIsolationWorkerFactory.java:65)         at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1$1.create(NoIsolationWorkerFactory.java:61)         at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:98)         at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.execute(NoIsolationWorkerFactory.java:61)         at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)         at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)         at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)         at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)         at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)         at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)         at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)         at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)         at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)         at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)         at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:56)         at org.gradle.workers.internal.DefaultWorkerExecutor$3.call(DefaultWorkerExecutor.java:215)         at org.gradle.workers.internal.DefaultWorkerExecutor$3.call(DefaultWorkerExecutor.java:210)         at java.util.concurrent.FutureTask.run(FutureTask.java:266)         at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:215)         at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164)         at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:131)         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)         at java.util.concurrent.FutureTask.run(FutureTask.java:266)         at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)         at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)         at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)         at java.lang.Thread.run(Thread.java:748) Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete         at com.android.tools.r8.utils.t.a(:55)         at com.android.tools.r8.D8.run(:11)         at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:116)         ... 34 more Caused by: com.android.tools.r8.utils.AbortException: Error: null, Cannot fit requested classes in a single dex file (# methods: 85948 > 65536)         at com.android.tools.r8.utils.Reporter.a(:21)         at com.android.tools.r8.utils.Reporter.a(:7)         at com.android.tools.r8.dex.VirtualFile.a(:33)         at com.android.tools.r8.dex.VirtualFile$h.a(:5)         at com.android.tools.r8.dex.ApplicationWriter.a(:13)         at com.android.tools.r8.dex.ApplicationWriter.write(:35)                 at com.android.tools.r8.D8.d(:44)         at com.android.tools.r8.D8.b(:1)         at com.android.tools.r8.utils.t.a(:23)         ... 36 more   FAILURE: Build failed with an exception.  * What went wrong: Execution failed for task ':app:mergeDexDebug'. > A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade    > 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  * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.  * Get more help at https://help.gradle.org  BUILD FAILED in 51s Running Gradle task 'assembleDebug'... Running Gradle task 'assembleDebug'... Done                        53.6s [!] The shrinker may have failed to optimize the Java bytecode.     To disable the shrinker, pass the `--no-shrink` flag to this command.     To learn more, see: https://developer.android.com/studio/build/shrink-code Exception: Gradle task assembleDebug failed with exit code 1 

and this is my full pubspec.yaml

name: aradi_online_vtwo description: A new Flutter project. https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html version: 1.0.0+1  environment:   sdk: ">=2.7.0 <3.0.0"  dependencies:   flutter:     sdk: flutter   provider: ^3.0.0   intl: ^0.15.8   flutter_speed_dial: ^1.2.1   font_awesome_flutter: ^8.5.0   smooth_star_rating: ^1.0.3   firebase_auth: ^0.14.0+5   google_sign_in: ^4.0.7   cloud_firestore: ^0.12.9+5   fluttertoast: ^3.1.3   image_picker: ^0.6.1+8   shared_preferences: ^0.5.3+4   firebase_storage: ^3.0.6   cached_network_image: 2.0.0-rc.1   firebase_messaging: 6.0.13   flutter_local_notifications: 1.4.0   photo_view: ^0.5.0    # The following adds the Cupertino Icons font to your application.   # Use with the CupertinoIcons class for iOS style icons.   cupertino_icons: ^0.1.2  dev_dependencies:   flutter_test:     sdk: flutter   # For information on the generic Dart part of this file, see the # following page: https://www.dartlang.org/tools/pub/pubspec  # The following section is specific to Flutter. flutter:    # The following line ensures that the Material Icons font is   # included with your application, so that you can use the icons in   # the material Icons class.   uses-material-design: true    # To add assets to your application, add an assets section, like this:   assets:     - assets/images/     - assets/design_course/     - assets/fitness_app/     - assets/hotel/    # An image asset can refer to one or more resolution-specific "variants", see   # https://flutter.dev/assets-and-images/#resolution-aware.    # For details regarding adding assets from package dependencies, see   # https://flutter.dev/assets-and-images/#from-packages    # To add custom fonts to your application, add a fonts section here,   # in this "flutter" section. Each entry in this list should have a   # "family" key with the font family name, and a "fonts" key with a   # list giving the asset and other descriptors for the font. For   # example:   fonts:     - family: WorkSans       fonts:         - asset: assets/fonts/WorkSans-Regular.ttf         - asset: assets/fonts/WorkSans-Medium.ttf           weight: 500         - asset: assets/fonts/WorkSans-SemiBold.ttf           weight: 600         - asset: assets/fonts/WorkSans-Bold.ttf           weight: 700     - family: Roboto       fonts:         - asset: assets/fonts/Roboto-Bold.ttf         - asset: assets/fonts/Roboto-Regular.ttf         - asset: assets/fonts/Roboto-Medium.ttf           weight: 400   # For details regarding fonts from package dependencies,   # see https://flutter.dev/custom-fonts/#from-packages 

So how can I solve this problem?

like image 836
Mahmoud Harooney Avatar asked Jun 05 '20 20:06

Mahmoud Harooney


1 Answers

Add multiDex to your app-level build.gradle file. Under defaultConfig add this line

multiDexEnabled true 

Then in dependencies add multidex and check versions

implementation 'androidx.multidex:multidex: 2.0.1' 
like image 128
king mort Avatar answered Sep 19 '22 03:09

king mort