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

Flutter引入Java WiFi插件出现mergeDexDebug类重复编译错误求助

问题成因
  1. 直接原因是Dex合并阶段出现重复类冲突:错误提示com.ly.wifi.WifiDelegate$NetworkChangeReceiver类重复存在,说明项目中存在两份相同全限定名的类定义。
  2. 常见触发场景:
    • 你既在pubspec.yaml中引入了该自研WiFi插件的依赖,又手动将WifiDelegate.java、WifiPlugin.java两个源码文件复制到了主工程app/src/main/java/com/ly/wifi目录下,两处的类完全重复导致冲突。
    • 本地libs目录下存在包含该WiFi模块的aar/jar包,同时又保留了同名源码文件,二者重复打包。
  3. 你遇到的--no-shrink、--stacktrace参数不存在的问题,是参数传递位置错误:--no-shrink是Flutter命令的参数,需要加在flutter run或flutter build之后,不是传给Gradle的参数;--stacktrace是Gradle参数,需要通过--android-args透传,完整写法为flutter build apk --android-args="--stacktrace"。
解决方案
  • 排查并删除重复类
    优先删除你手动复制到主工程app/src/main/java/com/ly/wifi目录下的两个Java文件,如果你已经在pubspec中引入了该WiFi插件依赖,直接使用插件自带的实现即可,无需重复添加源码。如果没有引入插件依赖,就检查app/libs目录是否有包含该WiFi模块的依赖包,删除重复的依赖包,源码和依赖包二选一保留即可。
  • 修复Dart代码语法错误
    你提供的Dart代码中有两处明显笔误,将错误的end Map修正为Map即可:
    // 错误写法
    end Map<String, dynamic> params = {
    // 修正后写法
    Map<String, dynamic> params = {
    
  • 清理重建项目
    依次执行以下命令清理缓存后重新编译:
    flutter clean
    rm -rf android/.gradle
    flutter pub get
    # 运行项目并关闭压缩
    flutter run --no-shrink
    
  • 可选:开启MultiDex适配
    如果上述操作后仍存在Dex合并问题,在android/app/build.gradle中开启MultiDex支持:
    在defaultConfig块中添加配置:
    defaultConfig {
        // 其他原有配置
        multiDexEnabled true
    }
    
    然后在dependencies块中添加依赖:
    dependencies {
        // 其他原有依赖
        implementation "androidx.multidex:multidex:2.0.1"
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:48:02