adsense


SDK31 이상에서 PendingIntent 관련 크래시


0. 액트플래시를 타겟 SDK 31로 변경하고 나서 앱 크래시가 발생.
안드로이드 단말 한정 발생으로 게임중에는 생기지 않습니다. (=win32에서 확인 불가)

1. fatal 로그 찍어보니
주된 로그 :
Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent

액트플래시는 기지건설/자원채굴 등의 완료를 통보하기 위해 노티파이 기능을 사용하고, PendingIntent가 여기 있습니다.

해결법은 검색문서마다 조금씩 다른데, 결국 자기 프로그램에 맞는 방법을 찾느라 빙 돌아왔네요.

가장 도움이 된 참조 https://onlyfor-me-blog.tistory.com/467


2. 해결

다음 내용을 처리해 줍니다.

앱 gradle에 의존성 추가
implementation 'androidx.work:work-runtime:2.7.1'

PendingIntent 객체 생성하는 부분을 모두 찾아 마지막 인수를 PendingIntent.FLAG_IMMUTABLE로 변경

매니페스트에 아래 퍼미션 추가
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />


이상.


덧글

  • 펭귄대왕 2022/10/06 06:00 # 답글

    하나 더 추가
    애드몹 광고 사용하고 있다면, SDK31 이상으로 올리는 경우 메니페스트에
    <uses-permission android:name="com.google.android.gms.permission.AD_ID" />
    퍼미션 추가해줘야 합니다.
    플레이 콘솔에 SDK32 이상에서 추가하라고 되어 있어서 31은 상관 없는줄 알았네요.
댓글 입력 영역


Books

Geek라이프

나의 오락실 이야기 (나와 인생을 함께한 오락실 연대기)
이시이 젠지 저/엄다인 역/꿀딴지곰 감수

기초부터 시작하는 모형 전자공작
박성윤 저

MSX&재믹스 퍼펙트 카탈로그
마에다 히로유키 저/조기현 역

핵심강좌! Cocos2d-x
이재환 저
예스24 | 애드온2
일본서적 전문사이트 NEPIC