Programing

매니페스트 병합 실패 오류

lottogame 2021. 1. 5. 07:42
반응형

매니페스트 병합 실패 오류


현재 프로젝트의 거대한 애플리케이션을 Android Studio 및 Gradle로 옮기는 중입니다. 현재 다음 문제에 갇혀 있습니다.

Error:(87, 9) Execution failed for task ':App:processDebugManifest'.
> Manifest merger failed : Attribute application@label value=(@string/app_label) from AndroidManifest.xml:87:9
    is also present at ANDROID_APPLICATION:Library:unspecified:9:18 value=(@string/app_name)
    Suggestion: add 'tools:replace="android:label"' to <application> element at AndroidManifest.xml:82:5 to override

AndroidManifest.xml파일에 다음 속성을 추가해 보았습니다 .

tools:replace="android:label, *App Name*"
tools:replace="android:label, @string/app_label"
tools:replace="android:label"

이러한 속성 정의는 작동하지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?


이것을 시도하십시오 :

이것을 추가 <manifest/>

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

이것을 추가 <application/>

tools:node="replace"

을 바탕으로 , 모든 요소를 오버라이드 (override) 할 필요가 있습니다. "낮은 우선 순위 선언을 주석이 달린 선언으로 대체하십시오."


배경

매니페스트 파일이 병합 될 때 label특성 과 충돌이 있습니다.

일반적으로 단일 결과 앱 매니페스트로 병합해야하는 세 가지 유형 의 매니페스트 파일이 여기에 우선 순위가 있습니다.

  1. 제품 버전 및 빌드 유형별 매니페스트 파일.
  2. 애플리케이션의 기본 매니페스트 파일입니다.
  3. 라이브러리 매니페스트 파일.

해결 방법

충돌은 다음 두 가지 방법 중 하나로 해결할 수 있습니다.

충돌하는 레이블 제거

라이브러리 (또는 하위 수준) 매니페스트 파일에서 충돌하는 속성을 제거합니다.

이 경우는 ANDROID_APPLICATION:Library:unspecified:9:18 value=(@string/app_name)갖는 @string/app_name메인 프로그램에서 상이 정의한 값. 따라서 필요하지 않은 경우 제거 하십시오. android:label="@string/app_name"라이브러리 파일의 AndroidManifest.xml파일 에서 제거 하십시오.

충돌에 대한 자동 해결을 허용하는 속성 추가

있다 몇 가지 특별한 속성 마커 충돌을 해결하는 방법에 대한 구체적인 결정을 표현하기 위해 사용될 수있다 (도구 네임 스페이스가).

이 경우, 명시 적으로 주요 애플 리케이션의 원인하기 위해 android:label, 다른 (예를 들어 라이브러리 파일) 응용 프로그램 라벨에 우선 추가 할 xmlns:tools="http://schemas.android.com/tools"받는 정의 <manifest>노드 및 tools:replace="label"받는 <application>노드입니다.

다음은 예입니다. 기본 애플리케이션의 AndroidManifest.xml파일 에서 사용 합니다.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mycompany.myapp"
    xmlns:tools="http://schemas.android.com/tools">

    <application
        android:label="@string/app_name"
        tools:replace="label"/>
</manifest>

이 접근 방식은 다른 충돌 속성에서도 작동합니다. 예를 들어 icon속성도 충돌하는 경우로 변경 될 수 있습니다 tools:replace="label, icon".


운이 좋았다면 해키 해결 방법을 사용하여 수동으로 문제를 해결할 수 있습니다.

AAR 파일은 확장자가 .aar 인 .zip 파일입니다. 제 경우에는 .aar의 압축을 풀고 android:label라이브러리의 AndroidManifest.xml.

참고로, 이것은 android gradle 플러그인의 알려진 버그로 보입니다 .


같은 문제를 해결했습니다. 나를위한 솔루션 :

  1. xmlns:tools="http://schemas.android.com/tools"매니페스트 태그에 줄 추가
  2. tools:replace=..매니페스트 태그에 추가
  3. android:label=...매니페스트 태그에서 이동

여기에 예


저도 같은 문제에 직면했고 많은 연구 끝에

  1. 최소 SDK 버전은 사용중인 모듈과 동일해야합니다. 예 : 모듈 최소 SDK 버전은 14이고 앱 최소 SDK 버전은 9입니다. 동일해야합니다.
  2. If build version of your app and modules not same. Again it should same

In short, your app build.gradle file and manifest should have same configurations

  1. There's no duplicacy like same permissions added in manifest file twice, same activity mention twice
  2. If you have delete any activity from your project, delete it from your manifest file as well
  3. Sometimes its becuase of label, icon etc tag of manifest file a) add the xmlns:tools line in the manifest tag b) add tools:replace= or tools:ignore=in the application tag Example
   <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>

By considering these points in mind, you will get rid of this manifest merger failed issue Check my post: This issue is due to issue in Manifest file or build.gradle file. You can check my post https://wordpress.com/post/dhingrakimmi.wordpress.com/23


I just removed

android:label="@string/app_name

from the manifest file and it worked!

ReferenceURL : https://stackoverflow.com/questions/28095703/manifest-merger-failed-error

반응형