繁体   English   中英

Android:更新至新版本的Gradle后,出现“清单合并失败”错误

[英]Android: Getting “Manifest merger failed” error after updating to a new version of gradle

接受将项目更新为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.

我怎么解决这个问题? 这是我的应用程序的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'
    ...
}

这是项目的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
}

我如何解决此错误,同时保持通过更新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'
            }
        }
    }
}

归功于Eugen Pechanec

您正在使用多个版本的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+'

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

选择一个具体版本并将其用于所有这三个版本。 由于您的compileSdkVersion不是O25.3.1对所有这三个库都使用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'

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

compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:design:25.3.1'

您还需要将compileSdkVersiontargetSdkVersion更改为25:

compileSdkVersion 25
targetSdkVersion 25

您可以找出哪个库依赖于错误的支持库版本,并像这样排除它:

compile ('com.stripe:stripe-android:5.1.1') {
    exclude group: 'com.android.support'
  }

在我的情况下, stripe-android

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

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

这件事对我来说也是一样。 请参阅Gradle-> Build Gradle->,并确保兼容性在“ app compat”和“ support design”行中均匹配,它们应具有相同的版本。

然后要超级确定,它将毫无问题地启动,请转到“文件”->“项目结构”->“应用”,然后检查选项卡中的“构建工具”版本,它应该与您的支持编译行相同,以防万一我放了风味选项卡上的目标SDK版本也为25。

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'*
}

那就是我所做的工作。 祝好运!

  • 将支持库更新到最新版本

  • 打开Manifest File ,并将其添加到清单文件中

  • <uses-sdk tools:overrideLibrary="android.support.v17.leanback"/>

  • 并在>> build.gradle Module app添加recyclerview:

  • compile 'com.android.support:recyclerview-v7:25.3.1'

  • 然后单击: Sync Now

我将其放在我的应用程序模块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 '26.0.0'
        }
    }
  }
}

答案是可以接受的,但是您还可以做的一件事是从项目结构中定义库。 您可以做的是:

  1. 评论所有即将出现问题的库
  2. 转到您的项目结构
  3. 从那里添加库,它将自动同步,问题解决了。
  4. 如果问题仍然存在,请按照上面的所有3个步骤尝试从错误日志中查找所需的库。

现在发生的事情是预定义的库已关闭,现在我使用appcompat:26.0.0-alpha1 ,当您添加新内容并尝试使用旧内容来解决它时,它将使用旧版本的东西。 当您从项目结构中添加它时,它将添加相同的内容,但添加新的内容来解决它。 您的问题将得到解决。

对我来说,错误是:

Manifest merger failed : Attribute meta-data#android.support.VERSION@value value=(26.0.2) from [com.android.support:percent:26.0.2] AndroidManifest.xml:25:13-35
    is also present at [com.android.support:support-v4:26.1.0] AndroidManifest.xml:28:13-35 value=(26.1.0).
    Suggestion: add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:23:9-25:38 to override.

对我来说,解决方案是在我的项目Gradle文件中,需要更改com.google.gms:google-services版本。

我正在使用3.1.1版本:

classpath 'com.google.gms:google-services:3.1.1

我将其升级到3.2.1版后,该错误已解决:

classpath 'com.google.gms:google-services:3.2.1

当我看到错误时,我刚刚将所有库升级到最新版本,包括所有支持库的v27.1.1和所有Firebase库的v15.0.0。

我已经为Wear OS更新了旧的android项目。 构建项目时出现此错误消息:

Manifest merger failed : Attribute meta-data#android.support.VERSION@value value=(26.0.2) from [com.android.support:percent:26.0.2] AndroidManifest.xml:25:13-35
is also present at [com.android.support:support-v4:26.1.0] AndroidManifest.xml:28:13-35 value=(26.1.0).
Suggestion: add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:23:9-25:38 to override.

我的Wear应用程序build.gradle包含以下依赖项:

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.google.android.support:wearable:2.4.0'
implementation 'com.google.android.gms:play-services-wearable:16.0.1'
compileOnly 'com.google.android.wearable:wearable:2.4.0'}

解决方案

implementation 'com.android.support:support-v4:28.0.0'添加到依赖项中解决了我的问题。

尝试删除元数据并重建项目。

你尝试阅读链接

错误:任务':app:processDevDebugManifest'的执行失败。 清单合并失败:属性元数据#android.support.VERSION@value value =(25.3.0),然后再使用VERSION 26.0.0

https : //medium.com/@PongPloyAppDev/error-execution-failed-for-task-app-processdevdebugmanifest-48576be751

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM