SecurityException Crash 수정(v3.2.1)
이슈 요약
수면측정 중 Android OS 수준의 WebView 업데이트 등으로 앱 프로세스가 kill되면, START_STICKY에 의해 AsleepService가 재시작됩니다. 이때 RECORD_AUDIO 권한이 OS에 의해 revoke된 상태에서 startForeground(FOREGROUND_SERVICE_TYPE_MICROPHONE) 호출 시 SecurityException이 발생하고, catch 블록에서 NetworkOnMainThreadException으로 앱 크래시가 발생합니다.
재현 조건
- targetSdk 34+
- implementation 'ai.asleep:asleepsdk:3.2.0'
재현 순서
- 앱에서 beginSleepTracking 시작
- adb 명령어 실행 :
adb shell pm revoke [app package name] android.permission.RECORD_AUDIO
▎ OS 수준의 WebView 업데이트 시와 동일한 동작: 런타임 권한 revoke → 앱 전체 프로세스 kill → START_STICKY로 서비스 재시작
AsleepSDK 3.2.0 동작 (크래시 발생)
SecurityException 발생 → catch에서 NetworkOnMainThreadException 발생 → 강제 종료된 후 크래시 발생
Operation not started: uid=11116 pkg=ai.asleep.asleep_sdk_android_test(null) op=RECORD_AUDIO
Operation not started: uid=11116 pkg=ai.asleep.asleep_sdk_android_test(null) op=START_FOREGROUND
...
Caused by: android.os.NetworkOnMainThreadException
...AsleepSDK 3.2.1 동작 (크래시 없음)
SecurityException 발생 → catch에서 정상 처리 → 크래시 없이 서비스 종료
Operation not started: uid=11116 pkg=ai.asleep.asleep_sdk_android_test(null) op=RECORD_AUDIO
Operation not started: uid=11116 pkg=ai.asleep.asleep_sdk_android_test(null) op=START_FOREGROUND
Updated about 10 hours ago
