9

Ho un problema quando voglio compilare il mio app:imprevisto di primo livello delle eccezioni in Android-support-v4.jar

IMPREVISTO ECCEZIONE TOP-LEVEL: java.lang.IllegalArgumentException: già added`

Sembra un errore con android-support-v4.jar.

Nel mio progetto ho 3 librerie: appcompat, facebook, google_play_services.

miei file Gradle:

  • AppProject/settings.gradle

    include ':libraries:google_play_services', ':libraries:appcompat', ':libraries:facebook', ':app' 
    
  • AppProject/build.gradle:

    buildscript { 
        repositories { 
         mavenCentral() 
        } 
        dependencies { 
         classpath 'com.android.tools.build:gradle:0.5.+' 
        } 
    } 
    
  • AppProject/app/build.gradle:

    apply plugin: 'android' 
    
    dependencies { 
        compile project(':libraries:appcompat') 
        compile project(':libraries:facebook') 
        compile project(':libraries:google_play_services') 
        compile files('libs/android-async-http-1.4.3.jar') 
        compile files('libs/gson-2.2.4.jar') 
        compile files('libs/libGoogleAnalyticsV2.jar') 
        compile files('libs/universal-image-loader-1.8.4.jar') 
        compile files('libs/urbanairship-lib-3.0.0.jar') 
    } 
    
  • AppProject/librerie/appcompat/build.gradle:

    apply plugin: 'android-library' 
    
    dependencies { 
        compile files('libs/android-support-v4.jar') 
        compile files('libs/android-support-v7-appcompat.jar') 
    } 
    
  • AppProject/librerie/facebook/buidle.gradle:

    apply plugin: 'android-library' 
    
    dependencies { 
        compile files('libs/android-support-v4.jar') 
    } 
    
  • AppProject/librerie/google_play_services/buidle.gradle :

    apply plugin: 'android-library' 
    
    dependencies { 
        compile files('libs/google-play-services.jar') 
    } 
    

Ma quando compilo esso, appare questo errore:

Output: 
     UNEXPECTED TOP-LEVEL EXCEPTION: 
     java.lang.IllegalArgumentException: already added: Landroid/support/v4/app/NotificationCompatIceCreamSandwich; 

Mi potete aiutare?

risposta

8

ho trovato il problema:

AppProject/settings.gradle

include ':libraries:facebook', ':app' 

AppProject/librerie/facebook/build.gradle

apply plugin: 'android-library' 

dependencies { 
    compile 'com.android.support:support-v4:18.0.0' 
} 

AppProject/app/build.gradle

apply plugin: 'android' 

dependencies { 
    compile 'com.android.support:support-v4:18.0.0' 
    compile 'com.android.support:appcompat-v7:18.0.+' 
    compile 'com.google.android.gms:play-services:3.1.36' 

    compile project(':libraries:facebook') 
    compile files('libs/android-async-http-1.4.3.jar') 
    compile files('libs/gson-2.2.4.jar') 
    compile files('libs/libGoogleAnalyticsV2.jar') 
    compile files('libs/universal-image-loader-1.8.4.jar') 
    compile files('libs/urbanairship-lib-3.0.0.jar') 
} 
+18

Ciao, puoi approfondire quale fosse il problema? E come hai risolto questo problema? – yasith

2

Probabilmente il file jar è incluso due volte nel progetto. Prova ad andare su File -> Struttura del progetto e verifica se hai 2 moduli o librerie identici.

2

Come si vede dai file di build è stata aggiunta la libreria di supporto di Android a due dei moduli. Ho avuto lo stesso identico problema e l'ho risolto rimuovendo la libreria dal modulo principale, lasciando solo quella per la libreria. Non sono sicuro che questa sia la soluzione migliore ma funziona e gradle non si lamenta.

6

L'idea principale in risposta Prcaen è che utilizzando:

compile 'com.android.support:support-v4:18.0.0'

all'interno dipendenza sezione anziché:

compile files('libs/google-play-services.jar')

può risolvere il problema della duplicazione. E lo fa!