android清单合并失败,gms播放服务/ firebase

时间:2017-08-07 18:02:55

标签: android firebase android-manifest firebaseui

我正在尝试使用firebaseUI向我的应用添加firebase。 As the documentations says, I have used the corresponding gms:play-services (11.0.4) with the firebaseUI version (2.2.0) 当我同步gradle文件时,收到以下错误:

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.

这是我的gradle文件:

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'

我确保所有版本都是最新的,并且它们都是相同的。无法弄清问题是什么?

8 个答案:

答案 0 :(得分:46)

我通过添加:

解决了这个问题
    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.

工具提示建议添加工具:replace =&#34; android:value&#34;&#39;对于元数据,但这会引发另一个错误,所以我要使用上面的解决方案

答案 1 :(得分:21)

我在最底层AndroidManifest.xml标记的<application>中添加了此内容,解决了这个问题:

<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
/>

然后将这两个属性添加到<manifest ... >标记:

xmlns:tools="http://schemas.android.com/tools"
tools:node="replace"

答案 2 :(得分:16)

这种情况正在发生,因为两个版本的支持库发生了冲突。最重要的是,你宣布了

buildToolsVersion "26.0.1"

在依赖项中,版本为26.0.0

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

只需将支持库版本更改为26.0.1即可正常工作。我做了同样的事情,在我的情况下完美地工作。

答案 3 :(得分:1)

在app level gradle文件的末尾添加此行

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

答案 4 :(得分:0)

我能够通过胡扯来解决 compile 'com.android.support:appcompat-v7:26.0.0'并手动添加库,表示错误,例如

compile 'com.android.support:cardview-v7:26.0.0'
compile 'com.android.support:animated-vector-drawable:26.0.0'
compile 'com.android.support:customtabs:26.0.0'

答案 5 :(得分:0)

将此行添加到您的清单

 <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"
        tools:replace="android:value" />

完全如“application”标签内所示。

答案 6 :(得分:0)

由于您添加了不同的库,因此出现了此类错误。 添加库时,请确保它们都具有相同的版本,并且彼此之间可以正常工作。

答案 7 :(得分:0)

当您在应用模块的build.gradle中使用同一库的不同版本来实现时,会发生这种情况。您可以通过实现相同版本的库来解决此问题。

如果问题仍然存在,请在build.gradle(应用程序模块)末尾添加以下代码

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