Android Manifest 병합 오류, Manifest Merger Failed 오류 때문에 프로젝트 빌드에 어려움을 겪고 계시죠? 이 글 하나로 명확한 해결책을 제시해 드립니다.
원인 분석부터 단계별 해결 방법까지, 복잡한 오류 메시지 앞에서 막막했던 경험을 뒤로하고 싶으신 개발자분들을 위해 준비했습니다.
더 이상 헤매지 마시고, 이 글을 통해 Manifest 병합 오류를 완벽하게 정복하고 안정적인 빌드 환경을 구축해 보세요.
Contents
AndroidManifest 병합 오류 발생 원인
Android 개발 중 흔히 발생하는 Manifest 병합 오류, ‘Manifest Merger Failed’는 여러 개의 AndroidManifest.xml 파일이 충돌하며 발생하는 문제입니다. 이는 마치 여러 팀이 각자 다른 규칙으로 건물을 짓다가 설계가 꼬이는 것과 비슷합니다. 예를 들어, 삼성전자의 갤럭시 S24 기본 모델은 115만원부터 시작하고, S24 Ultra 모델은 160만원부터 시작하는 것처럼, 각 라이브러리나 모듈이 자체적으로 설정한 권한이나 액티비티 등이 충돌할 때 이 오류가 발생합니다.
Manifest 파일은 앱의 기본적인 구성 요소와 권한 등을 정의하는 중요한 파일입니다. 여러 라이브러리나 모듈을 추가할 때, 각기 다른 Manifest 파일이 존재하게 되는데, 빌드 과정에서 이 파일들을 하나로 합치는 ‘병합’ 작업이 진행됩니다. 만약 두 개 이상의 Manifest 파일에서 동일한 컴포넌트(예: 특정 액티비티 이름)를 선언하면서 충돌이 발생하면, Manifest 병합 오류가 발생하게 됩니다. 이는 마치 2024년형 쏘나타 기본 모델의 가격이 3,500만원인데, 특정 옵션이 추가된 고급형 모델의 가격이 4,500만원으로 책정되었는데, 옵션 구성이 서로 겹쳐 발생하는 문제와 유사합니다.
가장 흔한 충돌 유형은 두 개 이상의 라이브러리가 동일한 권한(Permission)을 선언하거나, 같은 이름의 액티비티(Activity), 서비스(Service) 등을 정의할 때 발생합니다. 예를 들어, A 라이브러리는 ‘인터넷 접근 권한’을, B 라이브러리도 ‘인터넷 접근 권한’을 필요로 하는데, 이 권한을 정의하는 방식에 미묘한 차이가 있거나 중복될 때 문제가 됩니다. 마치 스타벅스의 ‘돌체라떼’와 투썸플레이스의 ‘카페라떼’처럼 비슷하지만, 세부 레시피에서 차이가 있어 충돌이 발생하는 경우를 떠올릴 수 있습니다.
이 문제를 해결하기 위해서는 충돌이 발생하는 Manifest 파일의 내용을 주의 깊게 살펴봐야 합니다. IDE에서 제공하는 ‘Merged Manifest Viewer’ 기능을 활용하면 어떤 부분이 충돌하는지 시각적으로 확인할 수 있습니다. 특정 라이브러리가 불필요한 권한을 선언하고 있다면, 해당 라이브러리의 설정을 조정하거나, 명시적으로 충돌하는 부분을 제외하는 코드를 추가해야 합니다. 예를 들어, 갤럭시 Z 플립 5 (140만원대)와 같은 폴더블폰의 특정 기능이 충돌할 때, 소프트웨어 업데이트를 통해 문제를 해결하는 것처럼, Manifest 파일의 충돌 부분을 수정하여 해결할 수 있습니다.
핵심: Android Manifest 병합 오류 발생 시, 충돌 원인을 정확히 파악하고 각 라이브러리의 Manifest 설정을 신중하게 검토하여 수정하는 것이 중요합니다.
Manifest 머지 실패 해결 방법 3가지
Android Manifest 병합 오류, 즉 Manifest Merger Failed 오류는 여러 모듈이나 라이브러리가 충돌할 때 자주 발생합니다. 이 문제를 해결하기 위한 구체적인 세 가지 방법을 심층적으로 살펴보겠습니다.
가장 먼저, 충돌의 근본 원인을 파악하는 것이 중요합니다. Android Studio의 ‘Build’ 탭에서 ‘Merge Manifest’ 섹션을 확인하면 어떤 파일 간에 충돌이 발생하는지 상세히 확인할 수 있습니다. 예를 들어, 두 라이브러리가 동일한 권한(permission)을 다른 값으로 정의하거나, 동일한 컴포넌트(activity, service 등)를 중복 정의했을 때 이러한 오류가 발생합니다. 불필요한 권한이나 컴포넌트 정의를 각 모듈의 Manifest 파일에서 제거하거나, tools:replace 속성을 사용하여 충돌을 해결하는 것이 일반적입니다. 이 과정은 오류 메시지를 정확히 이해하는 데 15-20분 정도 소요될 수 있습니다.
모든 Manifest 항목을 수정하기 어렵거나, 특정 라이브러리의 Manifest 내용을 강제로 포함시키고 싶지 않을 때 tools:exclude 속성을 활용할 수 있습니다. 앱의 메인 Manifest 파일에서 충돌을 일으키는 특정 라이브러리의 Manifest 요소(예:
때로는 Gradle 캐시나 빌드 관련 문제로 Manifest 병합 오류가 발생하기도 합니다. 이럴 때는 Android Studio의 ‘File’ 메뉴에서 ‘Invalidate Caches / Restart…’ 옵션을 사용하여 캐시를 무효화하고 IDE를 재시작하는 것이 좋습니다. 이후 ‘Build’ 메뉴에서 ‘Clean Project’를 실행하고, 마지막으로 ‘Rebuild Project’를 수행하여 프로젝트를 처음부터 다시 빌드합니다. 이 과정을 통해 이전 빌드 과정에서 발생한 잔여 파일이나 설정 오류를 제거할 수 있습니다. 이 방법은 10-15분 정도 소요되며, Manifest 병합 오류 뿐만 아니라 다양한 빌드 관련 문제를 해결하는 데 효과적입니다. 빌드 스크립트 자체의 충돌이 아니라면 대부분의 경우 이 방법으로 해결될 수 있습니다.
실전! Manifest 충돌 해결 절차
Android Manifest 병합 오류는 개발 중 흔히 발생하는 문제입니다. Manifest Merger Failed 오류가 발생했을 때, 다음과 같은 단계별 해결 절차를 따르세요.
오류의 근본 원인을 파악하기 위해 각 모듈의 Manifest 파일을 먼저 점검해야 합니다.
주로 충돌이 발생하는 부분은 권한(permission) 선언, 액티비티(activity) 및 서비스(service) 등록, 메타 데이터(meta-data) 정의 등입니다. 이들 항목이 중복되거나 충돌하는지 확인하세요.
| 단계 | 실행 방법 | 소요시간 | 주의사항 |
| 1단계 | 로그 확인 및 충돌 지점 파악 | 5-15분 | ‘Build’ 탭의 ‘Build Output’에서 오류 메시지 확인 |
| 2단계 | 중복 선언된 요소 확인 및 수정 | 10-20분 | ‘<uses-permission>’, ‘<activity>’ 등 충돌 요소 집중 점검 |
| 3단계 | Manifest 병합 전략 설정 | 5-10분 | ‘<merge>’, ‘<selector>’ 등 필요한 경우 사용 |
| 4단계 | 빌드 재실행 및 결과 확인 | 2-5분 | 오류 메시지 사라졌는지 확인 |
오류 메시지에 표시된 정확한 줄 번호와 파일 이름을 주시해야 합니다. 이를 통해 문제의 범위를 좁힐 수 있습니다.
외부 라이브러리나 SDK에서 제공하는 Manifest 파일과 앱 자체 Manifest 파일 간의 충돌일 가능성이 높습니다. 각 라이브러리의 문서를 참고하여 충돌 요소를 확인하고, 필요한 경우 앱 Manifest에서 해당 요소를 제거하거나 병합 전략을 적용하세요.
체크포인트: gradle.properties 파일에 android.verboseOutput=true 설정을 추가하면 더 자세한 병합 로그를 확인할 수 있습니다.
- ✓ 로그 분석: Manifest Merger Failed 오류 시, 빌드 출력창의 상세 오류 메시지 확인
- ✓ 충돌 요소 특정: 중복되거나 불일치하는 선언(permission, activity 등) 명확히 구분
- ✓ 해결 전략 적용: 충돌 해결을 위한 Manifest 병합 전략(override, merge 등) 신중히 선택
- ✓ 재빌드 및 검증: 수정 후 빌드를 다시 시도하고 오류가 해결되었는지 최종 확인
주의! 병합 시 흔한 실수와 대처
실제 경험자들이 자주 겪는 구체적인 함정들을 알려드릴게요. 미리 알고 있으면 같은 실수를 피할 수 있습니다.
가장 많이 발생하는 실수부터 구체적으로 살펴보겠습니다. 특히 처음 시도하는 분들에게서 반복적으로 나타나는 패턴들이에요. 예를 들어, Android Manifest 병합 오류는 라이브러리 의존성 충돌 시 빈번하게 발생하며, 선언된 권한이나 액티비티가 중복될 때 Manifest Merger Failed 오류로 이어지곤 합니다. Gradle 설정에서 충돌하는 부분을 명확히 파악하고, exclude 태그를 사용하여 불필요한 의존성을 제거하는 것이 중요합니다.
처음에 안내받은 금액 외에 예상치 못한 비용이 추가로 발생하는 경우가 많습니다. 각종 수수료, 증명서 발급비, 배송비 등이 대표적이에요. 특히 은행 대출의 경우 중도상환수수료, 보증료, 인지세 등이 별도로 부과됩니다. 3억 원 대출 시 이런 부대비용만 200-300만 원이 추가로 들 수 있어요. 미리 전체 비용을 계산해보고 예산을 세우는 것이 중요합니다.
⚠️ 비용 함정: 광고에서 보는 최저금리는 최상위 신용등급자에게만 적용됩니다. 실제 적용 금리는 0.5-2%p 더 높을 수 있으니 정확한 조건을 미리 확인하세요.
- 서류 누락: 주민등록등본 대신 주민등록초본을 가져와서 재방문하는 경우가 많습니다. 정확한 서류명을 미리 확인하세요
- 기간 착각: 영업일과 달력일을 헷갈려서 마감일을 놓치는 실수가 빈번합니다. 토요일, 일요일, 공휴일은 제외됩니다
- 연락처 오류: 휴대폰 번호나 이메일을 잘못 입력해서 중요한 안내를 받지 못하는 경우가 있습니다
- 신용등급 하락: 여러 곳에 동시 신청하면 신용조회 이력이 쌓여 오히려 승인 확률이 떨어질 수 있습니다
체험단이나 협찬 후기는 광고성 내용을 포함할 가능성이 높습니다. 실제 구매자 리뷰는 “구매” 또는 “결제 완료” 표시를 확인하는 것이 좋습니다. 또한, 동일 브랜드라도 생산 시기에 따라 품질 차이가 발생할 수 있으니, 최신 제조일자 제품인지 확인하는 것이 현명합니다.
공인인증서 유효기간이 만료되면 신청이 중단될 수 있으므로, 미리 갱신 여부를 확인해야 합니다. 개인정보 동의 시 모든 항목을 꼼꼼히 읽지 않고 전체 동의하는 것은 개인정보 유출 위험을 높입니다. 모바일과 PC 버전 간 기능 차이로 불편을 겪을 수 있으니, 사용 환경에 맞는 버전을 선택하는 것이 좋습니다.
일부 시스템은 단계별 진행 중 이전 단계로 돌아갈 수 없으므로, 입력 전 내용을 충분히 숙지해야 합니다. 임시저장 기능이 없는 경우, 처음부터 다시 입력해야 하는 상황이 발생할 수 있습니다. 첨부 파일 용량 제한을 모르고 큰 파일을 업로드하려다 실패하는 경우가 많으니, 사전에 확인하는 것이 시간 절약에 도움이 됩니다.
Manifest 오류 방지 꿀팁 모음
Android Manifest 병합 오류, 즉 Manifest Merger Failed 오류는 개발 과정에서 흔히 마주치지만, 전문가들은 이를 사전에 예방하는 노하우를 가지고 있습니다. 일반적인 해결 방법을 넘어선 고급 전략을 통해 빌드 성공률을 높일 수 있습니다.
각 모듈의 Manifest 파일을 개별적으로 최적화하는 것이 중요합니다. 예를 들어, 특정 라이브러리가 요구하는 권한이나 설정을 해당 모듈의 build.gradle 파일 내 android.useLibrary() 또는 packagingOptions를 통해 명시적으로 관리하면 충돌을 줄일 수 있습니다.
또한, Gradle의 manifestPlaceholders 기능을 적극 활용하여 빌드 타입별로 다른 값을 주입하는 것도 효과적입니다. 이를 통해 디버그 빌드와 릴리스 빌드에서 동일한 Manifest 파일로 다른 설정을 적용할 수 있어 오류 발생 가능성을 줄여줍니다.
빌드 스크립트 레벨에서의 자동화는 Manifest 병합 오류를 근본적으로 해결하는 열쇠입니다. Gradle 스크립트 내에서 각 모듈의 Manifest 파일 경로를 동적으로 변경하거나, 특정 조건을 만족할 때만 특정 선언을 포함시키는 로직을 구현할 수 있습니다.
앱의 복잡성이 커질수록 Manifest 파일은 여러 곳에서 수정될 수 있습니다. 이를 방지하기 위해, 프로젝트 구조를 단순화하고 각 기능별로 Manifest 선언을 모듈화하는 아키텍처를 고려하는 것이 좋습니다. 이는 Manifest Merger Failed 오류를 예방하는 장기적인 해결책이 됩니다.
전문가 팁: Jenkins, GitHub Actions 등 CI/CD 파이프라인에 Manifest 검증 단계를 추가하여 빌드 실패를 조기에 감지하는 것이 중요합니다.
- 라이브러리 버전 관리: 호환되지 않는 라이브러리 버전 간의 Manifest 충돌을 최소화하기 위해 최신 안정 버전을 사용합니다.
- Gradle Sync: 코드 변경 후에는 반드시 Gradle Sync를 수행하여 Manifest 변경 사항이 올바르게 반영되었는지 확인합니다.
- Manifest 검사 도구: Android Studio의 Lint 기능을 활용하여 Manifest 파일의 잠재적 오류를 사전에 검출할 수 있습니다.
이러한 고급 전략들을 통해 Android Manifest 병합 오류를 효율적으로 관리하고 안정적인 앱 개발 환경을 구축할 수 있습니다. Android Manifest에 대한 깊이 있는 이해는 필수적입니다.
자주 묻는 질문
✅ Android Manifest 병합 오류가 발생하는 가장 근본적인 이유는 무엇인가요?
→ Android Manifest 병합 오류는 여러 개의 AndroidManifest.xml 파일이 빌드 과정에서 하나로 합쳐질 때, 각 파일에 선언된 컴포넌트나 권한 등이 서로 충돌하면서 발생합니다. 예를 들어, 두 개 이상의 라이브러리가 동일한 권한을 중복 선언하거나 같은 이름의 액티비티를 정의할 때 이 문제가 나타날 수 있습니다.
✅ Manifest 병합 오류가 발생했을 때, 충돌 부분을 시각적으로 확인하는 방법은 무엇인가요?
→ Android Studio에서 제공하는 ‘Merged Manifest Viewer’ 기능을 활용하면 충돌이 발생하는 Manifest 파일의 내용을 시각적으로 확인할 수 있습니다. 이 기능을 통해 어떤 라이브러리나 모듈에서 충돌이 발생하는지 구체적으로 파악할 수 있습니다.
✅ Manifest 병합 오류를 해결하기 위해 충돌하는 Manifest 파일의 내용을 어떻게 수정해야 하나요?
→ 충돌이 발생하는 Manifest 파일의 내용을 주의 깊게 살펴보고, 불필요한 권한 선언이 있다면 해당 라이브러리의 설정을 조정하거나, 명시적으로 충돌하는 부분을 제외하는 코드를 추가하여 수정해야 합니다.




