Android:更新到新版本的gradle后出现"Manifest merger failed"错误

tux*_*rld 107 android

在接受将项目更新为新版本的gradle后,我收到此错误:

Error:Execution failed for task ':app:processDebugManifest'.
Manifest merger failed : Attribute meta-data#android.support.VERSION@value value=(26.0.0-alpha1) from [com.android.support:cardview-v7:26.0.0-alpha1] AndroidManifest.xml:24:9-38
    is also present at [com.android.support:design:25.3.1] AndroidManifest.xml:27:9-31 value=(25.3.1).
    Suggestion: add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:22:5-24:41 to override.
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?这是我的应用程序build.gradle文件:

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "com.sample.bookReader"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
    }
    ...
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:multidex:+'
    compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
    compile 'com.android.support:cardview-v7:26.0.0-alpha1'
    compile 'com.android.support:design:25+'
    compile 'com.jakewharton:butterknife:8.2.1'
    apt 'com.jakewharton:butterknife-compiler:8.2.1'
    ...
}
Run Code Online (Sandbox Code Playgroud)

这是项目的build.gradle:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.1'
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
    }
}

allprojects {
    repositories {
        jcenter()
        maven { url "https://www.jitpack.io" }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
Run Code Online (Sandbox Code Playgroud)

如何在保持更新gradle版本所做的更改的同时修复此错误?

Vis*_*hal 206

把它放在app模块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'
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 请添加关于它的位描述.它的工作,但它将适用于更新版本和功能 (8认同)
  • 这对我也有用,谢谢@Vishal.你能解释一下这里发生了什么:) (7认同)
  • 确保使用最新版本的支持库,在撰写本文时,它是`details.useVersion '27 .0.0'`。否则,您将没有最新的支持功能,例如消除多余的视图投射。 (2认同)

Com*_*are 89

您正在使用多个版本的Android支持库:

compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
compile 'com.android.support:cardview-v7:26.0.0-alpha1'
compile 'com.android.support:design:25+'
Run Code Online (Sandbox Code Playgroud)

两个是26.0.0-alpha1,一个是使用25+.

选择一个具体版本并将其用于所有这三个版本.由于您compileSdkVersion不是O,因此使用25.3.1所有这三个库,导致:

compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:cardview-v7:25.3.1'
compile 'com.android.support:design:25.3.1'
Run Code Online (Sandbox Code Playgroud)


Dar*_*ush 18

我将所有支持库版本更改为25.3.1并且像魅力一样工作:

compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:design:25.3.1'
Run Code Online (Sandbox Code Playgroud)

您还需要将compileSdkVersiontargetSdkVersion更改为25:

compileSdkVersion 25
targetSdkVersion 25
Run Code Online (Sandbox Code Playgroud)


小智 9

您可以找出哪些库依赖于错误版本的支持库,并将其排除在外:

compile ('com.stripe:stripe-android:5.1.1') {
    exclude group: 'com.android.support'
  }
Run Code Online (Sandbox Code Playgroud)

stripe-android 在我的情况下.


小智 6

我没有使用不同版本的库并得到相同的错误,它发生buildToolsVersion在AS RC 1中删除后,但添加tools:node="replace" 了诀窍,只需将其添加到<application ..../>块内的manifest.xml中:

<meta-data 
 tools:node="replace"
 android:name="com.google.android.gms.version"
 android:value="@integer/google_play_services_version" />
Run Code Online (Sandbox Code Playgroud)


小智 5

它对我来说也是一样的.请参阅Gradle - > Build Gradle - >并确保兼容性在编译"app compat"和"support design"行中都匹配,它们应该具有相同的版本.

然后要确定,它会毫无问题地启动,转到文件 - >项目结构 - >应用程序并检查选项卡属性构建工具版本,它应该与您的支持编译行相同,以防万一我放目标SDK版本也是25,也可以在选项卡Flavors上找到.

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-
   core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    *compile 'com.android.support:appcompat-v7:25.3.1'*
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
    *compile 'com.android.support:design:25.3.1'*
}
Run Code Online (Sandbox Code Playgroud)

多数民众赞成我所做的和工作.祝好运!