Add an explicit dependency for play-services-auth along with your firebase-ui-auth dependency:
// FirebaseUI for Firebase Auth compile 'com.firebaseui:firebase-ui-auth:3.1.0' compile 'com.google.android.gms:play-services-auth:11.4.2'
This is because firebase-ui-auth has a transitive dependency on play-services-auth and should be used with the corresponding version of play-services-auth . Please see this explanation .
firebase-ui-auth |--- com.google.firebase:firebase-auth |--- com.google.android.gms:play-services-auth
Earlier versions of the Gradle build tool did not include transitive dependencies, so now versions can conflict with other versions of play-services .
I explained and answered my question (in case someone wants to know)
When upgrading to Android Studio 3.0 and upgrading the Gradle build tool to 3.0.0, dependency compilation now works differently than in earlier versions.
I recently ran into the same issue. I used these dependencies that worked well until version 2.3.3 of Gradle:
implementation 'org.apache.httpcomponents:httpmime:4.3.6' implementation 'org.apache.httpcomponents:httpclient-android:4.3.5.1'
After upgrading to gradle-build-version 3.0.0, I got the same error. Having delved into it, I found that the transitive dependency of httpmime conflicts with the file into which httpclient-android .
Description
Let me explain this in detail. Earlier when using gradle-tool-version 2.3.3 I used httpclient-android to get and use a class called org.apache.http.entity.ContentType.java Transitive dependency extension org.apache.httpcomponents:httpmime:4.3.6 showed that it has org.apache.httpcomponents:httpcore:4.3.6 which is the same package that I wanted to use. But when compiling or synchronizing the assembly, it excluded org.apache.http.entity.ContentType.java so I needed to add this dependency, which includes ContentType.java :
implementation 'org.apache.httpcomponents:httpclient-android:4.3.5.1'
After that, everything worked fine.
As soon as I upgraded the version of gradle-build to 3.0.0, everything changed. Now it includes all the transition dependencies. Thus, when compiling with the latest version of Android Studio using gradle-build-tool version 3.0.0, my ContentType.java compiled twice. Once from org.apache.httpcomponents:httpcore:4.3.6 (which is an implicit httpmime transitive dependency) and again from org.apache.httpcomponents:httpclient-android:4.3.5.1 which I used earlier.
To solve this problem, I had to remove the existing org.apache.httpcomponents:httpclient-android:4.3.5.1 since httpmime itself would get the appropriate class needed for my application.
Solution for my situation: use only necessary dependencies and remove httpclient-android
implementation 'org.apache.httpcomponents:httpmime:4.3.6'
Please note that this is only for me. You will need to examine your own dependencies and apply the solution accordingly.