java - 多个dex文件定义<我的包>/BuildConfig,找不到原因 :

标签 java android gradle dex android-productflavors

我正在使用新的 gradle 构建系统,但遇到以下问题:

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lcom/kibo/mobi/BuildConfig;
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594)
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552)
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533)
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170)
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287)
    at com.android.dx.command.dexer.Main.run(Main.java:230)
    at com.android.dx.command.dexer.Main.main(Main.java:199)
    at com.android.dx.command.Main.main(Main.java:103)

打印依赖我什么都看不到,这里是:

 firstDebugCompile - ## Internal use, do not manually configure ##
 \--- KiboGradle:KiboSDK:unspecified
 +--- KiboGradle:TextInputAPI:unspecified
 +--- KiboGradle:VoiceImeUtils:unspecified
 +--- com.google.android.gms:play-services:5.0.77
 |    \--- com.android.support:support-v4:19.1.0
 +--- com.squareup.picasso:picasso:2.3.2
 +--- com.google.code.gson:gson:2.2.4
 \--- com.crittercism:crittercism-android-agent:4.5.1

我试图验证问题不是重复的支持库所以我尝试添加:

compile ('com.google.android.gms:play-services:5.0.77'){
    exclude module: 'support-v4'
}

这导致无法找到某些 support-v4 库类的错误,因此无法从任何其他位置编译此库。

我想到的可能会导致此问题的一件事是,我在 oreder 中使用 Flavors 功能来创建具有不同资源文件的应用程序的多个版本。

当我查看错误中的文件时,我看到:

**
* Automatically generated file. DO NOT MODIFY
*/
package com.kibo.mobi;

public final class BuildConfig {
  public static final boolean DEBUG = Boolean.parseBoolean("true");
  public static final String PACKAGE_NAME = "com.kibo.mobi.test.official";
  public static final String BUILD_TYPE = "debug";
  public static final String FLAVOR = "liverpool";
  public static final int VERSION_CODE = 1;
  public static final String VERSION_NAME = "1.0";
}

所以文件的包和String值中指定的包是不一样的。

任何人都可以看到我的配置中可能导致此问题的任何问题吗?

最佳答案

在我的情况下发生了类似的错误,因为在 AndroidManifest.xml 文件中有 2 个具有相同包名的模块。在模块中使用不同的包名解决了这个问题。

当一个库 jar 作为依赖项被包含在多个模块中两次(或多次)时,也会发生同样的事情。在这种情况下,错误消息说明了以该库的包名称命名的重复配置。我通过将库作为依赖项包含在一个模块中来解决它,而第二个模块依赖于第一个模块。

关于java - 多个dex文件定义<我的包>/BuildConfig,找不到原因 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25103288/

相关文章:

java - JComponent 不可见,有人知道为什么吗?

java - JSONException 字符串无法转换为 JSONArray

java - AndEngine GLES 2 - 黑屏,无错误

android - 升级到 gradle 3.3 和 android 构建工具 2.3.0 时收到构建错误

gradle - 从构建中排除.bak文件

plugins - 如何在 gradle findbugs 插件中将报告的错误打印到控制台?

java - 没有 Spring Boot 泛型会失败?

java - 如果管道中的下一个进程停止,则停止程序

java - Android - 在不更改布局的情况下在 ListView 之间切换?

gradle - gradle将不再同步插件