Android:新しいバージョンのGradleに更新した後に「マニフェストのマージに失敗しました」エラーが発生する


108

プロジェクトを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バージョンの更新による変更を維持しながら、このエラーを修正するにはどうすればよいですか?

回答:


212

これをアプリモジュール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'
            }
        }
    }
}

功績オイゲンPechanec


1
ニースの一つは、これは私のnativescriptアプリ構築するときに私のために働いたソリューションです
DED

7
これも私にとってはうまくいきました。@ Vishalに感謝します。ここで何が起こっているのか説明していただけますか:)
Ismail Iqbal

3
サポートライブラリの最新バージョンを必ず使用してくださいdetails.useVersion '27.0.0'。これは、執筆時点ではです。そうしないと、冗長なビューキャストの削除など、最新のサポート機能を利用できません。
Drew Szurko

9
それについてのビットの説明を追加してください。動作しますが、更新されたバージョンと機能で動作します
Ghanshyam Nayma '28

1
他の誰かが「シンボルのDependencyResolveDetailsを解決できません」エラーが発生した場合は、「DependencyResolveDetails」を削除して修正しました(GroovyからStackOverflowを必要としないことについてどこかで読んだので、動的に処理できるようになりました)
knjk04

90

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+'

2つはで26.0.0-alpha1、1つはを使用してい25+ます。

具体的なバージョンを1つ選び、3つすべてに使用します。あなたのcompileSdkVersionisではないので、これらの3つのライブラリすべて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'

25.3.1サポートライブラリに使用するbuildToolsVersionか、ためbuildToolsVersion、私はエラーを取得Package Unavailable
タキシード-世界

@ tux-world:「サポートライブラリまたはbuildToolsVersionに25.3.1を使用していますか?」-サポートライブラリ用。私の更新された答えを見てください。
CommonsWare 2017

1
私はそれをテストしましたが、私の問題は解決しません、どのバージョンがオンでなければなりませんcompileSdkVersionか?
tux-world 2017

このメッセージが表示されるAll com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 26.0.0-alpha1, 25.3.1. Examples include com.android.support:support-compat:26.0.0-alpha1 and com.android.support:animated-vector-drawable:25.3.1
tux-world 2017

1
@ tux-world:あなたの中に何build.gradleも参照してい26.0.0-alpha1ないはずです。プロジェクトをクリーンアップして(ビルド>プロジェクトのクリーンアップ)、問題が解消するかどうかを確認してください。そうでない場合は、com.android.support:support-compat:26.0.0-alpha1Gradle依存関係レポートを実行するなどして、何が取り込まれているかを追跡する必要があります。
CommonsWare 2017

18

私はすべてのサポートライブラリのバージョンを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

同意し、上記の回答は適切ですが、エラーの理由は、gradleファイルに異なるバージョンを設定したことです。26か25のサポートを使用するだけ
AndrewV。

私の場合はminSdkVersion
フルーツ

10

どのライブラリがサポートライブラリの間違ったバージョンに依存しているかを調べて、次のように除外できます。

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

stripe-android 私の場合。


どのようにして見つけますか?
Zapnologica


6

ライブラリの異なるバージョンを使用していないのに同じエラーが発生しましたbuildToolsVersion。ASRC 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" />

1
これを行うときに副作用はありますか?新しいAndroid Studio 3でも引き続き機能しますか?
Sakiboy 2017年

5

私にも同じことが起こります。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'*
}

それは私がやったことと働きました。幸運を!


3
  • サポートライブラリを最新バージョンに更新する

  • を開きManifest File、マニフェストファイルに追加します

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

  • >>にrecyclerviewを追加しますbuild.gradle Module app

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

  • そしてクリック: Sync Now


3

私はこれを私の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 '26.0.0'
        }
    }
  }
}

あなたは本当に私の日を作りました。
Hamed Jaliliani

2

答えは受け入れられますが、プロジェクト構造からライブラリを定義することもできます。あなたができることは:

  1. 問題が発生しているすべてのライブラリにコメントする
  2. プロジェクト構造に移動する
  3. そこからライブラリを追加すると、自動的に同期され、問題が発生します。
  4. 問題が解決しない場合は、上記の3つの手順をすべて実行した後、エラーログからどのライブラリが要求しているかを調べてください。

何が起こるかは、事前定義されたライブラリーがオフになったためです。今、appcompat:26.0.0-alpha1を取得しています。新しいものを追加し、古いもので解決しようとすると、古いバージョンのものを使用します。プロジェクト構造から追加すると、同じものが追加されますが、解決するための新しいものが追加されます。あなたの問題は解決されるでしょう。


0

私のエラーは:

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.

私の解決策は、com.google.gms:google-servicesバージョンをバンプするために必要なプロジェクトのGradleファイルにありました。

私はバージョン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が含まれます。


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'依存関係に追加することで問題が解決しました。


0

メタデータを削除して、プロジェクトを再構築してください。


-4

あなたはこのリンクを読んでみてください

エラー:タスク ':app:processDevDebugManifest'の実行に失敗しました。マニフェストのマージに失敗しました:属性meta-data#android.support.VERSION@value値=(25.3.0)、次にUSD VERSION 26.0.0

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

ここに画像の説明を入力してください


え?何を言おうとしているのですか?これはどのように役立ちますか?
Sakiboy 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.