Owner: Louis Zawadzki


You have 2 dependencies that depend on different versions of the same package, so your Android build will fail with an error like: Multiple dex files define google/android/play-services/iid/R$anim;
If you're having an issue with Google Maps and Firebase you can have a look at this article.


1. Find out which dependencies is causing the issue (~2min)

First, you need to figure out which package is causing the dependency issue.
Versions conflicts break your build when one method is present in one version and not in another.
N.B.: You can potentially have versions conflicts without any issue. Similarly your build can pass but you can still have issues if the logic inside a function has been changed.
Look at your error to know exactly which package is causing the issue (in the previous example it's probably
Then you must find out which version should be set.
To do so, run cd android && ./gradlew app:dependencies && cd ... This will print out your tree of dependencies.
In there, you must look for two instances of the dependency but with different versions. For example if it returns:
_debugCompile - ## Internal use, do not manually configure ##
+--- project :react-native-maps
| +---
| \---
+--- com.salesforce.marketingcloud:marketingcloudsdk:5.3.+ -> 5.3.1
| +--- -> 11.1.6
| | \--- -> 11.1.6
| | +--- -> 11.1.6 (*)
| | \--- -> 11.1.6 (*)
A quick note on how to read this tree:
  • (*) indicates that this lib is already installed higher in the tree
  • -> indicates that a different version of the library was installed
You can see here for example that version is 11.1.6 for react-native-maps and version 11.0.1 for com.salesforce.marketingcloud:marketingcloudsdk, therefore forcing to be at version 11.1.6.

2. Force dependency to use a specific version

If the highest version of the dependency does not work, your next guess has to be the lowest one required by your dependencies.
So now in your android/app/build.gradle you need to:
  • Tell react-native-maps not to compile
    exclude group: '', module: 'play-services-base'
  • Tell com.salesforce.marketingcloud:marketingcloudsdk not to compile
    compile('com.salesforce.marketingcloud:marketingcloudsdk:5.3.+') {
    exclude group: '', module: 'play-services-base'
  • Force the version of to be the lowest one, i.e. 11.0.1:
    compile ("") {
    force = true;
  • Run cd android && ./gradlew clean && cd .. to update the dependencies
Check: your dependency tree should look like this:
_debugCompile - ## Internal use, do not manually configure ##
+--- project :react-native-maps
+--- com.salesforce.marketingcloud:marketingcloudsdk:5.3.+ -> 5.3.1
| +---
| | \---
| | +--- (*)
| | \--- (*)
| +--- (*)
| \--- (*)
+--- (*)
Note that now's version is 11.0.1
Check: when you launch your build it either passes or error with a different error

3. Repeat if you have a different error

It's possible that the lib you've downgraded relies on a version of another lib that conflicts with another dependency so you will have to repeat this with this new dependency until your build passes :)
It's also possible that the lowest version does not have a method required by the highest version. In this case you can try a version between the two that works. It's possible that there is no version that works.