Firebase cloud messaging conflict fb

2019-09-04 05:15发布

问题:

My project works well util I add FCM to build.gradle. The error here

Error:Error converting bytecode to dex:
Cause: com.android.dex.DexException: Multiple dex files define Lcom/google/android/gms/internal/zzr;

My dependencies:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.google.firebase:firebase-messaging:9.4.0'
    ...
    compile 'com.facebook.android:facebook-android-sdk:[4,5)'
    compile 'com.facebook.android:audience-network-sdk:4.14.1'

}

After searching for a long time, I regconize that some libs in dependency may use the same dependency with difference version. But I don't know how to fix it. Any ideas?

回答1:

I am able to reproduce the error in a simple test build. The generated dependencies for the two Facebook libraries include a puzzling entry. The library audience-network-sdk depends on play-services-ads:8.4.0. I expected to see something more recent there, like 9.4.0. This seems to be the cause of the problem.

Note that the change log for the Facebook SDK shows an Aug 23 release of version 4.15.0. I tried that--it didn't help.

A similar issue was posted here. Following the solution there, one fix for your problem is to update the dependencies as shown below. This may not be the most maintainable or best solution. It eliminated the problem in my test build.

compile 'com.google.android.gms:play-services-ads:9.4.0'
compile 'com.facebook.android:facebook-android-sdk:[4,5)'
compile 'com.facebook.android:audience-network-sdk:4.14.1'

.

+--- com.facebook.android:facebook-android-sdk:4.15.0
|    +--- com.android.support:cardview-v7:23.4.0
|    +--- com.android.support:support-v4:24.1.1
|    |    \--- LOCAL: internal_impl-24.1.1.jar
|    \--- com.android.support:customtabs:23.4.0
|         \--- com.android.support:support-v4:24.1.1
|              \--- LOCAL: internal_impl-24.1.1.jar
+--- com.facebook.android:audience-network-sdk:4.14.1
|    +--- com.google.android.gms:play-services-ads:8.4.0  <-- ERROR??
|    |    \--- com.google.android.gms:play-services-basement:9.4.0
|    |         \--- com.android.support:support-v4:24.1.1
|    |              \--- LOCAL: internal_impl-24.1.1.jar
|    +--- com.android.support:appcompat-v7:24.1.1
|    |    +--- com.android.support:animated-vector-drawable:24.1.1
|    |    |    \--- com.android.support:support-vector-drawable:24.1.1
|    |    |         \--- com.android.support:support-v4:24.1.1
|    |    |              \--- LOCAL: internal_impl-24.1.1.jar
|    |    +--- com.android.support:support-v4:24.1.1
|    |    |    \--- LOCAL: internal_impl-24.1.1.jar
|    |    \--- com.android.support:support-vector-drawable:24.1.1
|    |         \--- com.android.support:support-v4:24.1.1
|    |              \--- LOCAL: internal_impl-24.1.1.jar
|    \--- com.android.support:recyclerview-v7:23.1.0
|         \--- com.android.support:support-v4:24.1.1
|              \--- LOCAL: internal_impl-24.1.1.jar