2016-11-12 4 views
2

Ich versuche herauszufinden, ob es möglich ist, Klassendateien auszuschließen oder pickfirst für Klassen in einer JAR-Dateiabhängigkeit zu verwenden. Wir scheinen immer in Probleme zu laufen, wo Dritte Libs verpacken Gläser in aar Dateien anstelle gradle Abhängigkeiten verwenden und daher verursachen doppelte Datei zip Ausnahmen:Können Sie Klassen mit PackagingOptions in Android Gradle ausschließen?

wie folgt aus:

com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: org/apache/commons/codec/StringEncoderComparator.class 

Die einzige Lösung, die wir haben Bis jetzt ist es so weit, das aar zu entpacken, das störende Glas zu löschen und es erneut zu speichern. Gibt es eine Möglichkeit, das JAR oder die Klasse einfach von GRADLE auszuschließen?

Mit Blick auf die Quelle scheint es, dass ich in der Lage sein sollte, Verpackungsoptionen zu verwenden. Also habe ich verschiedene kombinationen von pick ausprobiert und erst mal ausgeschlossen aber kein glück:

+0

Hallo, ich bin auch auf diesem, alle Nachrichten stecken? – elect

+0

Nein, habe nie einen Weg gefunden. – CaptRespect

+0

Wie Java-Dateien ausschließen? –

Antwort

0

Verwenden sie die auflösungStrategie.

https://docs.gradle.org/current/dsl/org.gradle.api.artifacts.ResolutionStrategy.html

apply plugin: 'java' //so that there are some configurations 

configurations.all { 
    resolutionStrategy { 
    // fail eagerly on version conflict (includes transitive dependencies) 
    // e.g. multiple different versions of the same dependency (group and name are equal) 
    failOnVersionConflict() 

    // prefer modules that are part of this build (multi-project or composite build) over external modules 
    preferProjectModules() 

    // force certain versions of dependencies (including transitive) 
    // *append new forced modules: 
    force 'asm:asm-all:3.3.1', 'commons-io:commons-io:1.4' 
    // *replace existing forced modules with new ones: 
    forcedModules = ['asm:asm-all:3.3.1'] 

    // add dependency substitution rules 
    dependencySubstitution { 
     substitute module('org.gradle:api') with project(':api') 
     substitute project(':util') with module('org.gradle:util:3.0') 
    } 

    // cache dynamic versions for 10 minutes 
    cacheDynamicVersionsFor 10*60, 'seconds' 
    // don't cache changing modules at all 
    cacheChangingModulesFor 0, 'seconds' 
    } 
} 
Verwandte Themen