안드로이드 앱 개발 중 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>
'안드로이드 개발' 카테고리의 다른 글
Caused by java.lang.NullPointerException: Attempt to invoke virtual method 간단 해결 방법 (0) | 2023.01.09 |
---|---|
java.lang.IndexOutOfBoundsException 에러 간단 해결 방법 (0) | 2023.01.08 |
Warning: Mapping new ns to old ns (0) | 2023.01.04 |
Please remove usages of `jcenter()` Maven repository from your build 간단 해결 방법 (0) | 2023.01.04 |
안드로이드 webview에서 특정 페이지가 열리지 않을 때 해결 방법 (0) | 2022.12.31 |