본문 바로가기
안드로이드

[안드로이드] SDK 31 대응 사항 중 PendingIntent 에 관하여

by keel_im 2021. 12. 7.
반응형
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 

 

동작 변경사항: 모든 앱  |  Android 12  |  Android Developers

Android 12를 타겟팅하는 앱에 영향을 주는 Android 12의 변경사항을 알아봅니다.

developer.android.com

https://developer.android.com/about/versions/12/behavior-changes-12?hl=ko 

 

동작 변경사항: Android 12를 타겟팅하는 앱  |  Android Developers

모든 앱에 영향을 주는 Android 12의 변경사항을 알아봅니다.

developer.android.com

https://developer.android.com/about/versions/12/deprecations?hl=ko 

 

지원 중단  |  Android 12  |  Android Developers

내년 초 출시될 대형 화면용 기능 출시인 12L을 준비하세요. 지금 사용해 보기 지원 중단 각 출시에서 특정 Android API는 더 이상 사용되지 않거나 더 나은 개발자 환경 제공이나 새 플랫폼 기능 지

developer.android.com

 

반응형

댓글