
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로 수정해야 한다. 해당 내용을 수정하고 알람 기능을 테스트하면 정상 작동하는 것을 확인할 수 있다.
댓글