2016-06-26 2 views
2

мое приложение использует эти зависимостиприложения и библиотеки зависимостей Android конфликтовать

compile 'com.android.support:appcompat-v7:22.2.1' 
compile 'com.android.support:design:22.2.1' 
compile 'com.google.android.gms:play-services:7.0.0' 
compile 'com.google.code.gson:gson:2.2.4' 

, когда я импортировал искать дуги библиотеки он использует различные зависимости

compile 'com.android.support:appcompat-v7:23.4.0' 
    compile 'com.android.support:appcompat-v7:23.2.1' 
    compile 'com.android.support:design:23.2.1' 
    compile project(':SeekArc_library') 

Как я могу решить эту проблему?

+0

Ваш вопрос немного не понятно. В чем проблема? Есть ли ошибка? Если нет, то как вы сталкиваетесь с проблемой? –

+0

Зависимость библиотеки приложений верхнего уровня переопределит зависимость библиотеки нижнего уровня. Вам не нужно явно переопределять. Обратитесь к документации по сборке Android. –

ответ

2

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

Ниже приведены рекомендации по устранению проблем, связанных с конфликтами. Например, вы заявили, что заявили о явной зависимости от com.google.guava версии X, но какая-то другая зависимость приносит свою внутреннюю зависимость от com.google.guava версии X-1.

Добавьте следующее после вашего предложения dependencies в файл build.gradle.

configurations { 
    all*.exclude group: 'com.google.guava', module: 'guava-jdk5' 
} 

Для получения дополнительной информации см https://docs.gradle.org/current/dsl/org.gradle.api.artifacts.Configuration.html

Примечание: есть другой подход, при котором вы можете выборочно исключить определенную зависимость от каждого compile пункта, но это не рекомендуется, так как это не очень хорошо масштабируется. Для полноты я включу его здесь, но я не рекомендую его. Используя тот же пример, что и выше,

compile(group: 'com.google.guava', name: 'guava', version: 'X') 
compile(group: 'com.some.other.dependency', name: 'foo', version: 'bar') 
{ 
    // exclude transitive dependency since we want to depend on version `X` declared above 
    exclude(group: 'com.google.guava', module: 'guava-jdk5') 
}  
+0

Также возможно, что зависимости библиотек конфликтуют с классами, включенными в стандартную библиотеку Android. Например, любая библиотека, которая транзитивно тянет в 'org.json: json', требует исключения. –

+0

большое спасибо. Я пробовал, конфигурации { все * .exclude group: 'com.android.support', module: 'support-jdk5' } и получил ошибку. Ресурс не найден, который соответствует указанному имени 'android: TextAppearance.Material.Widget. Button.Inverse. – Shahek

+0

PLS убедитесь, что зависимость, которую вы выбираете для импорта явно, имеет правильную версию – Creos

0

Зависимость от библиотеки приложений верхнего уровня переопределит зависимость библиотеки нижнего уровня. Вам не нужно явно переопределять. Обратитесь к документации по сборке Android

+0

не думал, что это правда, поскольку у меня были проблемы с этим в прошлом. холодно, вы ссылаетесь на документ, на который вы ссылаетесь, возможно, я не понимаю вашу точку зрения. thx – Creos

1

Мое приложение и недавно добавленные зависимости Библиотеки находились в конфликте. Я изменил приложение, скомпилированное &, с помощью sdk на api 23 и добавил «useLibrary» org.apache.http.legacy ». Теперь проблема решена.

0

Если вы хотите, чтобы исключить зависимостей библиотеки вы используете вы можете

compile 'yourLibraryName'{ 
    exclude module: 'appcompat-v7' 
    exclude module: 'appcompat-v7' 
} 

Убедитесь, что вы обеспечиваете свою собственную версию, хотя, в противном случае вы получите ошибки во время выполнения

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