添加显式依赖项play-services-auth
和你的firebase-ui-auth
依赖性:
// FirebaseUI for Firebase Auth
compile 'com.firebaseui:firebase-ui-auth:3.1.0'
compile 'com.google.android.gms:play-services-auth:11.4.2'
这是因为firebase-ui-auth
具有传递依赖性play-services-auth
并且必须与相应版本的play-services-auth
。请参见这个解释 https://github.com/firebase/FirebaseUI-Android#dependencies.
firebase-ui-auth
|--- com.google.firebase:firebase-auth
|--- com.google.android.gms:play-services-auth
Gradle 构建工具的早期版本不包含传递依赖项,因此现在版本可能会与其他版本发生冲突play-services
版本。
我的问题的解释和解答(如果有人想知道)
当您升级到 Android Studio 3.0 并将 gradle 构建工具版本更新到 3.0.0 时,依赖项的编译现在与早期版本不同。
我最近遇到了同样的问题。我使用的这些依赖项在 Gradle 版本 2.3.3 中运行良好:
implementation 'org.apache.httpcomponents:httpmime:4.3.6'
implementation 'org.apache.httpcomponents:httpclient-android:4.3.5.1'
升级到 gradle-build-version 3.0.0 后,我得到了同样的错误。深入研究一下,我发现传递依赖httpmime
与文件冲突httpclient-android
包括。
描述
让我详细解释一下。早些时候,在使用 gradle-tool-version 2.3.3 时,我使用httpclient-android
获取并使用名为的类org.apache.http.entity.ContentType.java
扩展传递依赖org.apache.httpcomponents:httpmime:4.3.6
表明它有org.apache.httpcomponents:httpcore:4.3.6
这与我想使用的包相同。但是在编译或同步构建时,它排除了org.apache.http.entity.ContentType.java
所以我需要添加这个依赖项,其中包括ContentType.java
:
implementation 'org.apache.httpcomponents:httpclient-android:4.3.5.1'
之后一切工作正常。
当我将 gradle-build-version 升级到 3.0.0 后,情况发生了变化。它现在包括所有传递依赖项。因此,在使用最新的 Android Studio 和 gradle-build-tool 版本 3.0.0 进行编译时,我的ContentType.java
被编译了两次。曾经从org.apache.httpcomponents:httpcore:4.3.6
(这是隐式传递依赖httpmime
)并再次从org.apache.httpcomponents:httpclient-android:4.3.5.1
我之前用过。
为了解决这个问题,我必须删除现有的org.apache.httpcomponents:httpclient-android:4.3.5.1
依赖性为httpmime
本身会获取我的应用程序所需的相关类。
针对我的情况的解决方案:仅使用所需的依赖项并删除httpclient-android
implementation 'org.apache.httpcomponents:httpmime:4.3.6'
请注意,这只是我的情况。您需要深入研究自己的依赖关系并相应地应用解决方案。