안드로이드 개발

Manifest merger failed : Apps targeting Android 12 and higher 간단 해결 방법

피커 2023. 1. 4. 10:10
728x90
반응형

안드로이드 앱 개발 중 os 버전을 올리다보면 아래와 같은 에러를 만나게 됩니다.

이때 가장 간단히 해결하는 방법 공유합니다.

 

1. 에러

  -.아래와 같이 에러문구 발생합니다.

 

2. 원인

  -. android os가 버전 업되면서 구성요소들의 보안을 높이기 위해 등장한 강제 에러입니다.

     

 

3. 해결 방법.

   -. Main Activity 즉 앱실행시 처음 실행되는 앱에 대해 exported를 true로 변경해주면 해결 됩니다.

      AndroidManifest.xml파일을 열어주고 아래 스크린샷의 파란색 하이라이트 처럼 exported를 true로 설정합니다.

android:exported="true"

 

4. 관련 문서

4.1 에러 문구

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.

4.2 안드로이드 공식 문서

더 안전한 구성요소 내보내기
앱이 Android 12 이상을 타겟팅하고 인텐트 필터를 사용하는 활동이나 서비스, broadcast receiver를 포함하면 이러한 앱 구성요소의 android:exported 속성을 명시적으로 선언해야 합니다.

경고: 활동이나 서비스, broadcast receiver에서 인텐트 필터를 사용하지만 명시적으로 선언된 android:exported 값이 없으면 Android 12 이상을 실행하는 기기에 앱을 설치할 수 없습니다.
앱 구성요소에 LAUNCHER 카테고리가 포함된 경우 android:exported를 true로 설정합니다. 다른 대부분의 경우에는 android:exported를 false로 설정합니다.

다음 코드 스니펫은 android:exported 속성이 false로 설정된 인텐트 필터가 포함된 서비스의 예를 보여줍니다.


<service android:name="com.example.app.backgroundService"
         android:exported="false">
    <intent-filter>
        <action android:name="com.example.app.START_BACKGROUND" />
    </intent-filter>
</service>

반응형