Android Studio에서 매니페스트 합병이 여러 오류로 실패


250

그래서 저는 Android와 Java의 초보자입니다. 방금 배우기 시작했습니다. 오늘 Intent를 실험하는 동안 오류가 발생했습니다.

Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed with multiple errors, see logs

여기에서 몇 가지 솔루션을 찾아서 구현하려고 시도했지만 작동하지 않았습니다.

이것은 내 build.gradle입니다.

apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion "23.0.0"

defaultConfig {
    applicationId "com.example.rohan.petadoptionthing"
    minSdkVersion 10
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.0.0'
}

이것은 내 AndroidManifest입니다.

<?xml version="1.0" encoding="utf-8"?>

package="com.example.rohan.petadoptionthing" >

<application

    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name=".Second"
        />

    <activity android:name=".third"/>
    <activity android:name=".MainActivity"/>


</application>

이것은 코딩의 첫 주입니다. 이것이 정말 바보 같은 일이라면 미안합니다. 나는 정말로 이것에 익숙하지 않으며 물어볼 다른 곳을 찾지 못했습니다. 내가 규칙을 어겼다면 미안


2
menifest.xml 파일에서 <activity android : name = ". MainActivity"/> 행을 제거하십시오.
Pankaj Talaviya

10
오류에 대한 자세한 내용은 오른쪽 하단 모서리에서 Android Studio의 Gradle Console을 확인할 수 있습니다.
DragonT

링크 가 도움이 되길 바랍니다 .
Mortreza AD

동일한 오류가 발생했지만 프로젝트 및 라이브러리에서 동일한 최소 SDK를 유지하여 문제를 해결했습니다.
Raja Jawahar

youtu.be/K88WaSm3q8Y "Manifest Merger가 Android Studio에서 여러 오류로 실패했습니다"?
로마 Pokrovskij

답변:


966

응용 프로그램 매니페스트 ( AndroidManifest.xml)를 열고를 클릭하십시오 Merged Manifest. 아래 이미지를 확인하십시오.

안드로이드 매니페스트 병합 기능

이미지 에서 오른쪽 열에 오류 가 표시 되면 오류를 해결하십시오. 같은 문제를 가진 사람에게 도움이 될 수 있습니다. 자세한 내용은 여기를 참조 하십시오 .


5
brilliant ... 내 감사를 표현할 단어를 찾을 수 없습니다
Shahzad Afridi

2
제 경우에는 오류를보기 위해 약간 아래로 스크롤했습니다
CodeToLife

불행히도 Android Studio 3.5.2에는 "병합 매니페스트"탭이 없습니다.
FractalBob

@FractalBob 3.5.2를 실행 중이며 '병합 매니페스트'탭을 참조하십시오. 아마도 매니페스트가 병합되기 전에 다른 오류가 발생했을 수 있습니다.
sonyisda1 1

@ sonyisda1 Linux 환경에서 실행 중입니까? 우분투 18.04 LTS가 있습니다.
FractalBob

120

<activity android:name=".MainActivity"/>mainfest 파일에서 제거하십시오 . 이미 정의한대로 :

 <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

따라서 매니페스트 파일은 모호성을 보여줍니다.


31
Rowen의 코드 만 수정하지만 다른 사람에게는 전혀 도움이되지 않을 때 이것이 허용되는 대답이라는 것은 너무 나쁩니다. CLIFFORD의 답변은 실제로 오류 메시지가 제안하는대로 "로그를 보는"방법을 보여줍니다.
Andrew Koster 2018 년

AndroidManifest.xml 파일에서 중복 항목을 확인하고 제거하는 것만으로도 잘 작동합니다.
vishwajit76

61

나를 위해이 작품-

에서 병합 오류 찾기 AndroidManifest.xml

여기에 이미지 설명을 입력하십시오

에서 Merged Manifest를 클릭하십시오. AndroidManifest.xml

여기에 이미지 설명을 입력하십시오

오른쪽 열에서 매니페스트 병합 오류를 볼 수 있습니다. 이 문제를 해결하는 데 도움이 될 수 있습니다.


3
이것은이 문제에 대한 일반적인 해결책입니다. 이를 통해 이와 관련된 모든 문제의 실제 원인을 찾을 수 있습니다.
JoeGalind

60

나는 또한 같은 문제에 직면하고 있었고 많은 연구 끝에 해결책을 찾았습니다.

  1. min sdk 버전은 사용중인 모듈과 동일해야합니다. 예 : 모듈 min sdk 버전은 14이고 app min sdk 버전은 9입니다.
  2. 앱과 모듈의 빌드 버전이 동일하지 않은 경우. 다시 말하지만 ** 간단히 말하면 앱 build.gradle파일과 매니페스트의 구성이 동일해야합니다 **
  3. 매니페스트 파일에 동일한 권한이 두 번 추가되고 동일한 활동이 두 번 언급되는 것과 같은 중복은 없습니다.
  4. 프로젝트에서 활동을 삭제 한 경우 매니페스트 파일에서도 삭제하십시오.
  5. 때로는 매니페스트 파일의 레이블, 아이콘 등 태그로 인해 :

a) xmlns:tools매니페스트 태그에 줄을 추가하십시오 .

b) tools:replace=또는 tools:ignore=애플리케이션 태그를 추가하십시오 .

예:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.slinfy.ikharelimiteduk"
    xmlns:tools="http://schemas.android.com/tools"
    android:versionCode="1"
    android:versionName="1.0" >

  <application
      tools:replace="icon, label"
      android:label="myApp"
      android:name="com.example.MyApplication"
      android:allowBackup="true"
      android:hardwareAccelerated="false"
      android:icon="@drawable/ic_launcher"
      android:theme="@style/Theme.AppCompat" >
  </application>

</manifest>
  1. 두 개의 종속성이 동일한 버전 예가 아닌 경우 : appcompat v7 : 26.0.0 및 facebook com.facebook.android:facebook-android-sdk:[4,5)에 대한 종속성을 사용하고 있습니다. facebook은 버전 com.android의 cardview를 사용합니다. support : cardview-v7 : 25.3.1 및 appcompat v7 : 26.0.0은 v7 : 26.0.0 버전의 cardview를 사용하므로 두 라이브러리에 차이가 있으므로 오류가 발생합니다.

오류 : ': app : processDebugManifest'작업에 대한 실행이 실패했습니다.

매니페스트 합병 실패 : [com.android.support:appcompat-v7:26.0.0-alpha1]의 meta-data#android.support.VERSION@value value = (26.0.0-alpha1) 속성 -38은 [com.android.support:cardview-v7:25.3.1]에도 있습니다. AndroidManifest.xml : 24 : 9-31 value = (25.3.1). 제안 : AndroidManifest.xml : 25 : 5-27 : 41의 요소에 'tools : replace = "android : value"'를 추가하여 재정의하십시오.

따라서 버전 25.3.1의 appcompat를 사용하면이 오류를 피할 수 있습니다

위의 사항을 고려하면이 자극적 인 문제를 제거 할 수 있습니다. 내 블로그도 확인할 수 있습니다 https://wordpress.com/post/dhingrakimmi.wordpress.com/23


1
내 경우에는 추가 한 모듈의 테마로 인해 도구로 사용되었습니다. "아이콘, 레이블, 테마 바꾸기"
turbandroid

내 경우에는 내가 추가 한 모듈의 테마로 인해 도구로 사용되었습니다 : replace "icon, label, theme"및 xmlns : tools = " schemas.android.com/tools ". 감사합니다 @ O'one
alfo888_ibg

14

사용 가능한 솔루션 외에도 이것도 확인하십시오.
사용자가 설정 한 경우 android:allowBackup="false"사용자에 AndroidManifest.xml다음의 충돌이있을 수 있습니다 android:allowBackup="true"다른 종속한다.

해결 방법
@CLIFFORD PY가 제안한대로에서로 전환 Merged Manifest하십시오 AndroidManifest.xml. 안드로이드 스튜디오 추가 제안합니다 tools:replace="android:allowBackup"에서 <application />당신에 AndroidManifest.xml.


12

나는 같은 문제에 직면했고 manifest.xml에 한 줄을 추가했는데 그것은 나를 위해 일했다.

tools:replace="android:allowBackup,icon,theme,label,name"> 

이 줄을 아래에 추가하십시오

<application
    android:name=".MyApplication"
    android:allowBackup="true"
    android:icon="@drawable/launcher"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:screenOrientation="portrait"
    android:supportsRtl="true"
    android:theme="@style/AppThemecustom"
    tools:replace="android:allowBackup,icon,theme,label">

그것이 도움이되기를 바랍니다.


정말 고맙습니다! "파일 첨부"를 클릭 할 때 Zendesk 지원 페이지로 인해 매우 특정한 시나리오에서이 문제에 직면했습니다. 다른 질문에서 많은 답변을 시도했지만 귀하의 의견 만 도움이되었습니다!
Natalie

@Natalie 도움이되어서 기쁩니다 :)
Pre_hacker

11

프로젝트 매니페스트 응용 프로그램 태그에 아래 코드를 추가하십시오 ...

<application
        tools:node="replace">

정말 감사합니다
tej shah

8

필자의 경우 <uses-permission>요소에 중복성이 있기 때문에 오류가 표시되었습니다 . 따라서 AndroidManifest.xml파일에서 동일한 내용을 확인하십시오 .

Android Studio 버전은 3.0.1입니다

운영 체제는 Windows 7입니다

다음은 참조 용 스크린 샷입니다.

매니페스트 파일의 중복성을 보여주는 스크린 샷.


이것은 @ CLIFFORD-PY의 답변 전에 게시되었지만 Merged Manifest보기를 통해 병합 오류를 발견하면이 특정 중복 오류가 포착됩니다.
sonyisda1 1


7

일반적으로 매니페스트에 오류가있을 때 발생합니다 .AndroidManifest.xml을 엽니 다. 병합 된 매니페스트 탭을 클릭하십시오. 오류가 표시 될 수도 있습니다. 또한 여기에 언급 된 제안을 포함하십시오 .com.google.android.gms를 가져 오는 동안 비슷한 문제가 발생했을 때 .maps.model.LatLng, 응용 프로그램 태그에 tools : overrideLibrary = "com.google.android.gms.maps"를 포함하도록 제안했으며 빌드가 성공했습니다.


3

내 사건으로 내가 고쳤다

build.gradle (모듈 : 앱)

defaultConfig {
----------
multiDexEnabled true
}
dependencies {
    ...........
    implementation 'com.google.android.gms:play-services-gcm:11.0.2'
    implementation 'com.onesignal:OneSignal:3.+@aar'
    }

이 답변은 OnSignal 푸시 알림으로 다시 작성되었습니다.


2
  1. 에서 AndroidManifest.xml:

    • 응용 프로그램에 추가 tools:replace="android:icon, android:theme하고
    • 매니페스트 루트에서 xmlns:tools="http://schemas.android.com/tools
  2. 에서 build.gradle:

    • 루트에서 추가 useOldManifestMerger true

2

최소 SDK 버전은 사용중인 모듈 / lib와 동일해야합니다. 예 : 모듈 최소 SDK 버전은 26이고 앱 최소 SDK 버전은 21입니다.


1

지난 며칠 동안 나는 같은 문제를 겪고있었습니다. 그러나 많은 연구 끝에 마침내 이에 대한 해결책을 찾았습니다.
이 문제를 해결하려면 다음을 수행
하십시오 . 1. 프로젝트의 build.gradle 파일과 모듈의 build.gradle 파일에 모든 종속성의 버전이 동일한 지 확인하십시오 .
2. 프로젝트의 compileSdkVersion , buildToolsVersion , minSdkVersiontargetSdkVersion 이 프로젝트에 추가 한 모듈 또는 라이브러리 의 버전과 일치 하는지 확인하십시오 .

compileSdkVersion 25
buildToolsVersion "25.0.0"
defaultConfig {
    applicationId "com.example.appname"
    minSdkVersion 16
    targetSdkVersion 25
    versionCode 22
    versionName "2.0.3"

}

도움이 되었기를 바랍니다.


1

Android 라이브러리 모듈 을 추가 한 후이 오류가 발생하는 경우
당신은 제거 간단하여 문제를 해결할 수 있습니다 android:label="@string/app_name"으로부터 AndroidManifest.xml당신의 안드로이드 라이브러리 모듈


1

gradle 콘솔을 열면 gradle이 특정 줄을 추가 할 것을 제안합니다 (예 : tools : replace = "android : allowBackup"또는 tools : replace = "android : label"등). 태그 아래 매니페스트 파일에 해당 줄을 추가하고 gradle을 동기화하십시오.


1

제 경우 에는 활동 태그 안에 빈 인 텐트 필터 를 남겨 두었습니다.

    <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">

            <intent-filter>

            </intent-filter>

    </activity> 

따라서 그것들을 제거하면 문제가 해결되었습니다.

    <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
    </activity> 

0

내 경우에는 Android Studio의 초보자로서 기존 프로젝트를 Eclipse에서 Android Studio로 옮겼으며 Manifest.xml 내에서 Eclipse에 의해 선택되지 않은 활동에 대한 중복 정의가 있음을 발견했습니다. Gradle 오류.

Gradle Console (화면 오른쪽 하단)으로 이동하여 이것을 발견했습니다.


0

파일의 필드 이름을 굴절 (SHIFT + F6으로 이름 바꾸기) 할 때 나와 두 번 일어 났으며 모든 곳에서 필드를 변경하라는 메시지가 표시되며주의를 기울이지 않고 어디서나 이름을 변경하십시오. 예를 들어, Java 클래스에 변수 이름 "id"가 있고 이름을 SHIFT + F6으로 바꾸는 경우. 다음 대화 상자에주의를 기울이지 않으면 어디에서 ID를 변경할 것인지 묻고 모든 항목을 체크 표시하면 레이아웃 파일의 모든 ID가 새 값에서 변경됩니다.


0

mainifest.xml 파일에서 활동 호출을 두 번 정의 할 때만 발생하는 매우 간단한 오류입니다.

<activity android:name="com.futuretech.mpboardexam.Game" ></activity>

//and launcher also------like that



//solution:use only one 

0

앱 모듈 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'
        }
    }
}}

이것으로부터


0

답을 판 판 린 (Phan Van Linh)으로 보충하십시오. 이 줄을 삭제했습니다.

  android:icon="@mipmap/ic_launcher"
  android:label="name"

0

위와 같이 Androidx로 마이그레이션 한 다음 최소 SDK 버전을 26으로 설정하십시오.


0

다음과 같은 핵이 작동합니다.

  1. xmlns:tools="http://schemas.android.com/tools"매니페스트 태그에 줄 추가
  2. tools:replace="android:icon,android:theme,android:allowBackup,label,name" 응용 프로그램 태그에 추가

0

android:replace태그 를 제거하여이 문제를 해결했습니다.


0

제 경우에는 jetbrains 라이브러리의 주석을 사용하고있었습니다. 이러한 주석과 종속성을 제거하고 정상적으로 작동했습니다.

따라서 안드로이드 코드 및 종속성의 라이브러리를주의 깊게 확인하십시오.


0

여러 manifestPlaceholder항목을 사용하는 경우build.gradle파일 별도의 항목 대신 배열 요소로 추가해야합니다.

예를 들어, 다음과 같은 경우 빌드 오류 또는 컴파일 오류가 발생합니다. "java.lang.RuntimeException : 여러 오류로 매니페스트 병합에 실패했습니다":

android {
    ...
    defaultConfig {
        manifestPlaceholders = [myKey1: "myValue1"]
        manifestPlaceholders = [myKey2: "myValue2"] // Error!
    }
}

이것은 오류를 해결합니다 :

android {
    ...
    defaultConfig {
        manifestPlaceholders = [myKey1: "myValue1", myKey2: "myValue2"]
    }
}

0

레거시 지원 라이브러리와 함께 새 재질 라이브러리를 사용하고 있기 때문입니다.

당신은 마이그레이션 할 android.supportandroidx사용하기 위해 com.google.android.material.

Android Studio v 3.2 이상을 사용하는 경우 간단히

리팩터링 ---> ANDROID X로 마이그레이션으로 이동하십시오.

프로젝트를 백업하십시오.


0

FirebaseUI Library와 함께를 사용 Facebook SDK Library하여 문제를 일으켰습니다.

implementation 'com.firebaseui:firebase-ui-database:0.4.4'
implementation 'com.facebook.android:facebook-android-sdk:[4,5)'

그리고 [여기] [1]에서이 문제를 해결했습니다.

으로 latest updateFirebaseUI 라이브러리 , 페이스 북 SDK의 이전 버전은 또한 그것의 일부입니다.

라이브러리를 모두 사용하는 경우 Facebook SDK 라이브러리제거하십시오 .

https://github.com/firebase/FirebaseUI-Android/issues/230

최신 정보

로부터 Android Studio 3.0및 이후 버전, app.gradle파일이 사용하는 데 필요한 implementation또는 api대신을 compile응용 프로그램에 종속성을 추가.


0

오류를 확인하기 위해 CLIFFORD의 답변을 본 후이 문제를 해결하는 데 도움이 된 것은 의도 필터 작업 태그에서 'android : namex'의 이름을 'android : name'으로 바꾸는 것입니다. 동일한 솔루션이 다른 사람을 돕는 경우.

    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:namex="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.