Android 安卓;已添加到“输出”中;项目依赖项中的jar错误

Android 安卓;已添加到“输出”中;项目依赖项中的jar错误,android,gradle,android-studio,dependencies,Android,Gradle,Android Studio,Dependencies,我有一个Android项目,使用gradle和另一个项目作为依赖项。依赖项项目有一个库jar。当我尝试编译时,项目库被编译了两次,我得到了错误: 错误:类号nordicsemi.android.log.LogContract.Application已添加到输出中。请删除重复的副本 以下是有问题的文件的文件夹结构: >ProjectRoot >dFULibrary >libs -nrf-logger-v2.0.jar -build.gradle

我有一个Android项目,使用gradle和另一个项目作为依赖项。依赖项项目有一个库jar。当我尝试编译时,项目库被编译了两次,我得到了错误: 错误:类号nordicsemi.android.log.LogContract.Application已添加到输出中。请删除重复的副本

以下是有问题的文件的文件夹结构:

>ProjectRoot
  >dFULibrary
    >libs
      -nrf-logger-v2.0.jar
    -build.gradle
  >Logger
    -build.gradle
这是dFULibrary依赖项的build.gradle:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 19
    buildToolsVersion "19.1.0"

    defaultConfig {
        applicationId "no.nordicsemi.android.dfu"
        minSdkVersion 18
        targetSdkVersion 19
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.android.support:support-v4:+'
    compile files('libs/nrf-logger-v2.0.jar')
}
这是记录器的build.gradle(主项目):

在nrf-logger-v2.0.jar中找到no.nordicsemi.android.log.LogContract.Application类。为什么要包含两次,如何确保不包含

添加

以下是../gradlew依赖项返回的内容:

_debugApk - ## Internal use, do not manually configure ##
\--- project :dFULibrary

_debugCompile - ## Internal use, do not manually configure ##
+--- project :dFULibrary
\--- com.android.support:support-v4:+ -> 21.0.2
     \--- com.android.support:support-annotations:21.0.2

_releaseApk - ## Internal use, do not manually configure ##
\--- project :dFULibrary

_releaseCompile - ## Internal use, do not manually configure ##
+--- project :dFULibrary
\--- 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 FAILED

androidJacocoAnt - The Jacoco ant tasks to use to get execute Gradle tasks.
\--- org.jacoco:org.jacoco.ant:0.7.1.201405082137 FAILED


compile - Classpath for compiling the main sources.
\--- project :dFULibrary


provided - Classpath for only compiling the main sources.
\--- com.android.support:support-v4:+ -> 21.0.2
     \--- com.android.support:support-annotations:21.0.2
我删除了所有没有依赖项的行

编辑#2输出自./gradlew androidDependencies

:DFULibrary:androidDependencies
debug
\--- LOCAL: nrf-logger-v2.0.jar

debugTest
+--- LOCAL: nrf-logger-v2.0.jar
\--- debug
     \--- LOCAL: nrf-logger-v2.0.jar

release
\--- LOCAL: nrf-logger-v2.0.jar
:nRFToolbox:androidDependencies
debug
+--- LOCAL: achartengine-1.1.0.jar
\--- nrfToolbox:DFULibrary:unspecified
     \--- LOCAL: nrf-logger-v2.0.jar

debugTest
No dependencies

release
+--- LOCAL: achartengine-1.1.0.jar
\--- nrfToolbox:DFULibrary:unspecified
     \--- LOCAL: nrf-logger-v2.0.jar

BUILD SUCCESSFUL

您应该尝试排除重复的依赖项,如下所示:

compile (project: ':dFULibrary'){
    exclude group: 'org.jacoco'
}
您应该替换:

compile project':dFULibrary'
使用上面的代码。

宾果,找到了

只是很有趣,我试着在网上找到。并开始我的调查……)

问题隐藏在
nrf-logger-v2.0.jar
中。它包含.java.class文件。 解决方案是从中删除所有.java文件

我做到了,指挥官。步骤:

  • nrf-logger-v2.0.jar
    重命名为
    nrf-logger-v2.0.zip
  • 进入并删除所有.java文件
  • 将文件重命名回jar
  • gradlew clean build
    在Android Studio上构建重建项目

如果您使用
依赖项
Gradle任务,您可以更深入地了解正在发生的事情。您可以通过
。/gradlew dependences
从主模块的工作目录(而不是项目根目录)的命令行运行它,如果有帮助的话,不确定,但是您是否尝试过将编译文件('libs/nrf-logger-v2.0.jar')更改为提供的文件('libs/nrf-logger-v2.0.jar')(通常不应该在输出中包含此jar)谢谢你抽出时间!不幸的是,提供的文件()没有更改任何内容。我用gradlew dependencies的输出更新了问题请提供
gradlew androidDependencies的完整输出
@gio将输出添加到问题中谢谢。试过了,但还是不能运行-同样的错误。非常感谢!我将能够测试这个明天,并将在这里作出回应
compile project':dFULibrary'