2014-12-02 11 views
13

Mam projekt Androida, który używa gradle z innym projektem jako zależnością. Projekt zależności ma słoik biblioteki. Podczas próby kompilacji biblioteka projektu jest kompilowana dwukrotnie i pojawia się błąd: Błąd: Klasa no.nordicsemi.android.log.LogContract. Aplikacja została już dodana do danych wyjściowych. Usuń zduplikowane kopie.System operacyjny "został już dodany do wyjścia" dla słoika w zależności od projektu

Oto struktura folderów z plikami w pytaniu:

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

To build.gradle do uzależnienia 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') 
} 

To build.gradle dla rejestratora (główny projektu):

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 znajduje się klasa nrf-logger-v2.0.jar Dlaczego czy jest on uwzględniany dwukrotnie i jak mogę się upewnić, że tak nie jest?

ADDITION

Oto co ../gradlew zależności powrotu:

_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 

usunąłem wszystkie linie, które miały żadnych zależności.

EDIT # 2 wyjście z ./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 
+0

Jeśli używasz 'dependencies' zadanie Gradle można dostać lepszy wgląd w to, co się dzieje. Możesz uruchomić go z wiersza poleceń z katalogu roboczego twojego głównego modułu (nie z katalogu głównego projektu) przez '../gradlew dependnecies' –

+0

Nie wiesz, czy to pomoże, ale czy próbowałeś zmienić pliki kompilacji ('libs/nrf -logger-v2.0.jar ') do dostarczonych plików (' libs/nrf-logger-v2.0.jar ') (Zwykle nie powinien zawierać tego słoika na wyjściu) –

+0

Dziękuję za poświęcony czas! Niestety podany plik() niczego nie zmienił. Zaktualizowałem to pytanie podając dane wyjściowe zależności gradlew – Stpn

Odpowiedz

7

Bingo, znalazłem.

Po prostu był interesujący i starałem się znaleźć w Internecie your project. I zaczęło się moje śledztwo .... :).

Problem jest ukryty pod numerem nrf-logger-v2.0.jar. Zawiera pliki .java i .class. Rozwiązanie polega na usunięciu z niego wszystkich plików .java.

Zrobiłem tego Total Commandera. Kroki:

  • zmiana nazwy nrf-logger-v2.0.jar na nrf-logger-v2.0.zip;
  • Wejdź do środka i usuń wszystkie .pliki java;
  • zmienić nazwę pliku z powrotem na słoik;
  • gradlew clean build lub Build-Rebuild projektu w Android Studio
  • voila
+0

wielkie dzięki! Będę mógł przetestować to jutro i odpowiem tutaj – Stpn

0

Należy starać się wykluczyć duplikat zależność następująco:

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

należy wymienić:

compile project':dFULibrary' 

z kodem z góry.

+0

Dziękuję. Próbowałem, ale nadal nie mogę uruchomić - ten sam błąd. – Stpn

Powiązane problemy