2016-03-19 3 views
8

В моем проекте Android я использую библиотеку, которая поставляется как банку. я включить его в разделе зависимостей, как так:В сборке Android Gradle, как исключить зависимости из включенного файла jar?

dependencies { 
    ... 

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

Я также хочу использовать okhttp библиотеку, которую я включаю, как это:

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

(Эта конкретная версия okhttp зависит от Окио 1.6 .0.)

Проблема в том, что библиотека сторонней банки зависит от okio v0.9.0 и что еще хуже, связывает ее.

В результате я получаю ошибку конфликта dex во время сборки.

Я смог решить это, вручную удалив okio из файла jar, и это, похоже, сработает. Но мне интересно, есть ли способ сделать это в градле.

Мой вопрос: могу ли я удалить вложенные, переходные (< - надеюсь, что я использую это слово в правильном направлении) зависимости от включенной банки во время сборки с градиентом?

+1

Любая причина, по которой вы не можете просто воссоздать стороннюю банку, чтобы удалить классы, в которых вы не хотите? Я не думаю, что gradle позволит вам выбрать определенные классы, чтобы исключить из зависимости от файла. –

+0

На самом деле, вот что я сейчас делаю. Я просто задавался вопросом, есть ли (простой) способ сделать это с помощью gradle, так что мне не нужно делать это вручную каждый раз, когда изменяется библиотека поставщика. – treesAreEverywhere

+1

Привет, вы разрешили это? Можете ли вы поделиться своим решением? –

ответ

6

Исключить группу в зависимостях, используя приведенные ниже строки.

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" 
    } 

Попробуйте этот. For more detail

+0

1. работает, но проблема в том, что я хочу включить одну его версию. – treesAreEverywhere

+2

2. Этот синтаксис не работает с файловыми файлами на основе файлов (AFAIK ...) – treesAreEverywhere

+0

3. Я не думаю, что я хочу сделать это, так как я действительно хочу включить один verson библиотеки - я просто не хочу использовать один из JAR – treesAreEverywhere

0

В соответствии с этим обсуждением здесь https://groups.google.com/forum/#!topic/adt-dev/g1AiJM7PeVs, то, что вы хотите сделать, невозможно.

Синтаксис, предложенный в других ответах, относится к «нормальным» зависимостям Maven.

Смежные вопросы