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

添加多个Flutter库模块因重复类导致构建失败

构建失败:重复类io.flutter.plugins.GeneratedPluginRegistrant

构建失败日志

gw assembleDebug --scan

> Task :app:checkDebugDuplicateClasses FAILED

FAILURE: Build failed with an exception.

* 问题原因:
执行任务 ':app:checkDebugDuplicateClasses' 失败。
> 执行 com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable 时发生错误
   > 在模块 flutter_debug-1.0-runtime (com.example.a.library_a:flutter_debug:1.0) 和 flutter_debug-2.0-runtime (com.example.b.library_b:flutter_debug:2.0) 中发现重复类 io.flutter.plugins.GeneratedPluginRegistrant

     请查看文档了解如何修复依赖解析错误。

复现步骤

  • 创建Flutter模块library_a:
flutter create -t module --org com.example.a library_a
cd library_a
flutter pub add android_intent_plus
flutter build aar
  • 创建Flutter模块library_b:
cd ..
flutter create -t module --org com.example.b library_b
cd library_b
flutter pub add android_intent_plus
  • 打开library_b的pubspec.yaml,将android_intent_plus版本改为1.0.1,然后构建AAR:
flutter build aar --build-number=2.0
  • 将library_a和library_b同时添加到新Android项目中,触发构建失败。

Flutter Doctor信息

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.3.10, on macOS 12.5.1 21G83 darwin-arm, locale en-DE)
[✓] Android 工具链 - 开发Android设备(Android SDK版本33.0.0)
[✓] Xcode - 开发iOS和macOS应用(Xcode 14.2)
[✓] Chrome - 开发Web应用
[!] Android Studio
    ✗ 无法找到捆绑的Java版本。
[!] Android Studio
    ✗ 无法找到捆绑的Java版本。
[!] Android Studio
    ✗ 无法找到捆绑的Java版本。
[✓] Android Studio(版本2021.3)
[!] Android Studio
    ✗ 无法找到捆绑的Java版本。
[✓] IntelliJ IDEA Ultimate Edition(版本2022.3)
[✓] IntelliJ IDEA Ultimate Edition(版本2022.3)
[✓] IntelliJ IDEA Ultimate Edition(版本2022.2.3)
[✓] VS Code(版本1.74.1)
[✓] 已连接设备(2台可用)
[✓] HTTP主机可用性

解决方案

这个问题源于两个Flutter模块的flutter_debug runtime包都自动生成了GeneratedPluginRegistrant类,导致类路径冲突。以下是几种可行的修复方式:

1. 排除重复依赖模块

在Android项目的app模块build.gradle中,针对其中一个Flutter库排除重复的runtime模块:

dependencies {
    implementation('com.example.a.library_a:flutter_debug:1.0') {
        exclude group: 'com.example.a.library_a', module: 'flutter_debug'
    }
    implementation 'com.example.b.library_b:flutter_debug:2.0'
}

如果是通过本地模块引入,可改为:

implementation project(':library_a') {
    exclude module: 'flutter_debug'
}

2. 手动注册插件(推荐)

禁用自动生成的GeneratedPluginRegistrant,改为手动注册插件,从根源避免重复类:

  • 在每个Flutter模块的android/app/src/main/kotlin/[包名]/MainActivity.kt中重写configureFlutterEngine方法:
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.androidintent.AndroidIntentPlugin

class MainActivity : FlutterActivity() {
    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        super.configureFlutterEngine(flutterEngine)
        AndroidIntentPlugin.registerWith(flutterEngine.dartExecutor.binaryMessenger)
    }
}
  • 在Flutter模块的pubspec.yaml中添加配置,禁止自动生成注册类:
flutter:
  generate: false

3. 统一插件版本

若业务允许,将两个Flutter模块中的android_intent_plus版本统一,可降低冲突概率(但无法完全避免不同模块runtime包的类重复问题)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 15:45:53