You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter开发Gradle编译遇Multidex报错:类重复定义

解决Flutter Gradle编译时的Multiple Dex Files冲突问题

这个Dex冲突问题我在Flutter项目里踩过好几次坑!核心原因是你的项目里重复定义了com/google/android/gms/internal/zzcew这个类,一般是因为不同的Flutter插件引入了版本不一致的Google Play Services依赖导致的。下面是几个亲测有效的解决步骤:

  • 统一Google Play Services依赖版本
    很多Flutter插件会各自依赖不同版本的Google服务库,这是冲突的重灾区。你可以在项目根目录的android/build.gradle中添加全局版本控制,强制所有插件使用同一个版本的依赖:

    subprojects {
        project.configurations.all {
            resolutionStrategy.eachDependency { details ->
                if (details.requested.group == 'com.google.android.gms'
                    && !details.requested.name.contains('multidex') ) {
                    details.useVersion '17.0.0' // 建议使用当前稳定兼容的版本,可根据需要调整
                }
            }
        }
    }
    
  • 排查并移除重复依赖
    先通过flutter pub deps命令生成项目的依赖树,仔细查看哪些插件重复引入了com.google.android.gms相关的包。如果某个插件不需要Google服务支持,可以在android/app/build.gradle中排除它的对应依赖:

    implementation(project(':problematic_plugin')) {
        exclude group: 'com.google.android.gms'
    }
    
  • 启用Multidex(适用于方法数超限场景)
    如果你的项目代码和依赖的方法总数超过了65536的限制,也会触发Dex合并错误。这种情况下需要开启Multidex支持:

    1. 在android/app/build.gradle的defaultConfig块中添加:multiDexEnabled true
    2. 引入Multidex库:implementation 'com.android.support:multidex:1.0.3'
    3. 自定义Application类继承MultiDexApplication,或者在现有Application的attachBaseContext方法中调用MultiDex.install(this)
  • 清理缓存后重新构建
    有时候旧的Gradle缓存会残留冲突的依赖文件,执行以下命令彻底清理后再重新构建:

    flutter clean
    rm -rf android/.gradle
    rm -rf ~/.gradle/caches
    flutter pub get
    flutter run
    

内容的提问来源于stack exchange,提问作者SpoonerNZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:27:39