Friday, December 25, 2020

com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:

  • ประเด็นคือ Flutter เพิ่ม lib เกียวกับ QRCode Scanner

/** qrcode & barcode scanner */

/** pubspec.yaml */

qrscan: ^0.2.21

image_gallery_saver: ^1.6.7

image_picker: ^0.6.7+17

permission_handler: ^5.0.1+1

url_launcher: ^5.7.10

  • แค่เพิ่มใน pubspec บันทึก futter pub get จากนั้นจะสั้งรัน ทั้งที่เรายังไม่ได้ import เลย

import 'package:image_gallery_saver/image_gallery_saver.dart';

import 'package:image_picker/image_picker.dart';

import 'package:permission_handler/permission_handler.dart';

import 'package:qrscan/qrscan.dart' as scanner;

  • มันขึ้น error ซะงั้น

D8: Cannot fit requested classes in a single dex file (# methods: 76808 > 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)

.................................................................................

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 15s

[!] 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

  • ตอนแรกนึกว่าเราไปแก้ไข build.gradle มั่วซะอีก แต่ไปเทียบกับโปรเจคอื่นก็เหมือนกันนะ 
  • ปัญหานี้น่าจะเกี่ยวกัน  project นี้ พัฒนาด้วย sdk ที่มีการ update น่าจะประมาณนั้น

Solved

  • ที่ไฟล์ android/app/build.gradle เพิ่ม multiDexEnabled true ใน defaultConfig

defaultConfig {

        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).

        applicationId "juuier.my_smart_app"

        minSdkVersion 16

        targetSdkVersion 28

        versionCode flutterVersionCode.toInteger()

        versionName flutterVersionName

        multiDexEnabled true

    }

Ref

  • https://stackoverflow.com/questions/46977267/com-android-builder-dexing-dexarchivemergerexception-unable-to-merge-dex-andr 

Popular Posts