본문 바로가기

Android

[Android Studio / Error] Manifest merger failed specify an explicit value for android:exported

<Error Message>

Manifest merger failed : Apps targeting Android 12 and higher are required to specify an explicit value for android:exported when the corresponding component has an intent filter defined. See https://developer.android.com/guide/topics/manifest/activity-element#exported for details.

 

보통 ❗ Manifest merger failed with multiple errors, see logs라는 문장이 보이면 AndroidManifest.xml 파일을 열고 

Merged Manifest 탭을 열어 에러를 확인한다.

하지만 이번 경우에는 Merged Manifest 탭에 어떤 오류도 나타나지 않았다.

게다가 에러 메시지를 해석하면 Android 12 버전 이상을 사용할 때에는 android:exported의 명시적 값을 지정해야 한다고 말하고 있지만 보다시피 android:exported 값은 true로 명시되어있는 상황이다.

 

이런 경우 App이 지원하는 버전에서 Android 12를 제외해보자.

build.gradle (Module: App1.app)을 열어 targetSdk 31 이라고 쓰여있는 코드를 targetSdk30으로 변경한다.

31은 Android 12의 API LEVEL을 나타낸다.

따라서 App의 지원 범위를 API Level 30까지로 한정해 Android 12를 지원할 때 발생하는 문제를 해결한다.

수정 전

 

수정 후

 

수정 후 다시 Run 버튼을 누르면 프로그램이 정상적으로 실행된다.

발생 원인 : App이 Android 12 버전을 대상으로 하고 있을 때 발생.
               정확한 원인은 모르지만 아직 Android 12가 완전하지 않은 상태라서 발생하는 문제인 것 같다.

해결 방법 : Gradle Scripts - build.gradle(Module: Application) 파일에 들어가
               `targerSdk 31` 코드를 찾아 31 대신 30으로 변경해준다.  

 

참고한 글 - Reddit