Android : 새 버전의 gradle로 업데이트 한 후 “Manifest merger failed”오류가 발생 함 해결할 수 있습니까?

프로젝트를 새 버전의 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아닌 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로 변경하고 매력처럼 작동했습니다.

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 나의 경우에는.


답변

다른 버전의 라이브러리를 사용하지 않고 동일한 오류가 발생했습니다 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" />

답변

나에게도 같은 일이 일어납니다. 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'*
}

그게 내가하고 일한 것입니다. 행운을 빕니다!


답변

  • 지원 라이브러리를 최신 버전으로 업데이트

  • 을 열고 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