2015-10-21 18 views
7

Dopo l'aggiornamento del plugin Findbugs fino alla versione 3.0.1 Non riesco a compilare un progetto multi-modulo in Android Studio. Inoltre utilizzo la dipendenza "com.google.code.findbugs:annotations:3.0.1" per l'utilizzo delle annotazioni FindBugs (ad esempio @SuppressFBWarnings).Errore durante la compilazione del progetto Android dopo l'aggiornamento di FindBugs a 3.0.1

ottengo seguente errore durante l'assemblaggio del progetto:

Execution failed for task ':presentation:packageAllDevelopDebugClassesForMultiDex'. 
> java.util.zip.ZipException: duplicate entry: javax/annotation/CheckForNull.class 

Come posso risolvere il problema?

+0

È possibile utilizzare questo [lo script] (https://github.com/ethankhall/scripts/blob/master/gradle/find-file.gradle) per trovare da dove provengono le definizioni duplicate per CheckForNull. Sostituisci JsonIgnore con CheckForNull. – Ethan

risposta

5

Ho risolto questo problema, la causa era l'aggiunta alle dipendenze aggiuntive "com.google.code.findbugs:annotations:3.0.1" ('com.google.code.findbugs:jsr305:3.0.1' e 'net.jcip:jcip-annotations:1.0'). Per risolverlo dobbiamo escludere alcune dipendenze transitive.

Sostituire:

dependencies { 
    compile "com.google.code.findbugs:annotations:3.0.1" 
} 

con

dependencies { 
    compile ("com.google.code.findbugs:annotations:3.0.1") { 
     exclude module: 'jsr305' 
     exclude module: 'jcip-annotations' 
    } 
} 

o con

dependencies { 
    compile ("com.google.code.findbugs:annotations:3.0.1") { 
     transitive = false 
    } 
} 
+1

Ottengo sopra l'errore ma questa risposta non lo risolve :(Né la soluzione uno, né due, né entrambi sono stati mescolati Anche usando 'com.google.code.findbugs: annotazioni: 2.0.3' mi ha dato quell'errore. dal gradino 2.2.1 al 2.9 e torna al 2.3, che risulta essere la versione giusta per AS 1.5. Tutto ciò per aggiungere una riga di FindBug Suppression :( – Giszmo

+1

Penso che sia necessario controllare le collisioni di dipendenza con l'attività gradle "dipendenze", fai attenzione per l'albero delle dipendenze findbugs – ultraon

+1

Calcolo. Quindi con "albero delle dipendenze" intendi l'output di "../../gradlew -q dipendenze". Nel nostro caso dovevamo "escludere il gruppo:" com.google. code.findbugs'' su un'altra dipendenza che ha estratto una versione precedente di findbug. – Giszmo

0

come suggerito in precedenza escluso JSR305 modulo ha funzionato per me, ma ho usato una sintassi diversa a causa di importare un progetto, non un modulo.

mi è stato l'importazione di un progetto di libreria presente come progetto indipendente sul mio disco, così ho dovuto

compile project(path: ':shareLib') 

Per escludere JSR305 modulo ho girato il mio codice in

compile (project(path: ':shareLib')) { 
    exclude module: 'jsr305' 
}