应用程序需要 Flutter 中的 Multidex 支持吗?

abd*_*nzi 22 gradle android-multidex flutter

我在 Flutter 中构建应用程序时遇到此错误。尽管我做了启用它所需的一切,但似乎没有启用 multidex 的问题。这是错误

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:mergeProjectDexDebug'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
   > com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
     Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes.
     Type androidx.activity.R$attr is defined multiple times: C:\Users\Abdul rehman\OneDrive\Desktop\CSC451\Capstone Project\harfanah\build\app\intermediates\project_dex_archive\debug\out\4b5c628c7fbb96e2839e63f71f8803802c039de25c33dd9c9475187dc45e6e1a_1.jar:classes.dex, C:\Users\Abdul rehman\OneDrive\Desktop\CSC451\Capstone Project\harfanah\build\app\intermediates\project_dex_archive\debug\out\9bd7ed05083b8d3edbf142363966d832d9f0694faefda4d175e3ad8ad18fc06d_1.jar:classes.dex

* 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 30s
[!] App requires Multidex support
    Flutter multidex handling is disabled. If you wish to let the tool configure multidex, use the --mutidex flag.
Exception: Gradle task assembleDebug failed with exit code 1
Exited (sigterm)
Run Code Online (Sandbox Code Playgroud)

我已经检查了所有的解决方案。启用 Multidex 支持并使用最新版本:

    defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "com.harfanahApplication.harfanah"
        minSdkVersion 21
        targetSdkVersion 32
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
        multiDexEnabled true
    }
.
.
.

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation("androidx.multidex:multidex:2.0.1")
}
Run Code Online (Sandbox Code Playgroud)

我还将这些添加到 gradle.properies

org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
android.enableJetifier=true
Run Code Online (Sandbox Code Playgroud)

但它仍然不起作用。有什么建议么?

Ant*_*ote 25

您是否尝试过“flutter clean”然后重建?您可以使用“flutter build --multidex”让 Flutter CLI 工具为您完成此操作。

  • `flutter build --multidex` 对我不起作用,你应该做的是 `flutter build apk --multidex` (10认同)

小智 18

当您拥有大量方法并超过 Dalvik 可执行文件 (DEX) 格式规定的 64k 方法限制时,Android 项目中通常需要 Multidex。在 Flutter 项目中,当使用大量插件或添加大量依赖项时,您可能会遇到此问题。以下是将 Multidex 添加到 Flutter 项目的方法:

  1. 在 VS code 或您喜欢的 IDE 中打开您的 Flutter 项目。
  2. 导航至android-> app-> build.gradle
  3. 在文件内android/app/build.gradle,将以下行添加到块中android
android {
    ...
    defaultConfig {
        ...
        multiDexEnabled true
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)
  1. 重新启动您的应用程序。


小智 17

使用flutter cleanflutter pub get

然后您将收到是否需要安装的通知。输入y(yes)。然后使用flutter run


Smu*_*ndo 11

我在 Mac M1(2021) 上遇到了同样的问题。为了在 Android 设备上进行调试,我稍微扩展了 @AntEdode 的解决方案:

\n
flutter build apk --multidex --debug\n
Run Code Online (Sandbox Code Playgroud)\n

在构建过程中,会弹出相同的错误,但是 SDK 现在会询问您是否要安装 multidex:

\n
[!] App requires Multidex support\n    Multidex support is required for your android app to build since the number of methods has exceeded 64k. You may pass the --no-multidex\n    flag to skip Flutter's multidex support to use a manual solution.\n\n    Flutter tool can add multidex support. The following file will be added by flutter:\n\n        android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java\n\nDo you want to continue with adding multidex support for Android? [y|n]: \n
Run Code Online (Sandbox Code Playgroud)\n

确认后 - 瞧:

\n
\xe2\x9c\x93  Built build/app/outputs/flutter-apk/app-debug.apk.\n
Run Code Online (Sandbox Code Playgroud)\n

要在模拟器上运行:

\n
flutter run --multidex   \n
Run Code Online (Sandbox Code Playgroud)\n


Raj*_*ahu 5

我直接在设备上调试时遇到类似的错误。由于它在 VS Code 调试控制台中显示错误,因此它没有显示启用 multidex 支持的选项。

没有终端用户界面无法提示

但如果你flutter run在终端/git-bash等中运行,它会提示你一个启用它的选项。启用后,应用程序将成功构建并安装。

在此输入图像描述


小智 5

flutter run --debug在 Android Studio 的终端中运行,然后选择一个 Android 设备。

系统将提示您启用 multidex 支持,请按 y。

Flutter 工具将启用 multidex 支持并重试构建,一切顺利!