java.lang.IllegalArgumentException: com.~~~, ~~~: 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.
현재 저는 안드로이드 스튜디오 Bumblebee, Chipmunk 로 안드로이드를 개발하고 있습니다.
올해를 마지막 과제는 저의 프로젝트들을 31 버전으로 대응하는 것입니다.
Android12 대응사항 중 중요한 것들은 Manifest 에서 exported 처리를 해주는 것과 Pending Intent 를 대응하는 것이라고 생각합니다.
<activity
android:name=".ui.main.MainActivity"
android:exported="true"
android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
<action android:name="android.intent.action.MAIN" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
exported 처리는 생각보다 간단합니다. 나의 앱이냐, 외부에서냐 를 기준으로 찾아보시면 좋을 것 같습니다.
사실 제가 이 글을 쓰는 목적은 Pending Intent 때문입니다.
위 사항을 대응하기 위해서는 2가지 작업이 필요합니다.
- 내가 쓰는 Pending Intent 를 바꾸어 줬는가?
- 라이브러리에서 쓰는 것들은 어떻게?
1 상황은 그냥 바꾸어 주기만 하면 됩니다. 하지만 2상황은 라이브러리를 업데이트할 필요가 있습니다.
현재 파악한 라이브러리는 2개 입니다.
*본 목록은 필자가 지속적으로 추가할 예정 입니다.
implementation("androidx.work:work-runtime-ktx:2.7.0")
implementation("com.google.android.gms:play-services-ads:20.5.0")
* 특히 구글 애드 몹을 사용하시는 분들이 이런 고초를 많이 겪으셨을 것 같습니다. 위 의존성을 업데이트 해주시고 실행하시면 될 것 같습니다.
(필자는 2개 라이브러리 업데이트 하는 것으로 대응 완료하였습니다. 언제나 예외 사항은 존재합니다.)
더욱 자세한 사항은 공식 문서를 참고해주세요
https://developer.android.com/about/versions/12/behavior-changes-all?hl=ko
https://developer.android.com/about/versions/12/behavior-changes-12?hl=ko
https://developer.android.com/about/versions/12/deprecations?hl=ko
'안드로이드' 카테고리의 다른 글
[안드로이드] repeatOnLifecycle 을 사용하며. (0) | 2021.12.26 |
---|---|
[안드로이드] 힐트(Hilt)를 사용하면서 - @Binds (4) | 2021.12.19 |
[안드로이드] Firebase Interceptor - with OkHttp3, Retrofit (0) | 2021.11.25 |
[안드로이드] 컴포즈로 조금씩 바꿔보자. (with Progress bar) (0) | 2021.09.29 |
[안드로이드] Gradle Type-safe project accessors (2) | 2021.09.23 |
댓글