본문 바로가기
프로그램 개발해서 돈벌기/Android

Manifest merger failed with multiple errors, see logs (targetSdkVersion 31 / Android 12) : exported

by ubmuhan 2022. 11. 24.
반응형

안녕하세요.

오늘(2022년 11월 24일) 앱을 배포하려고 구글 플레이 스토어에 "새 버전 만들기"를 진행하려고 했더니 targetSdkVersion을 31로 (Android 12) 변경을 해야 등록이 가능하다고 메시지가 뜨네요. 그래서 30에서 31로 변경을 했습니다. 변경하고 Rebuild Project 를 진행했습니다. 에러가 발생했습니다.

 

Manifest merger failed with multiple errors, see logs

 

위 에러를 해결하기 위해서 AndroidManifest.xml 파일을 열고 에러가 발생한 곳을 확인했습니다.

 

activity에 android:exported="true" 나 android:exported="false"를 추가해서 해결했습니다.

 

android:exported 는 다른 애플리케이션의 구성요소로 Activity 를 시작할 수 있는지 설정합니다. 다른 앱에서 Activity 를 시작할 수 있으면 "true"로 설정하고 다른 앱에서 Activity 를 시작할 수 없으면 "false"로 설정합니다. android:exported 가 "false" 로 설정된 경우, 해당 Activity 는 같은 앱 또는 사용자 ID 가 같은 앱에서만 시작할 수 있습니다.

인텐트 필터를 사용하는 경우 android:exported 를 "false" 로 설정하면 안 됩니다. 이렇게 설정하고 앱이 Activity 를 호출하려 하면 시스템이 ActivityNotFoundException을 발생시킵니다. 대신 이에 대한 인텐트 필터를 설정하지 않아 다른 앱이 이 Activity 를 호출하지 못하게 방지해야 합니다.

인텐트 필터가 없는 경우, android:exported 의 기본값은 "false"입니다. 이 요소를 "true"로 설정하면 이 Activity 는 Activity 의 정확한 클래스 이름을 아는 모든 앱에서 액세스할 수 있지만, 시스템이 암시적 인텐트를 일치시키려 할 때는 확인되지 않습니다.

 
 
 
 
반응형

댓글