본문 바로가기
프로그램 개발해서 돈벌기/Android

java.lang.IllegalArgumentException: com.xxx.xxx: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent. (targetSdkVersion 31 / Android 12)

by ubmuhan 2022. 11. 24.
반응형

안녕하세요.

오늘(2022년 11월 24일) 앱을 배포하려고 구글 플레이 스토어에 "새 버전 만들기"를 진행하려고 했더니 targetSdkVersion을 31로 (Android 12) 변경을 해야 등록이 가능하다고 메시지가 뜨네요. 그래서 30에서 31로 변경을 했습니다. 변경하고 테스트를 진행하니 아래 처럼 에러가 발생하면서 앱이 죽었습니다.


java.lang.IllegalArgumentException: com.xxx.xxx: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.

 

해당 에러는 서비스 내 NotificationManager 사용을 위한 PendingIndent에서 발생했습니다.

targetSdkVersion 31부터 사용법이 바뀌었다고 합니다.

 

// 기존 코드
PendingIntent activityPendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);


// 변경한 코드
PendingIntent activityPendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_MUTABLE);

PendingIntent.FLAG_MUTABLE을 추가 했습니다.

 

  • IMMUTABLE : 변경이 불가능
  • MUTABLE : 변경 가능

 

만약 위 코드를 추가해도 문제가 해결 되지 않으면 build grade (:app) 내 dependencies에 다음 라이브러리를 추개해 주시면 해결 됩니다.

 

implementation 'androidx.work:work-runtime-ktx:2.7.0'

 

 

 
 
 
반응형

댓글