android - 多个 dex 文件定义 Lcom/google/inject/Module

标签 android intellij-idea gradle dex

我正在尝试解决这个异常。我在intellij中有2个android项目。 库和示例。

图书馆的部门如下:

   compile('com.inepex.simpleclient:SimpleClientImpl:0.9.4') {
        exclude module: 'guice-assistedinject'
        exclude module: 'guice'
        exclude module: 'ormlite-core'
    }
    compile 'org.roboguice:roboguice:3.0.1@jar'
    compile 'com.google.inject:guice:3.0:no_aop'
    compile 'com.fasterxml.jackson.core:jackson-databind:2.4.0'
    compile 'org.slf4j:slf4j-android:1.6.1-RC1@jar'
    compile 'com.j256.ormlite:ormlite-android:4.45'
    compile 'com.android.support:support-v4:19.1.0'
    compile 'com.google.code.gson:gson:2.2.+'

示例应用程序依赖项:

compile 'com.android.support:appcompat-v7:19.1.0'
compile 'com.android.support:gridlayout-v7:19.1.0'
compile project(':library') 

示例的 gradle 依赖项输出:

+--- com.android.support:appcompat-v7:19.1.0                                   
|    \--- com.android.support:support-v4:19.1.0
+--- com.android.support:gridlayout-v7:19.1.0
|    \--- com.android.support:support-v4:19.1.0
\--- project :library               
     +--- com.inepex.simpleclient:SimpleClientImpl:0.9.4
     |    +--- com.j256.ormlite:ormlite-jdbc:4.45
     |    +--- io.netty:netty:3.5.7.Final
     |    \--- com.google.guava:guava:17.0
     +--- org.roboguice:roboguice:3.0.1
     +--- com.google.inject:guice:3.0
     |    +--- javax.inject:javax.inject:1
     |    +--- aopalliance:aopalliance:1.0
     |    \--- org.sonatype.sisu.inject:cglib:2.2.1-v20090111
     |         \--- asm:asm:3.1     
     +--- com.fasterxml.jackson.core:jackson-databind:2.4.0
     |    +--- com.fasterxml.jackson.core:jackson-annotations:2.4.0
     |    \--- com.fasterxml.jackson.core:jackson-core:2.4.0
     +--- org.slf4j:slf4j-android:1.6.1-RC1
     +--- com.j256.ormlite:ormlite-android:4.45
     |    \--- com.j256.ormlite:ormlite-core:4.45
     +--- com.android.support:support-v4:19.1.0
     \--- com.google.code.gson:gson:2.2.+ -> 2.2.4

问题是我无法多次找到 com.google.inject.Module,并且异常表明它是多重定义的。它位于 guice.3.0-no_aop.jar 中。

提前致谢

巴林特

最佳答案

使用 Multi Dex 配置运行测试失败

如果您的项目使用多 dex 配置,请检查 gradle 配置中的 dex 选项。它不应包含incremental true

我有一个项目无法从 Android Studio 执行仪器测试,并在每次代码更改后出现此错误。我必须在每次运行之前清理项目,直到删除此属性。

(此属性默认为 false,因此如果不存在也没关系)

dexOptions {
        incremental false
        javaMaxHeapSize '4g'
    }

有关此 dex 选项检查内容的更多详细信息 What does the "Incremental Dex" option in Android Studio do?

关于查找重复依赖项

使用 gradle,您可以创建依赖关系树。这棵树将在末尾用星号标记明显的重复项。示例:

./gradlew dependencies Application:dependencies

示例输出(来自 Instrumentation 示例项目,但不完整)

_debugApk - ## Internal use, do not manually configure ##
\--- com.android.support:support-v4:21.0.2
     \--- com.android.support:support-annotations:21.0.2
_debugCompile - ## Internal use, do not manually configure ##
\--- com.android.support:support-v4:21.0.2
     \--- com.android.support:support-annotations:21.0.2
_releaseApk - ## Internal use, do not manually configure ##
\--- com.android.support:support-v4:21.0.2
     \--- com.android.support:support-annotations:21.0.2
_releaseCompile - ## Internal use, do not manually configure ##
\--- com.android.support:support-v4:21.0.2
     \--- com.android.support:support-annotations:21.0.2
androidJacocoAgent - The Jacoco agent to use to get coverage data.
\--- org.jacoco:org.jacoco.agent:0.7.1.201405082137
androidJacocoAnt - The Jacoco ant tasks to use to get execute Gradle tasks.
\--- org.jacoco:org.jacoco.ant:0.7.1.201405082137
     +--- org.jacoco:org.jacoco.core:0.7.1.201405082137
     |    \--- org.ow2.asm:asm-debug-all:5.0.1
     +--- org.jacoco:org.jacoco.report:0.7.1.201405082137
     |    +--- org.jacoco:org.jacoco.core:0.7.1.201405082137 (*)
     |    \--- org.ow2.asm:asm-debug-all:5.0.1
     \--- org.jacoco:org.jacoco.agent:0.7.1.201405082137

请注意 org.jacoco.core 依赖项如何在此处列出两次并用 (*) 标记。

关于android - 多个 dex 文件定义 Lcom/google/inject/Module,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26993143/

相关文章:

git - 在 IntelliJ IDEA、WebStorm、RubyMine 等中更改 GIT 登录名/用户名

multithreading - 在 Intellij Idea 中的线程之间切换

gradle - 位置信息包出现错误。怎么修?

gradle - 从gradle的子项目中引用外部项目

android - Android 上的简单标记检测(不是传统的增强现实),可能使用 OpenCV

java - Android 中的自定义异步 Http 客户端

java - 使用 JNI 从 Android 调用预构建的 C++ 共享库

android - 使用 RelativeLayout 垂直平均分割两个 fragment

在 IntelliJ IDEA 中即时编译 Scala

gradle - 将Android Wear1应用与android gradle插件3.0.1捆绑在一起的问题