Android 与 facebook 和 firebase 库合并

Android manifest merger with facebook and firebase libraries

我在我的项目中导入了 2 个库(在 gradle 文件中):

...
/* Firebase UI */
compile 'com.firebaseui:firebase-ui:0.4.0'

/* Facebook login */
compile 'com.facebook.android:facebook-android-sdk:4.13.0'

但是在构建我的项目时出现以下错误:

D:\Android\Projects\quoter\app\src\main\AndroidManifest.xml:68:13-58 Error: Attribute activity#com.facebook.FacebookActivity@theme value=(@style/FirebaseUI.Translucent) from [com.firebaseui:firebase-ui-auth:0.4.0] AndroidManifest.xml:68:13-58 is also present at [com.facebook.android:facebook-android-sdk:4.13.0] AndroidManifest.xml:32:13-72 value=(@android:style/Theme.Translucent.NoTitleBar). Suggestion: add 'tools:replace="android:theme"' to element at AndroidManifest.xml:64:9-68:61 to override.

我找到了包含 Facebook sdk 和 Firebase UI 库清单文件的扩展 jar,但我不确定更改它们是否是解决此错误的正确方法,因为每次我清理和重新构建我的项目新的清单也生成了...

我该如何解决这个错误?在我看来,这两个库之间不兼容...

注意:在我的应用清单中添加以下内容

<application
    tools:node="replace"

解决了这个问题,但是无法启动应用程序,因为 Firebase 没有正确初始化(参见

不幸的是,"tools:replace" 对我不起作用,但是 Firebase UI 中的一个 GitHub 问题有一个解决方案 https://github.com/firebase/FirebaseUI-Android/issues/230

But FirebaseUI already depends on version 4.11.0 of the SDK. Can you try removing your Facebook dependency and just relying on the transitive dependency brought in by FirebaseUI?

FirebaseUI 已经为您编译了 Facebook,所以当您尝试同步时,它基本上会抛出错误,因为您正在尝试编译相同的东西两次。

删除 compile 'com.facebook.android:facebook-android-sdk:4.13.0' 并保留:compile 'com.firebaseui:firebase-ui:0.4.0'

大功告成!

别担心!您仍将拥有 Facebook 登录名

如果 FirebaseUI Android and FirebaseUI Auth Android,我建议您阅读一次文档。它们非常详尽,很可能会消除您的疑虑。