2016-03-19 16 views
8

W moim projekcie Android używam biblioteki, która jest dostępna jako jar. I umieścić go w sekcji Zależności tak:W kompilacji systemu Android Gradle, jak wykluczyć zależności z dołączonego pliku jar?

dependencies { 
    ... 

    compile files('libs/thethirdpartylibrary.jar') 
    ... 
} 

chcę też użyć okhttp biblioteki, które obejmują tak:

compile ('com.squareup.okhttp:okhttp:2.7.5') 

(Ta szczególna wersja okhttp zależy okio 1.6 .0.)

Problem polega na tym, że biblioteka słoików trzeciej strony zależy od okio v0.9.0, a co gorsza, zawiera ją w pakiecie.

W wyniku tego pojawia się błąd konfliktu deksa w czasie kompilacji.

Udało mi się rozwiązać ten problem, ręcznie usuwając plik okio z pliku jar i wydaje się, że działa. Ale zastanawiam się, czy istnieje sposób, aby to zrobić w gradle.

Moje pytanie: czy mogę usunąć zależne, przechodnie (< - mam nadzieję, że używam tego słowa we właściwy sposób) zależności od zawartego słoika podczas kompilacji ze stopniem?

+1

Każdy powód, dla którego nie można po prostu odtworzyć słoika stron trzecich, aby usunąć z niego klasy, których nie chcesz? Nie sądzę, że gradle pozwoli ci wybrać określone klasy, aby wykluczyć z zależności od pliku. –

+0

Właściwie to właśnie teraz robię. Właśnie zastanawiałem się, czy istnieje (prosty) sposób to zrobić z gradle, tak, że nie muszę tego robić ręcznie za każdym razem, gdy zmienia się biblioteka dostawcy. – treesAreEverywhere

+1

Witam, rozwiązałeś to? Czy możesz udostępnić swoje rozwiązanie? –

Odpowiedz

6

Wykluczenie grupy w zależności za pomocą poniższych wierszy.

1. configurations { 
     all*.exclude group: 'com.android.support', module: 'support-v4' 
    } 



2.dependencies { 
    compile 'com.android.support:support-v4:13.0.+' 
    compile ("com.xxx:xxx-commons:1.+") { 
     exclude group: 'junit', module: 'junit' 
    } 
} 



    3. configurations { 
     runtime.exclude group: "org.slf4j", module: "slf4j-log4j12" 
    } 

Wypróbuj tę. For more detail

+0

1. działa, ale problem polega na tym, że chcę dołączyć jedną jego wersję .. – treesAreEverywhere

+2

2. ta składnia nie działa z plikami jar w plikach (AFAIK ...) – treesAreEverywhere

+0

3. Nie sądzę, żebym chcę to zrobić, ponieważ faktycznie chcę dołączyć jeden wers biblioteki - po prostu nie chcę używać tego z JAR – treesAreEverywhere

Powiązane problemy