2016-11-12 2 views
2

Я пытаюсь выяснить, можно ли исключить файлы классов или использовать pickfirst для классов в зависимости от jar-файла. Мы всегда, кажется, столкнулись с проблемами, когда третья сторона ЛИЭС упаковать банки в AAR файлов вместо использования Gradle зависимостей и, следовательно, привести к дублированию исключения файл zip:Можете ли вы исключить классы с упаковкойОпции в android gradle?

так:

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

Единственное решение, мы в найденный до сих пор, должен распаковать aar, удалить оскорбительную банку и повторно закрепить ее. Есть ли способ просто исключить банку или класс из градиента?

Глядя на источник, кажется, что я могу использовать варианты упаковки. Поэтому я пробовал различные комбинации выбора и исключал, но не повезло:

packagingOptions { 
    pickFirst '**/StringEncoderComparator.class' 
    pickFirst 'org/apache/commons/codec/StringEncoderComparator.class' 
    pickFirst 'org/apache/commons/codec/*' 

} 
+0

Привет, я тоже застрял на этом, любые новости? – elect

+0

Нет, не нашел пути. – CaptRespect

+0

Как исключить java-файлы? –

ответ

0

Использовать резолюциюStrategy.

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' 
    } 
} 
Смежные вопросы