안드로이드 SDK31 에서 PendingIntent 관련 이슈

안드로이드 SDK 31 버전에서
앱이 실행될 때 최초 KakaoSDK.init()을 실행하는중 PendingIntent 관련 에러가 납니다.

하기는 에러 로그 입니다.
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.

경로를 보니
com.kakao.auth.Session.(Session.java:156) 현재 이 부분에서
this.alarmIntent = PendingIntent.getBroadcast(context, 0, new Intent(context, TokenAlarmReceiver.class), PendingIntent.FLAG_UPDATE_CURRENT);
이와 같이 되어있는데

PendingIntent의 Flag가 수정되어야 할 것 같네요

현재 사용중인 카카오 SDK버전은 2.8.3 입니다.

안녕하세요. 답변이 조금 늦었네요.

제보 주신 내용은 v1 SDK(1.x.x 버전)에서 발생하는 이슈로 확인되는데요, 현재 사용 중인 SDK 버전은 2.8.3 버전이라고 하셔서 혹시 v1 SDK와 v2 SDK를 같이 사용하고 계신건가요?

v1 SDK는 deprecated 될 예정이라서 만약 v1 SDK와 v2 SDK를 같이 사용하고 계신다면 v2 SDK로 버전업 하시기를 권장드립니다.

아니요 현재 v1 SDK는 사용중이지 않고 v2 SDK(2.8.3)를 사용중에 발견한 현상입니다.
안드로이드 31버전일 경우에만 나타나는 현상입니다.

이슈 발생한 앱 id가 어떻게 되시나요?

앱 id 는 Kakao Developers 에서 확인할 수 있는 숫자 값입니다.

안녕하세요

해당문제는 targetSdkVersion 31 이고 실제 핸드폰이 안드로이드 12버전일 경우 앱 빌드후 실행시에 바로 에러가 발생합니다.

카카오 최신버전
KAKAO_SDK_GROUP=com.kakao.sdk
KAKAO_SDK_VERSION=1.30.6
에서도 발생합니다.

캡처한 사진 Session.java 부분에 아래와 같이 수정이 되어야 합니다.

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) {
this.alarmIntent = PendingIntent.getBroadcast(context, 0, new Intent(context, TokenAlarmReceiver.class), PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
}else{
this.alarmIntent = PendingIntent.getBroadcast(context, 0, new Intent(context, TokenAlarmReceiver.class), PendingIntent.FLAG_UPDATE_CURRENT);
}

캡처

빠른 kakao sdk 업데이트 요청드립니다.

감사합니다.

안녕하세요

사용 중이신 v1 SDK(1.30.6)는 Deprecated 예정이라 대응이 늦어진 점 양해 부탁드리고, 빠른 시일 내에 v2 SDK로 마이그레이션하시기를 권장드립니다.

v1 SDK가 Deprecated 예정이라 대응이 늦어진 점 양해 부탁드리고, 제보주신 내용은 빠른 시일 내에 수정해서 배포하도록 하겠습니다.

제보 감사합니다

자답입니다.
기존에 초기 Application 단에서 KakaoSdk 초기화 시에 com.kakao.auth.KakaoSDK 에서 import해서
KakaoSdk.init(KakaoSdkAdapter); 와 같이 초기화를 진행했으나

com.kakao.sdk.common.KakaoSdk 에서 import하고
KakaoSdk(context, app_key); 와 같이 초기화를 하니 해결되었습니다.

안녕하세요

현재 v1 Sdk와 v2 Sdk를 같이 사용하고 계신 것으로 보여서, 혹시나 하는 마음에 답변 남겨드리는 점 양해 부탁드립니다.

기존에 com.kakao.auth.KakaoSDK를 import해서 사용하신 것은 v1 Sdk (1.x.x 버전) 이고, 해결하신 방식인 com.kakao.sdk.common.KakaoSdk를 import 한 것은 v2 Sdk (2.x.x 버전) 입니다.

v1 Sdk와 v2 Sdk를 같이 사용하시는 경우 Sdk가 비정상 동작을 할 수 있어서 v1 Sdk에 대한 의존성을 제거하신 후, v2 Sdk만 사용하시기를 권장드립니다.

감사합니다

1개의 좋아요

혹시 v1 sdk의 deprecated 예정일이 언제일까요?

정확히 날짜가 정해지지 않아서 말씀드리기는 어려울 것 같고, v1 Sdk는 거의 업데이트되지 않고 있고 v2 Sdk 위주로 업데이트가 진행되고 있다고 이해하시면 될 것 같습니다.

정확한 날짜가 정해지면 공지할 계획이라서 참고 부탁드립니다.

@yyok9407 @hwangsugeun

Android 12 대응된 v1 SDK 1.30.7 버전 배포되었습니다. 제보 감사합니다

4개의 좋아요

감사합니다 :slight_smile: