How to solve Facebook tools:replace="android:theme"?
Asked Answered
E

6

58

I have

compile 'com.facebook.android:facebook-android-sdk:4.16.0'

My manifest:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
...
    <application
            android:name=".MyApplication"
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AutoTheme"
            tools:replace="android:theme">

How to solve compile error:

Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed : Attribute activity#com.facebook.FacebookActivity@theme value=(@android:style/Theme.Translucent.NoTitleBar) from AndroidManifest.xml:69:13-72
    is also present at [com.facebook.android:facebook-android-sdk:4.16.0] AndroidManifest.xml:32:13-63 value=(@style/com_facebook_activity_theme).
    Suggestion: add 'tools:replace="android:theme"' to <activity> element at AndroidManifest.xml:66:9-70:47 to override.
Elenor answered 28/9, 2016 at 17:28 Comment(4)
It's showing error on activity tag. You need to remove style or provide tools:replace="android:theme" to your <activity> tag. Paste your whole manifest file here.Stop
It's some error in Facebook SDK v4.16 https://mcmap.net/q/331681/-execution-failed-for-task-39-app-processdebugmanifest-39-after-android-studio-2-2-updateSqueal
just follow this link. you'll find the answer..Ireneirenic
It seems like we have to either add tools:replace="android:theme or remove android:theme="@android:style/Theme.Translucent.NoTitleBar" from our AndroidManifest.xml file. Both ways worked for me. But which way is preferred? The current Facebook Android SDK version is 4.16.1 and the issue is that manifest merger failed due to [com.facebook.android:facebook-android;sdk:4.16.1] also having android:theme="@android:style/Theme.Translucent.NoTitleBar". I believe that removing android:theme="@android:style/Theme.Translucent.NoTitleBar" is better.Dietsche
H
105

1) Add xmlns:tools="http://schemas.android.com/tools" to <manifest> element at AndroidManifest

2) Add tools:replace="android:theme" to (facebook activity) <activity>

Here is my manifest file

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.company.product" xmlns:tools="http://schemas.android.com/tools">

    ...

    <application
      android:allowBackup="true"
      android:label="@string/app_name"
      android:icon="@mipmap/ic_launcher"
      android:theme="@style/AppTheme"
      android:name="MyApplication">
      <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:screenOrientation="portrait"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
        <intent-filter>
            ...
        </intent-filter>
      </activity>

      <!--FacebookActivity-->
      <activity
        tools:replace="android:theme"
        android:name="com.facebook.FacebookActivity"
        android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Translucent.NoTitleBar"/>

        ...

      </application>

</manifest>
Hebetate answered 30/9, 2016 at 7:50 Comment(4)
I disagree. There is no need to add xmlns:tools="http://schemas.android.com/tools" to <manifest> and add tools:replace="android:theme" to <activity>. Its better to just remove android:theme="@android:style/Theme.Translucent.NoTitleBar" from the <activity> xml tag since the latest Facebook SDK 4.16.1 already includes it. But either way works, so it doesn't matter from that standpoint.Dietsche
@Dietsche Can you share where you found that information regarding Facebook SDK 4.16.1 including the android:theme? Facebook's official docs still recommend adding the android:theme attribute.Antecedent
Thanks its help meAramanta
Thanks bro, it worked. I wonder what kind of genius develops an SDK that has conflicts for integrating the most basic use case (Login)Crony
A
7

Try this.

 <activity
                android:name="com.facebook.FacebookActivity"
                android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
                android:label="@string/app_name"
                android:theme="@android:style/Theme.Translucent.NoTitleBar" />

Replace to

  <activity
            android:name="com.facebook.FacebookActivity"
            android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
            android:label="@string/app_name"
            android:theme="@style/com_facebook_activity_theme" />
Ardy answered 30/9, 2016 at 10:34 Comment(1)
No need to replace. Just remove android:theme="@android:style/Theme.Translucent.NoTitleBar"Dietsche
T
4

In your manifest, remove

android:theme="@android:style/Theme.Translucent.NoTitleBar"

in the FacebookActivity

Edit: Do you use firebase as well? If so, have a look here Android manifest merger with facebook and firebase libraries

Tripterous answered 28/9, 2016 at 17:34 Comment(2)
FacebookActivity it's class file is in libraryElenor
I prefer this solution as well.Dietsche
P
3

You Just have to use the this in your Manifest for the FacebookActivity

  <activity android:name="com.facebook.FacebookActivity"
            android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
            tools:replace="android:theme"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:label="@string/app_name" />
Puryear answered 29/9, 2016 at 9:43 Comment(0)
H
1

Remove this line @android:style/Theme.Translucent.NoTitleBar

This will solve your problem

(This way you will avoid manifest propery conflict)

Habitat answered 21/2, 2017 at 16:0 Comment(0)
C
0

In my case I changed the attribute android:theme="${appTheme}" (where manifestPlaceholders["appTheme"] = "@style/Theme2" in build.gradle) and got a compile error:

Execution failed for task ':app:processGoogleDebugManifest'. Manifest merger failed : Attribute application@theme value=(@style/Theme) from AndroidManifest.xml:23:9-42 is also present at AndroidManifest.xml:21:9-36 value=(@style/Theme2).
Suggestion: add 'tools:replace="android:theme"' to element at AndroidManifest.xml:15:5-92:19 to override.

I have 3 AndroidManifest files. Then I changed android:theme in all 3 files.

Cycle answered 18/5, 2023 at 12:51 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.