Android : 새 버전의 gradle로 업데이트 한 후 "Manifest merger failed"오류가 발생 함


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

Eugen Pechanec에 대한 크레딧


1
좋은 것, 이것은 내 nativescript 앱을 빌드 할 때 저에게 효과적이었던 솔루션입니다
ded

7
@Vishal에게 감사드립니다. 그냥 :) 여기에 무슨 일이 일어나고 있는지 설명 할 수
이스마일 이크발

3
최신 버전의 지원 라이브러리를 사용해야합니다 details.useVersion '27.0.0'. 작성 시점은 . 그렇지 않으면 중복 뷰 캐스팅 제거와 같은 최신 지원 기능을 사용할 수 없습니다.
Drew Szurko

9
그것에 대한 약간의 설명을 추가하십시오. 그 작동하지만 업데이트 된 버전과 기능을 작동합니다
Ghanshyam Nayma

1
다른 사람이했다면 오류 '기호 DependencyResolveDetails 확인할 수 없음'을, 나는 (이 동적으로 해결할 수 있도록 내가 그 그루비 이후를 필요로하지 않는 대해 StackOverflow의 어딘가에 읽기) 'DependencyResolveDetails'를 제거하여 고정
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+'

두 개는 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'

사용 25.3.1지원 라이브러리 나에 대해 buildToolsVersion? 위해 buildToolsVersion내가 오류 얻을Package Unavailable
턱시도 세계

@ tux-world : "지원 라이브러리 또는 buildToolsVersion에 25.3.1을 사용 하시겠습니까?" -지원 라이브러리 용. 업데이트 된 답변을 참조하십시오.
CommonsWare

1
나는 그것을 테스트하지만 내 문제가 해결되지 않습니다. 어떤 버전이 켜져 있어야 compileSdkVersion합니까?
tux-world

나는이 메시지를 얻을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
턱시도 세계

1
@ tux-world : 더 이상 build.gradle언급 할 것이 26.0.0-alpha1없습니다. 프로젝트를 정리 (Build> Clean Project)하고 문제가 해결되는지 확인합니다. 그렇지 않은 경우 com.android.support:support-compat:26.0.0-alpha1Gradle 종속성 보고서를 실행하는 것과 같이 가져 오는 항목을 추적해야합니다 .
CommonsWare

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 지원을 사용
앤드류 V.

제 경우에는 minSdkVersion.
Fruit

10

지원 라이브러리의 잘못된 버전에 의존하는 라이브러리를 찾아 다음과 같이 제외 할 수 있습니다.

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

stripe-android 나의 경우에는.


어떻게 알 수 있습니까?
Zapnologica


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

1
이것을 할 때 부작용이 있습니까? 새로운 Android Studio 3에서도 여전히 작동합니까?
Sakiboy

5

나에게도 같은 일이 일어납니다. Gradle-> Build Gradle->을 참조하여 컴파일 "app compat"및 "support design"행에서 호환성이 일치하는지 확인하십시오. 버전이 동일해야합니다.

그런 다음 문제없이 시작되도록 파일-> 프로젝트 구조-> 앱으로 이동하여 빌드 도구 버전의 탭 속성을 확인하십시오. 지원 컴파일 라인과 동일해야합니다. Flavors 탭에도 대상 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

내 앱 모듈 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 19 년

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

메타 데이터를 삭제하고 프로젝트를 다시 빌드하십시오.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.