Подтвердить что ты не робот

Android "уже добавлен в вывод" ошибка для jar в зависимости от проекта

У меня есть проект Android, который использует gradle с другим проектом как зависимость. Проект зависимости имеет библиотечную банку. Когда я пытаюсь скомпилировать библиотеку проекта, скомпилирован дважды, и я получаю сообщение об ошибке:   Ошибка: класс no.nordicsemi.android.log.LogContract.Application уже добавлен в вывод. Удалите дубликаты.

Вот структура папок с файлами, о которых идет речь:

>ProjectRoot
  >dFULibrary
    >libs
      -nrf-logger-v2.0.jar
    -build.gradle
  >Logger
    -build.gradle

Это свойство build.gradle для зависимости dFULibrary:

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 для Logger (основной проект):

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.14.4'
    }
}

apply plugin: 'com.android.application'

    android {

    compileSdkVersion 20
    buildToolsVersion '20'

    sourceSets {
        main {
            java.srcDirs "src/main/java"
            res.srcDirs "src/main/res"
            assets.srcDirs = ['assets']
        }
        androidTest.setRoot('tests')
        androidTest.java.srcDirs = ['tests/src']

    }
    dexOptions {
        preDexLibraries = false
    }
}

dependencies {
    compile 'com.android.support:support-v4:+'
    compile project':dFULibrary')
}

no.nordicsemi.android.log.LogContract.Application-класс найден из nrf-logger-v2.0.jar. Почему он включается дважды и как я могу убедиться, что это не так?

Сложение

Вот что возвращаются зависимости. /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
4b9b3361

Ответ 1

Бинго нашел его.

Просто было интересно, и я попытался найти ваш проект в Интернете. И начал мое расследование....:).

Проблема скрыта при nrf-logger-v2.0.jar. Он содержит файлы .java и .class. Решение состоит в удалении из него всех .java файлов.

Я сделал это Total Commander. Шаги:

  • переименовать nrf-logger-v2.0.jar в nrf-logger-v2.0.zip;
  • зайдите внутрь и удалите все .java файлы;
  • переименуйте файл обратно в jar;
  • gradlew clean build или Проект Build-Rebuild в Android Studio
  • вуаля

Ответ 2

Вы должны попытаться исключить дублируемую зависимость следующим образом:

compile (project: ':dFULibrary'){
    exclude group: 'org.jacoco'
}

вы должны заменить:

compile project':dFULibrary'

с кодом сверху.