매니페스트 병합 실패 : uses-sdk : minSdkVersion 14


233

최신 SDK를 다운로드하고 Android Studio를 설치 한 후 프로젝트가 빌드되지 않습니다. 다음과 같은 메시지가 나타납니다.

Error:Gradle: Execution failed for task ':SampleProject:processProdDebugManifest'.
> Manifest merger failed : uses-sdk:minSdkVersion 14 cannot be smaller than version L declared in library com.android.support:support-v4:21.0.0-rc1

''app : processDebugManifest '작업에 대해 같은 오류 Error : Execution failed가 발생했습니다. > 매니페스트 합병 실패 : 사용-SDK : minSdkVersion이 19 라이브러리 com.android.support:support-v4:21.0.0-rc1에 선언 된 버전이 19보다 작을 수 없습니다
bobby.dhillon

저도 같은 예외의 minSdkVersion 15 내가 안드로이드 스튜디오와 새로운 빌드 도구에서의 버그를 추측 있도록 업데이트되었습니다 SDK 빌드 도구 버전 (15)보다 작을 수 없습니다 받고 있어요
Boardy

1
: 버그 것 같다 code.google.com/p/android/issues/detail?id=72430 지금은 수정이 받는다는-metadata.xml에 줄을 주석하는 것입니다
엠마누엘 Canha

답변:


312

참고 : 이것은 API 21, Lollipop의 릴리스를 반영하여 업데이트되었습니다. 최신 SDK를 다운로드하십시오.

내 모듈 중 하나에서 build.gradle에 다음이 있습니다.

dependencies {
    compile 'com.android.support:support-v4:+'
}

이것을 다음으로 변경

dependencies {
    // do not use dynamic updating.
    compile 'com.android.support:support-v4:21.0.0' 
}

문제를 해결했습니다.

com.android.support:support-v4:+프로젝트의 어느 곳에서나 일반적인 지원 라이브러리 (v7, v13, appcompat 등)를 포함하지 않아야합니다.

나는 문제가 가정 줄 v4:+위 종목 릴리스 후보 (21.0.0-RC1) 분명히 L SDK를 필요로 최신 L 릴리스.

편집하다:

새보기 (CardView, RecyclerView 및 Palette)를 사용해야하는 경우 다음이 작동합니다.

compile "com.android.support:cardview-v7:21.0.0"
compile "com.android.support:recyclerview-v7:21.0.0"
compile "com.android.support:palette-v7:21.0.0"

(/ androiddev- http: //www.reddit.com/r/androiddev/comments/297xli/howto_use_the_v21_support_libs_on_older_versions/의 EddieRingle에게 감사의 말씀 )

다른 편집

appcompat-v7과 관련하여 아래 @murtuza의 답변을 확인하고 도움이된다면 공감하십시오!


3
Maven에서 컴파일 한 라이브러리는 어떻습니까? "오래된"의존성을 배제하는 방법?
Arnaud

4
@Arnaud compile ( "blah : blah : bla") {그룹 제외 : 'com.android.support', 모듈 : 'support-v4'}
AndroidGecko

3
CardView, RecyclerView 및 Palette를 사용하려면 병합 충돌 gradle throw를 피하기 위해 Manifest를 변경해야합니다. 자세한 내용은이 링크를 참조하십시오 : reddit.com/r/androiddev/comments/297xli/…
Michel

3
절대로 사람들에게 의존 버전에서 +를 사용하도록 제안하지 마십시오. 항상 사용하려는 라이브러리의 정확한 버전을 지정하십시오 (또는 코드를 작성할 때 사용 가능). 심지어 20. +도 나쁘다. 그리고 당신이 의존하는 라이브러리 가이 나쁜 습관을 따르는 것은 의존성을 배제하고 자신의 의존성 버전을 제공하는 것을 고려하십시오. 이렇게하면 언제든지 빌드를 재현 할 수 있습니다. 의존성 버전에서 +를 사용하도록 제안을 제거하여 답변 구매를 개선하십시오.
Daniele Segato

1
@DanieleSegato가 말한 것. 동적 버전 관리를 권장하지 않습니다. 나쁜 습관입니다.
Xavier Ducrohet

69

또한 appcompat-v7 라이브러리를 가져 오는 경우 버전 번호 끝에 다음과 같이 버전 번호를 지정해야합니다.

compile 'com.android.support:support-v4:19.+'
compile 'com.android.support:appcompat-v7:19.+'

support-v4 버전 만 변경 한 후에도 여전히 오류가 발생했습니다.

매니페스트 병합 실패 : uses-sdk : minSdkVersion 15는 라이브러리 com.android.support:support-v4:21.0.0-rc1에 선언 된 버전 L보다 작을 수 없습니다.

v4가 여전히 문제인 것처럼 보이기 때문에 약간 혼란 스러웠지만 실제로 appcompat v7 버전을 제한하면 문제가 해결되었습니다.


잘 잡아! 내 v7 중 어느 것도 그들 버전이 없었습니다.
RoundSparrow hilltx 2018 년

v13 지원에 대해서도 마찬가지입니다)
Defuera

1
나도 appcompat_v7의 불일치가 있었다 buildToolsVersion '20.0.0'내에서 android{}그리고 compile 'com.android.support:appcompat-v7:20.0+'내에서 dependencies {}(다음과 같이) 내가 그들 동일하게하므로, 동일하지 않았다.
Azurespot

1
이후 버전에 + 식별자 를 사용하는 것은 좋지 않습니다 . 정확한 버전을 지정하십시오. 'com.android.support:appcompat-v7:19.+' 를이 'com.android.support:appcompat-v7:19.0.0' 으로 업데이트 하거나 최신 버전 으로 업데이트하는 것이 좋습니다 . 여전히 문제가 발생하면 SDK 관리자에서 지원 라이브러리업데이트하십시오 .
sud007

55

해결책 1 :

uses-sdk를 변경 <uses-sdk tools:node="replace" />하고 추가하십시오 xmlns:tools="http://schemas.android.com/tools" .AndroidManifest.xml

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.demo.android"
    android:versionCode="16"
    android:versionName="3.3.1">
    .
    .
    <uses-sdk tools:node="replace" />
    .
    .
</manifest>

매니페스트 병합을 사용하려면 gradle 0.11 이상을 사용해야합니다.

해결책 2 :

  • 변경 compile 'com.android.support:support-v4:+'compile 'com.android.support:support-v4:20.+'에서 build.gradle. 그래야 v4:21.0.0버전 L이 필요한 gradle을 사용할 수 없습니다 .

  • 그러나 외부 종속성 중 하나가 동일한 것을 사용하는 경우. 당신은 아마 그들이 동일한 업데이트를 기다려야 할 것입니다.

해결책 3 :

  • <version>21.0.0-rc1</version>파일에서 제거 / 설명<android-sdk>/extras/android/m2repository/com/android/support-v4/maven-metadata.xml

  • support-v7에 대해 동일하게 반복


필자의 경우 appcompat-v7에 상응하는 것도 제거해야했습니다.
eipipuz

2
예, 솔루션 2를 옵션으로 제공하지 마십시오. 올바른 종속성 관리 (적절한 버전 사용) 또는 해결 전략 사용이 올바른 솔루션입니다. maven 저장소를 편집하면 새 저장소가 해제 될 때까지만 문제가 지연됩니다.
Xavier Ducrohet

솔루션 1 + 3은 내 생명을 구했습니다 :)
Climbatize

2
첫 번째 옵션이 작동합니다! 왜 이런 일을해야하는지에 대한 세부 사항을 추가 할 것을 제안합니다.
Tejasvi Hegde


11

문제는 여전히 전이 의존성에서 발생합니다. Gradle은 특정 버전의 종속성을 강제로 사용하는 방법을 제공합니다.

예를 들어 다음과 같은 것을 추가 할 수 있습니다.

configurations.all {
    resolutionStrategy {
        force 'com.android.support:support-v4:20.+'
        force 'com.android.support:appcompat-v7:20.+'
    }
}

build.gradle에.

gradle resolution 전략에 대한 자세한 내용은이 안내서를 참조하십시오. http://www.gradle.org/docs/current/dsl/org.gradle.api.artifacts.ResolutionStrategy.html

여기에 링크 할 해당 문제를 읽는 동안 이것을 발견했습니다.


감사! 모든 의존성에 배제하는 것보다 쉽다 :)
Sloy

8

build.gradle 파일에서는 기본적으로 컴파일 'com.android.support:support-v4:+'이므로 gradle projecit를 빌드하면 com.android.support:support-v4:21.0.0-rc1을 고려합니다. 최근 L 개발자 프리뷰 릴리스로 인해

다음 줄을 변경하면 문제가 해결됩니다. 변화

compile 'com.android.support:support-v4:+' 

compile 'com.android.support:support-v4:20.+'

v7-appcompat 지원 라이브러리를 사용할 때와 마찬가지로

compile 'com.android.support:appcompat-v7:+'

compile 'com.android.support:appcompat-v7:20.+'.

8

위의 정답에 추가하면 라이브러리 중첩으로 인해 문제가 계속 발생할 수 있습니다. 이 경우 아래 예제로 시도하십시오.

compile 'com.android.support:support-v4:20.+'
compile ('com.github.chrisbanes.actionbarpulltorefresh:extra-abs:+') { // example
    exclude group: 'com.android.support', module:'support-v4'
    exclude group: 'com.android.support', module:'appcompat-v7'
}

7

cordova CLI를 사용하여 하이브리드 앱을 빌드하는 사람들에게이 명령은 다음과 같은 이점을 제공합니다.

cordova build android -- --minSdkVersion=15

네, 보았 듯이 이중 이중 대시를 사용합니다.


이것이 실제 문제를 해결합니까? 아니요. 그렇게 작동하지만 cordova run android실패합니다.
Ionut Necula

@lonut 당신은 실제 문제가 무엇인지 아십니까?
ProllyGeek

내 경우에는 문제는 내가 사용하는 플러그인 cordova-plugin-facebook4입니다. Unistalling하면 cordova run android제대로 작동합니다. 불행히도 나는 이것에 대한 해결책을 찾지 못했습니다. 수동으로 minSdkVersion자신 을 추가하려고했지만 AndroidManifest덮어 쓰고 있습니다. 아직도 알아 내려고 노력 중입니다.
Ionut Necula

@lonut 내가 일하고있는 일부 응용 프로그램에서 동일한 플러그인을 사용하고 있습니다. 도움이 될 수 있는지 알려주십시오. 그러나 build.gradle 파일을 검토해야합니다. 추가 정보를 제공하면 도와 드리겠습니다.
ProllyGeek

나는 마지막으로 변경하여 그것을 해결 minSdk에 버전 15에서 config.xml. 줄 : <preference name="android-minSdkVersion" value="14" />. 이렇게하면 AndroidManifest파일이 새 버전으로 업데이트됩니다.
Ionut Necula

6

나도 같은 문제가 있었고 다음을 변경하면 도움이되었습니다.

에서:

dependencies {
    compile 'com.android.support:support-v4:+'

에:

dependencies {
 compile 'com.android.support:support-v4:20.0.0'
}

코드가 아닙니다. build.gradle 파일에서이 변경을 수행해야합니다.
min2bro

6

Android Studio 베타 에서이 문제에 직면 한 사람들의 경우 허용되는 답변으로 문제가 해결되지 않았습니다. GitHub에서 다운로드 한 프로젝트를 가져올 때 app.의 build.gradle 파일에 다음과 같은 오류가 발생했습니다.

 dependencies {
    compile 'com.android.support:support-v4:+'
}

그러나 내 외부 라이브러리 폴더에는 다음 폴더가 있습니다.

support-v4-21.0.0-rc1 //note the 21

종속성을 다음과 같이 변경하여 위의 문제를 해결했습니다.

dependencies {
compile 'com.android.support:support-v4:20.+' //20 used less than available strange but works
}

참고 : 일부 라이브러리 및 프로젝트가 제대로 작동하려면 Android Studio에서 현재 사용 가능한 것보다 낮은 api 레벨을 다운로드해야 할 수도 있습니다.


이것은 " 'com.android.support:support'를 볼 수있는 곳마다"근본적인 문제인 것 같습니다. ""최신 가치를 가지고 있는지 확인하십시오. "그 정도의 크기입니다!
Fattie

5

build.gradle 에서 아래 줄을 편집하여 문제를 해결했으며 작동합니다! :-)

버전 20. + ' 추가

에서

 dependencies {
        compile 'com.android.support:appcompat-v7:+'
    }

dependencies {
    compile 'com.android.support:appcompat-v7:20.+'
}

1
믿을 수가 없어 이 답변을 제외하고는 위의 다른 답변 중 어느 것도 나를 위해 일하지 않았습니다. 감사합니다!!! 참고로, 지원 파일 v4v7지원 파일을 모두로 변경 해야했습니다 :20.+.
Azurespot


4

모든 지원 및 appcompat 라이브러리를 버전 19로 구성해야합니다. +

지원 라이브러리를 19. + 버전으로 남겨 두라는 권장 사항이 작동하지 않으면 AndroidManifest 파일에서 다음 팁을 시도해 볼 수 있습니다.

먼저이 코드를 추가하십시오 :

xmlns:tools="http://schemas.android.com/tools"

그런 다음 응용 프로그램 수준에서 (응용 프로그램 내부가 아님)

<uses-sdk tools:node="replace" />

4

나는 여기에 모든 솔루션을 결과없이 만들었습니다. 따라서 다른 곳을보고 IDE를 속일 수있는 방법을 찾았습니다. 그래서 Gradle을 다른 것을 사용하도록 Mainfest에 줄을 넣어야합니다. 당신은 build.gradle을 입었습니다.

<uses-sdk tools:node="replace" />

그냥 작동합니다.

도움이 되길 바랍니다.


3
: 추가 기억 xmlns:tools="http://schemas.android.com/tools"<manifest>-tag
SEB


3

이 btw에 제출 된 새로운 버그는 다음과 같습니다. https://code.google.com/p/android/issues/detail?id=72430

Support Repository를 사용한다고 가정하면 해결 방법은 행을 주석 처리하거나 제거하는 것입니다.

/extras/android/m2repository/com/android/support-v4/maven-metadata.xml에있는 로컬 Maven 리포지토리 목록 파일의 21.0.0-rc1


1

나를 위해 이와 같은 문제는

minSdkVersion 14

build.gladdle 파일에서 오류 메시지에 지정된 파일을 사용하십시오.

그러나 문제는

Manifest merger failed : uses-sdk:minSdkVersion 14 cannot be smaller than version 15 declared in library

그래서 build.gladdle 파일에서 14에서 15로 변경했으며 작동합니다.

시도 해봐.


1

그냥 필요한 대상 minSdkVersion내 경우에 필요 하나, 즉 변화를 minSdkVersion했습니다14 .

minSdkVersion 16문제 를 해결하기 위해 변경

compileSdkVersion 29
    defaultConfig {
        applicationId "e.futaaapp"
        minSdkVersion 14
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

compileSdkVersion 29
    defaultConfig {
        applicationId "e.futaaapp"
        minSdkVersion 16
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

0

잊지 말고, 프로젝트 폴더가 아닌 프로젝트의 'app'하위 ​​폴더에서 build.gradle을 편집해야합니다. 버전 "L"의 문제를 해결하려는 작업 일을 잃었습니다.


0

프로젝트에서 빌드 폴더를 삭제하고 gradle 프로젝트를 다시 동기화하여 다시 빌드하십시오. 또한 다른 사람들 이이 게시물에서 말한 것처럼 다음과 같이하는 대신

compile 'com.android.support:support-v4:19.+'

이 작업을 수행:

compile 'com.android.support:support-v4:19.1.0'

0

@Murtuza에게 감사합니다. 당신의 대답은 내 문제를 해결하는 데 도움이되었지만 내 경우에는

compile 'com.android.support:support-v13:19.+ 또한

compile 'com.android.support:support-v4:19.+' compile 'com.android.support:appcompat-v7:19.+'

에서 compile 'com.android.support:support-v4:+' compile 'com.android.support:support-v7:+' compile 'com.android.support:support-v13:+' 희망이 어떤 하나를 도움이 될 수 있습니다


0

L.MR1 (SDKv22)을 선호하는 프로젝트와 KK (SDKv19)를 선호하는 프로젝트가 있습니다. 결과가 다를 수 있지만 이것은 나를 위해 일했습니다.

// Targeting L.MR1 (Android 5.1), SDK 22
android {
    compileSdkVersion 22
    buildToolsVersion "22"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 22
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

    // google support libraries (22)
    compile 'com.android.support:support-v4:22.0.0'
    compile 'com.android.support:appcompat-v7:22.0.0'
    compile 'com.android.support:cardview-v7:21.0.3'
    compile 'com.android.support:recyclerview-v7:21.0.3'
}



// Targeting KK (Android 4.4.x), SDK 19
android {
    compileSdkVersion 19
    buildToolsVersion "19.1"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 19
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

    // google libraries (19)
    compile 'com.android.support:support-v4:19.1+'
    compile 'com.android.support:appcompat-v7:19.1+'
    compile 'com.android.support:cardview-v7:+'
    compile 'com.android.support:recyclerview-v7:+'
}

0

Android Studio 1.1.0 : 파일-프로젝트 구조-탭 맛-Manifest보다 높은 Min SDK 버전 선택


0

두 번째 해결책이 있습니다.

  1. 압축 https://dl.dropboxusercontent.com/u/16403954/android-21.zip을 풀다sdk\platforms\
  2. 다음과 같이 build.gradle을 변경하십시오.

    compileSdkVersion 21
    buildToolsVersion "20.0.0"
    
    defaultConfig {
        applicationId "package.name"
        minSdkVersion 10
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
  3. 더하다

    <uses-sdk tools:node="replace" /> 

    매니페스트에서 xmlns:tools="schemas.android.com/tools";

  4. 이동 sdk\extras\android\m2repository\com\android\support\support-v4\21.0.0-rc1\

support-v4-21.0.0-rc1.aar의 압축을 풀고 AndroidManifest.xml을 다음 과 같이 편집하십시오.

...에서

<uses-sdk
        android:minSdkVersion="L"
        android:targetSdkVersion="L" />

<uses-sdk
        android:minSdkVersion="4"
        android:targetSdkVersion="21" />

PS 필요한 모든 지원 라이브러리에서이 작업을 수행 할 수 있습니다.


나는 "L"을 변경하고 안드로이드 스튜디오하지만 같은 문제가 점점 다시 시작할 때 빌드 프로젝트 (Ctrl + F9)
Ankur Loriya

0

나를 위해 일한 유일한 것은 이것입니다.

project.properties에서 다음을 변경했습니다.

cordova.system.library.1 = com.android.support : support-v4 : +에서 cordova.system.library.1 = com.android.support : support-v4 : 20. +로


0

최소 API 레벨 Build Settings -> Player Settings -> Other Settings -> Minimum SDK Level을 일부 상위 버전으로 변경하면됩니다.


0

가장 좋은 방법은 Android Studio에서 문제를 해결하도록하는 것입니다.

나는 아래를했고 잘 작동했다.

  1. Android Studio에서 프로젝트를 열면 클릭하여 수정하는 링크가 있으면 오류가 팝업됩니다.

  2. Android Studio에서 프로젝트를 다시 열면 오류가 팝업됩니다 .1 단계에서 제공되지 않은 경우 이번에 링크가 표시되면 주어진 링크를 클릭하여 수정하십시오.

두 작업 모두 몇 분이 걸렸지 만 모든 문제가 해결되었습니다.


0

솔루션 : 매니페스트 병합에 실패했습니다. 특성 application @ ppComponentFactory ...

최신의 가장 훌륭한 Firebase 라이브러리 또는 다른 라이브러리를 사용하는 경우 실제로 android.support 대신 AndroidX를 사용하는 경우 매니페스트 합병이 실패했을 때 문제가 발생할 수 있습니다! 따라서이 경우 프로젝트를 AndroidX로 마이그레이션해야합니다. 따라서 링크를 따르십시오. https://firebase.google.com/support/release-notes/android#update_-_june_17_2019

또는이 비디오를보십시오. https://youtu.be/RgveQ4AY1L8 감사합니다.


솔루션에 대한 링크는 환영하지만 답변이 없으면 도움이 될 것입니다. 링크 주변에 컨텍스트를 추가하고 대상 페이지를 사용할 수없는 경우 링크하는 튜토리얼에서 가장 관련성이 높은 부분을 설명하는 것이 좋습니다.
Joey

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