티스토리 뷰



Android SDK level 이 12.0 (API 31) 이상일 경우 AndroidManifest 의 'android:exported' 를 설정 안 하면 Activity, Service, Broadcast receiver 의 외부 실행이 제한된다.

 

이미 관련 블로그도 많고 구글링에도 다양한 답변을 찾을 수 있지만 정리하는 차원에서 다뤄보려 한다.

이번 포스팅에서는 'android:exported' 속성에 대해 알아보자.



300x250
300x250

Error message

android:exported needs to be explicitly specified for . 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.



Cause

Target SDK 가 Android SDK level 이 11.0 (API 30) 이하에서는 Activity, Service, Broadcast receiver 선언 시 AndroidManifest 에 'android:exported' 를 명시적으로 선언하지 않았다.

'android:exported' 의 경우 기본값이 true 이기 때문에 외부에 공개하지 않을 때만 해당 속성을 false 로 선언했다.

 

반면 target SDK 가 Android SDK level 이 12.0 (API 31) 이상 부터는 AndroidManifest 에 'android:exported' 를 명시적으로 설정해야 하며 그렇지 않은 경우 설치부터 실패한다.

 

◼ android:exprted

Activity, Service, Broadcast receiver 에 접근 시 외부에서 실행될 수 있는지의 여부를 설정한다.

 

하단은 앱 사이의 파일 공유에 대한 구글의 공식 문서다.

https://developer.android.com/about/versions/12/behavior-changes-12?hl=ko#exported



Solution

하단과 같이 AndroidManifest 의 Activity, Service, Broadcast receiver 에 'android:exprted' 의 값을 true or false 로 선언해 준다.

 



728x90
댓글