안드로이드 14에서 foreground service 크래시 해결

오리·2024년 1월 27일

상황

foreground service로 녹음 기능을 구현했는데, 녹음 기능을 켜자마자 안드로이드 14에서 runtime error가 나면서 앱이 꺼짐

안드로이드 14 이하 버전


잘 동작!

안드로이드 14


에러가 나며 앱이 중지된다.

에러 코드

해결

https://developer.android.com/about/versions/14/changes/fgs-types-required?hl=ko

개발자가 사용자 대상 포그라운드 서비스를 더 잘 정의하도록 돕기 위해 Android 10에서는 [<service>](https://developer.android.com/guide/topics/manifest/service-element?hl=ko) 요소 내에 android:foregroundServiceType 속성을 도입했습니다.

앱이 Android 14를 타겟팅하는 경우 적절한 포그라운드 서비스 유형을 지정해야 합니다. 이전 버전의 Android에서와 마찬가지로 여러 유형을 결합할 수 있습니다. 이 목록에는 선택할 수 있는 포그라운드 서비스 유형이 표시됩니다.

즉, 안드로이드 14 이상부터는 반드시 포그라운드 서비스 유형을 manifest에 지정해주어야 한다!
이 앱은 포그라운드 서비스에서 녹음 기능을 사용하기 때문에, microphone으로 지정해주었다.

<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE" />

아래 줄의 FOREGROUND_SERVICE_MICROPHONE 를 앱이 사용하는 유형으로 적절히 바꾸어서 넣어주면 된다.

그럼 해결~
안드로이드 14는 요구하는 권한이 너무 많이 바뀌어서 따로 테스트 해줘야 한다는 걸 잊지말자!

0개의 댓글