1. 개요
  2. 오류내용 확인
  3. 문제 해결방법

1. 개요

노트북을 바꾸고 나서 안드로이드 스튜디오를 받으니 새로운 SDK버전 애뮬레이터가 적용된것 같습니다.

이때문에 아래와 같은 오류가 발생하는 것 같습니다. 해결방법을 찾아보겠습니다. 

안드로이드 11버전 에뮬레이터를 다운받아 실행 시 잘 나오는것을 확인했습니다.

2. 오류내용 확인

Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.
    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.

 

타겟팅 S+(version31 이상)는 PendingIntent를 생성 시 FLAG_IMMUTABLE 또는 FLAG_MUTABLE 중 하나가 명시하는것을 요청합니다.

FLAG_IMMUTABLE를 사용하는것을 강하게 고려하시기 바랍니다.  만약 어떤 기능적으로 일부 변경이 가능한 Pendingintent에 의존하는 경우에만 FLAG_MUTABLE를 사용하시기 바랍니다. 예를들면 인라인 답장(알림창에서 바로 답장을 보내는 것)또는 버블(화면밖에 떠있는 화면)

 

3. 문제 해결방법

아래 오류내용를 보면 추적해야할 추측 할 수 있습니다. androidx.work.impl.. 이부분 입니다.

 at android.app.PendingIntent.checkFlags(PendingIntent.java:375)
        at android.app.PendingIntent.getBroadcastAsUser(PendingIntent.java:645)
        at android.app.PendingIntent.getBroadcast(PendingIntent.java:632)
        at androidx.work.impl.utils.ForceStopRunnable.getPendingIntent(ForceStopRunnable.java:174)
        at androidx.work.impl.utils.ForceStopRunnable.isForceStopped(ForceStopRunnable.java:108)
        at androidx.work.impl.utils.ForceStopRunnable.run(ForceStopRunnable.java:86)
        at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:75)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:920)

 

최신버전에 다음 라이브러리가 적용이 되지 않아 최신 버전으로 변경해주어야 할 것 같습니다.

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

 

제 프로잭트에서 해결방법은 2가지입니다.

 

1. target version을 31이하로 낮추기 (저는 이방법을 사용)

31버전을 적용할 경우 대응해야할 기능이 많을 것 같아 충분한 대응 시간이 필요 할 것 같습니다.

 

2. androidx.work:work-runtime-ktx: 버전을 최신으로 변경하거나 사용하지 않을 경우 삭제 합니다.

 

 

https://stackoverflow.com/questions/68473542/mediasessioncompattargeting-s-version-31-and-above-requires-that-one-of-flag

 

MediaSessionCompat:Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when cre

I'm trying to update my application to Android SDK 31 but I'm having an issue with MediaSessionCompat. I have a MediaService that extends the MediaBrowserServiceCompat() and in method onCreate of t...

stackoverflow.com

 

+ Recent posts