Ошибка Gradle после включения facebook sdk

Сразу после добавления facebook-audience-network-sdk в мой файл gradle я начал получать ошибки, первый из которых я исправил, добавив multiDexEnabled true, после этого я продолжаю получать эту ошибку

Не удалось выполнить задачу ':app:transformClassesWithJarMergingForDebug'.

com.android.build.api.transform.TransformException: java.util.zip.ZipException: повторяющаяся запись: com/google/android/gms/internal/zzqa.class

Вот мой список зависимостей в build.gradle

 dependencies {
   compile fileTree(dir: 'libs', include: ['*.jar'])
   testCompile 'junit:junit:4.12'
   compile 'com.android.support:appcompat-v7:23.1.1'
   compile 'com.mcxiaoke.volley:library:1.0.17'
   compile 'com.android.support:recyclerview-v7:23.1.1'
   compile 'com.android.support:design:23.1.1'

   compile 'com.google.android.gms:play-services-gcm:8.4.0'
   compile 'com.google.android.gms:play-services-auth:8.4.0'
   compile 'com.google.android.gms:play-services-analytics:8.4.0'

   compile 'com.facebook.android:facebook-android-sdk:4.10.0'
   compile 'com.facebook.android:audience-network-sdk:4.10.0'
   compile 'joda-time:joda-time:2.7'
 }

После запуска gradle с зависимостями -q вот мой снимок экрана, я думаю, что проблема связана с библиотеками сервисов Google Play, видя, что facebook.android:audience-network-sdk зависит от аналитики 7.8.0, в то время как я уже включил последнюю версию 8.4.0 в моих зависимостях я не уверен. Как я могу это исправить? введите описание изображения здесь


person user3564573    schedule 12.02.2016    source источник
comment
play-services-base:7.8.0 и 8.4.0, вероятно, конфликтуют   -  person OneCricketeer    schedule 12.02.2016
comment
Кроме того, 4.10.0 являются последними версиями как для Facebook, сдкс. (Если вы хотели их)   -  person OneCricketeer    schedule 12.02.2016
comment
@cricket_007 Я обновился до последней версии SDK, я вижу, что это все еще зависит от сервисов Google Play 8.1.0, пока я компилирую 8.4.0. Все та же ошибка, все еще пытаюсь решить проблему.   -  person user3564573    schedule 12.02.2016
comment
Просто погуглите ZipException: повторяющаяся запись приводит к нескольким совпадениям, но в основном это сводится к исключению частей одной библиотеки из gradle.   -  person OneCricketeer    schedule 12.02.2016


Ответы (1)


Наконец-то я избавился от ошибки. Значит проблема была с com.google.android.gms:play-services-ads-8.1.0. На изображении видно, что это была версия 8.1.0, а другие игровые зависимости — 8.4.0.

Так что эти два способа сработали. Один из них заключался в том, чтобы изменить зависимость на

 compile ('com.facebook.android:facebook-android-sdk:4.10.0'){
    exclude group:"com.google.android.gms"
 }

Но проблема в том, что это может быть проблемой, поскольку в других моих зависимостях у меня не было play-services-ads:8.4.0'

Итак, я решил это просто добавить одну строку

  compile 'com.google.android.gms:play-services-ads:8.4.0'

Таким образом, все работало отлично, потому что при компиляции gradle он автоматически заменял 8.1.0 на 8.4.0.

Вот мой окончательный список зависимостей, которые работали

dependencies {
     compile fileTree(dir: 'libs', include: ['*.jar'])
     testCompile 'junit:junit:4.12'
     compile 'com.android.support:appcompat-v7:23.1.1'
     compile 'com.mcxiaoke.volley:library:1.0.17'
     compile 'com.android.support:recyclerview-v7:23.1.1'
     compile 'com.android.support:design:23.1.1'

     compile 'com.google.android.gms:play-services-gcm:8.4.0'
     compile 'com.google.android.gms:play-services-auth:8.4.0'
     compile 'com.google.android.gms:play-services-analytics:8.4.0'

     compile 'com.google.android.gms:play-services-ads:8.4.0'

     compile 'com.facebook.android:facebook-android-sdk:4.10.0'
     compile 'com.facebook.android:audience-network-sdk:4.10.0'
     compile 'joda-time:joda-time:2.7'

}

person user3564573    schedule 12.02.2016
comment
Это должно работать до тех пор, пока в API play-services-ads не будет изменений с версии 8.1.0 до 8.4.0, которые могут нарушить работу facebook sdk. - person Rohan; 12.02.2016
comment
Конечно! Работает нормально, реклама показывается, клики подсчитываются. Я думаю, это важная часть - person user3564573; 12.02.2016
comment
@Rohan, это ожидаемое поведение, как вы можете видеть на скриншоте. Gradle в любом случае всегда заменяет старые зависимости более новыми версиями. - person Pedro Hidalgo; 17.05.2017