Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

android manifest merger failed, gms play services / firebase

I am trying to add firebase to my app using the firebaseUI. As the documentations says, I have used the corresponding gms:play-services (11.0.4) with the firebaseUI version (2.2.0) When I sync the gradle files, I receive following error:

Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed : Attribute meta-data#android.support.VERSION@value value=(26.0.0) from [com.android.support:support-v13:26.0.0] AndroidManifest.xml:28:13-35
    is also present at [com.android.support:customtabs:25.4.0] AndroidManifest.xml:25:13-35 value=(25.4.0).
    Suggestion: add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:26:9-28:38 to override.

This is my gradle file:

android {
compileSdkVersion 26
buildToolsVersion "26.0.1"
defaultConfig {
    applicationId "com.test.test"
    minSdkVersion 21
    targetSdkVersion 25
    versionCode 1
    versionName "1.0"
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])


compile 'com.android.support:appcompat-v7:26.0.0'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.android.support:cardview-v7:26.0.0'
compile 'com.android.support:support-v13:26.0.0'
compile 'com.android.support:design:26.0.0'
compile 'com.android.support:recyclerview-v7:26.0.0'

//firebase
compile 'com.google.android.gms:play-services-auth:11.0.4'
compile 'com.google.firebase:firebase-core:11.0.4'
compile 'com.google.firebase:firebase-auth:11.0.4'
compile 'com.google.firebase:firebase-database:11.0.4'
compile 'com.google.firebase:firebase-storage:11.0.4'
compile 'com.firebaseui:firebase-ui:2.2.0'

testCompile 'junit:junit:4.12'
}

//firebase
apply plugin: 'com.google.gms.google-services'

I've made sure that all the versions are up to date and that they are all the same. Can't figure out what the problem is?

like image 666
fogx Avatar asked Aug 07 '17 18:08

fogx


4 Answers

I solved the problem by adding:

    configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '26.0.0'
            }
        }
    }
}

from here.

The tooltip recommended adding tools:replace="android:value"' to meta-data but this throws another error, so im going with the solution above

like image 140
fogx Avatar answered Nov 05 '22 00:11

fogx


I solved it by adding this in AndroidManifest.xml within the <application> tag at the very bottom:

<meta-data 
  tools:node="replace"
  android:name="android.support.VERSION"
  android:value="26.1.0"  // <- The max version you see in the error message. For me it was 26.1.0
/>

Then add these two attributes to the <manifest ... > tag:

xmlns:tools="http://schemas.android.com/tools"
tools:node="replace"
like image 32
Mohebifar Avatar answered Nov 05 '22 02:11

Mohebifar


It's happening because two versions of support libraries are clashing. On top, you have declared

buildToolsVersion "26.0.1"

and in dependencies, the version is 26.0.0

compile 'com.android.support:design:26.0.0'

Just change the support library version to 26.0.1 and it will work fine. I did the same, worked flawlessly in my case.

like image 18
Swetabja Hazra Avatar answered Nov 05 '22 00:11

Swetabja Hazra


add this line at the end of app level gradle file

apply plugin: 'com.google.gms.google-services'
like image 1
Syyam Noor Avatar answered Nov 05 '22 00:11

Syyam Noor