如何修复在android内部的build gradle中导入flutter模块时出现的重复类问题?

ecfsfe2w  于 2023-01-03  发布在  Android
关注(0)|答案(1)|浏览(180)

我尝试在android build.gradle文件中导入两个flutter模块,如下所示:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.2"
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    defaultConfig {
        applicationId "com.techy.nateshmbhat.sampleapp"
        minSdkVersion 17
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    repositories {
        maven {
            url '/Users/nateshmbhat/Desktop/flutter-android-bridge/flutter_module/build/host/outputs/repo'
        }
        maven{
            url '/Users/nateshmbhat/Desktop/flutter-android-bridge/flutter_module2/build/host/outputs/repo'
        }
        maven {
            url 'http://download.flutter.io'
        }
    }
    buildTypes {
    }
}

dependencies {

    debugImplementation 'com.techy.nateshmbhat.flutter_module:flutter_debug:1.0'
    debugImplementation 'com.example.flutter_module2:flutter_debug:1.0'

}

但在Gradle构建期间,我收到以下错误:

Duplicate class io.flutter.plugins.GeneratedPluginRegistrant found in modules flutter_debug-1.0-runtime.jar (com.example.flutter_module2:flutter_debug:1.0) and flutter_debug-1.0-runtime.jar (com.techy.nateshmbhat.flutter_module:flutter_debug:1.0)

我该如何解决这个重复的问题?有没有一种方法可以将冲突类从flutter构建过程中排除掉,这样当它被包含进来时就不会发生冲突?

7cwmlq89

7cwmlq891#

不能直接这么做。这是Flutter上的一个open issue repo。
此问题的作者提到了一种解决方法(引用作者的话:此处):
将这两个模块作为第三个模块(此处称为umbrella)的包导入。

保护伞/公共规范yaml

dependencies:
  first_module:
    path: ../flutter_modules/first_module
  second_module:
    path: ../flutter_modules/second_module

很明显这是不可取的,而且感觉很笨拙。另外,它给导入过程增加了一层,根据你使用的方法,你必须重复一些步骤,因为模块的需求发生了变化。

相关问题