본문 바로가기
Android/Android Error

안드로이드 에러 Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent. 원인 및 해결

by 수쓰뎁 2023. 4. 19.


Abstract.

기존에 정상 작동하던 알람 기능이 실행 시 에러가 발생하며 앱이 다운되는 현상이 발견되었다. 테스트를 진행하며 왜 그런 것인지 확인해보니, Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent. 라는 내용의 에러 메시지를 확인할 수 있었다. 결론적으로 말하자면 안드로이드 버전이 31 이상인 경우 FLAG_UPDATE_CURRENT를 사용하면 충돌이 일어나기 때문이었다.

반응형

1. 에러 내용

알람 시간을 설정하고 설정된 시간이 되면 알람을 확인할 수 있는 알람기능을 테스트 하던 중 다음과 같은 에러가 발생하는 것을 확인하였다. 

Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent. 라는 내용을 보면 에러의 원인을 확인할 수 있다. targetSdk 31 이상에서 PendingIntent를 사용할 때 FLAG_IMMUTABLE이나 FLAG_MUTABLE을 사용하지 않아서 발생한 에러였다.


2. 에러 해결

에러 해결 방법은 에러 내용에 적혀있다. Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles. 에서 확인할 수 있듯이, 기존에 작성된 코드에서 PendingIntent.FLAG_UPDATE_CURRENT 부분을 targetSdk 31 이상에 맞도록 PendingIntent.FLAG_IMMUTABLE 또는 PendingIntent.FLAG_MUTABLE로 수정해야 한다. 해당 내용을 수정하고 알람 기능을 테스트하면 정상 작동하는 것을 확인할 수 있다.

반응형

댓글