< 문의 개요 >
Firebase App Distribution을 통해 배포된 APK에서 전화 수신 시 오버레이 팝업(TYPE_APPLICATION_OVERLAY
)을 띄우는 과정에서 앱이 크래시가 발생합니다. 동일 APK를 직접 디버그 빌드로 설치한 경우에는 정상 작동하지만, Firebase를 통해 설치하면 BadTokenException
이 발생하며 팝업 생성이 거부됩니다.
< 재현 조건 >
- 디바이스: 삼성 Galaxy 시리즈 (예: S22, A52 등 OneUI 기반)
- Android 버전: 11 이상
- 앱 서명: Firebase App Distribution을 통해 서명된
release
APK - 권한 상태:
SYSTEM_ALERT_WINDOW
오버레이 권한 허용된 상태 - 상황:
- 전화 수신 감지 (INCOMING_RINGING)
- 포그라운드 서비스에서 팝업 띄움 시도 (
TYPE_APPLICATION_OVERLAY
)
- 결과: 앱이 아래와 같은 에러와 함께 강제 종료됨
< 에러 로그 (중요 부분만 발췌) >
FATAL EXCEPTION: main
Process: kr.co.cardoc.shop.dev, PID: 22801
java.lang.RuntimeException: Unable to start service kr.co.cardoc.shop.callerid.CallerIDOverlayService
Caused by: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@f0c0207 – permission denied for window type 2038
< 참고 로그 >
Could not find package: {packageName}
Failed to measure fs-verity, errno 95: /data/app/…/base.apk
[CallerIDOverlayService] onStartCommand(), callerIDView : null
View class …TopRoundedImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant)
< 추가 정보 >
* 앱은 `SYSTEM_ALERT_WINDOW` 권한을 정상적으로 요청하고 `Settings.canDrawOverlays(context)` 검사에서도 `true`를 반환합니다.
* **Firebase로 서명 및 설치된 APK에서만 문제 발생**하며, **직접 디버깅 빌드로 설치한 경우에는 동일 동작이 정상 작동**합니다.
* 팝업은 `WindowManager`를 사용하여 `TYPE_APPLICATION_OVERLAY`로 띄우고 있으며, 포그라운드 서비스 컨텍스트에서 실행됩니다.
< 문의사항 >
1. `SYSTEM_ALERT_WINDOW` 권한이 명확히 허용되어 있음에도 Firebase를 통해 설치된 앱에서는 오버레이 창이 차단되는 이유가 무엇인가요?
2. 삼성 기기에서 Firebase 앱 설치 방식이 시스템 레벨에서 오버레이 제한 정책과 충돌이 있을 수 있나요?
3. 특정 보안 정책(Knox 등)이 앱 설치 출처에 따라 권한 행동을 제한하고 있는 것인가요?
< 요청 >
* 위 조건에서 발생하는 `BadTokenException`의 원인과, Samsung 기기에서 `SYSTEM_ALERT_WINDOW` 권한 적용 조건에 대한 공식 가이드를 요청드립니다.