【问题标题】:Type BuildConfig is defined multiple times类型 BuildConfig 被定义多次
【发布时间】:2020-03-03 12:51:38
【问题描述】:

我正在开发一个多模块 Android 应用程序,一切都在调试模式下工作,但现在当我尝试构建发布包时收到此错误:

Type ***module1.BuildConfig is defined multiple times:
***/module1/build/intermediates/runtime_library_classes/release/classes.jar:***/module1/BuildConfig.class,
***/module2/build/intermediates/runtime_library_classes/release/classes.jar:***/module1/BuildConfig.class

这是我第一次看到这样的错误,我不知道如何解决这个问题,甚至不知道是什么原因造成的。据我所知,库模块甚至不应该在发布模式下生成 BuildConfig 文件。

【问题讨论】:

  • 检查两个模块是否有相同的包名
  • 请发布您的 Gradle 文件
  • 现在我觉得自己很愚蠢。我在两个清单中定义了相同的包。
  • 不用担心。它发生了:D

标签: android gradle


【解决方案1】:

检查两个模块是否有相同的包名

【讨论】:

  • 我遇到了这个问题: com.BV.LinearGradient.BuildConfig 类型定义了多次:/node_modules/react-native-linear-gradient/android/build/.transforms/aaad2255142356c3377f56df42cfb484/classes /classes.dex, /android/app/build/intermediates/external_libs_dex/release/out/classes.dex 我不知道有什么解决办法
  • 构建 -> 重建项目可能会有所帮助
  • @Yacine 我也面临同样的问题。你找到解决办法了吗?
  • 我不得不更改 node_modules 中的模块名称
  • 还要检查 AndroidManifest 中的包名!
【解决方案2】:

我的 Android 清单对于两个不同的模块具有相同的包名称。

【讨论】:

    【解决方案3】:

    很可能共享的 AndroidManifest.xml 和 androidApp AndroidManifest.xml 具有相同的 packageId。他们必须不同。例如,com.my.app.shared 和 com.my.app.android

    【讨论】:

      【解决方案4】:

      我在 MacOS 上使用 Android Studio 4.0.1

      在项目app 文件夹内的网络驱动器上,我搜索了BuildConfig

      我注意到已经生成了一个BuildConfig 2.class 文件。

      我删除了BuildConfig 2.class 文件,重新构建,重新运行,一切都很好。

      更新

      我遇到了BuildConfig 3.class 出现的情况,所以现在我按Config (配置+空格)搜索

      更新 2

      我每次跑步时都会遇到这个问题。现在我没有删除文件,而是使用菜单项

      "Build"->"Clean Project"
      

      然后重新运行应用程序。

      【讨论】:

        【解决方案5】:

        重建应用程序为我解决了这个问题。

        如果重建不能解决问题,请查看:https://developer.android.com/studio/build/dependencies#duplicate_classes

        【讨论】:

          【解决方案6】:

          对我来说,将以下行添加到 android/app/build.gradle 到以下部分有帮助:

          dependencies {
              ...
              implementation(project(':react-native-jitsi-meet')) {
                  ...
                  exclude group: 'com.facebook.react',module:'react-native-linear-gradient' // <<<---- this line was added
              }
          }
          

          【讨论】:

            【解决方案7】:

            升级firebase项目级对android项目的依赖后报错

            classpath 'com.google.firebase:perf-plugin:1.3.4'
            classpath 'com.google.firebase:firebase-crashlytics-gradle:2.4.1'
            

            为了解决我的错误,我将上面的内容更新为

            classpath ('com.google.firebase:perf-plugin:1.3.4') {
                 exclude group: 'com.google.guava', module: 'guava-jdk5'
             }
            classpath 'com.google.firebase:firebase-crashlytics-gradle:2.4.1'
            

            然后转到项目文件夹并删除构建/中间体

            1. app/build/intermediates 删除此文件夹
            2. 使缓存无效并重新启动
            3. 之后。重新启动 - 重建并运行

            为我工作

            【讨论】:

              【解决方案8】:

              就我而言, 我有一个多模块项目,也遇到了同样的问题。 我检查了每个清单和包名称,其中包含另一个重复项。 我找到了重复项并重命名了一个包和清单包名称,并执行了 Build -> Clean Project 现在问题已解决!

              • 检查重复包、清单条目
              • 尝试使缓存无效、清理构建、重新构建项目
              • 尝试删除 .gradle 目录并重建项目。

              【讨论】:

                【解决方案9】:

                对我有用的唯一解决方案是删除我的主文件夹 (mac osx) 中的 ~/.gradle 文件夹。

                编辑:过了一会儿它又发生了——所以我删除了整个项目并从 github 再次克隆了它。这完全修复了它,再也没有发生过。

                【讨论】:

                  【解决方案10】:

                  com.e.pacakgename.MainActivity 类型定义了多次。

                  我也遇到了这个错误,我的项目中有 2 个 MainActivity 文件。

                  删除一个文件后,错误就解决了。

                  【讨论】:

                    【解决方案11】:

                    我使用的是 Android Studio 4.1.2,以下对我有用: 打开构建 -> 重建项目。

                    【讨论】:

                      【解决方案12】:
                       buildTypes {
                          debug {
                              buildConfigField "String", "BaseApi", "\"https://{apiUrlDebug}\""
                      
                          }
                          release {
                              signingConfig signingConfigs.release
                              buildConfigField "String", "BaseApi", "\"https://{apiUrlRelease}\""
                       
                              zipAlignEnabled true
                              minifyEnabled true
                              shrinkResources true
                              pseudoLocalesEnabled true
                              proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
                              lintOptions {
                      
                                  checkReleaseBuilds false
                                  abortOnError false
                              }
                          }
                      }
                      

                      【讨论】:

                        【解决方案13】:

                        点击构建->清理项目

                        【讨论】:

                          猜你喜欢
                          • 2020-11-25
                          • 2021-05-15
                          • 2021-11-13
                          • 2020-06-15
                          • 2020-07-16
                          • 2020-11-15
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          相关资源
                          最近更新 更多