JooTC
android-card-1908-light-yellow

[안드로이드] Targeting S+ requires that one of FLAG_IMMUTABLE 해결

안드로이드 12 (API 31 및 S)을 타겟으로 하여 모바일 앱을 개발하려 할 때, 앱을 빌드하면 다음과 같이 에러메시지가 나타나면서 빌드에 실패하는 경우가 생깁니다.

2021-10-30 11:04:51.862 11643-11643/? E/studio.deploy: Failed to instrument: android/app/ResourcesManager
2021-10-30 11:04:52.447 11643-11675/com.example.myapp E/AndroidRuntime: FATAL EXCEPTION: pool-3-thread-1
    Process: com.example.myapp, PID: 11643
    java.lang.IllegalArgumentException: com.example.myapp: 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.
        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)

해결 방법

해결 방법은 간단합니다. PendingIntent를 사용하지 않는 경우에도 위 에러 메시지가 나타난다면, build.gradle 파일을 열고 다음 종속성 라이브러리를 추가하면 됩니다.

dependencies {
    ...
    implementation 'androidx.work:work-runtime-ktx:2.7.0'
    ...
}

이 포스트가 도움이 되었나요?

guest
0 Comments
Inline Feedbacks
모든 댓글 보기
0
이 포스트에 대한 의견을 남겨주세요!x
()
x
error: 무단 콘텐츠 도용 방지를 위해 복사하실 수 없습니다. 양해해주셔서 감사합니다. (소스코드는 복사 가능)