[Flutter 문제] 앱 배포 후 특정 안드로이드 버전 에서 앱 실행이 되지 않는 현상 (Android 12L, 13 핸드폰)

Yellowtoast·2023년 1월 27일
1

Flutter 기초

목록 보기
2/4

어떤 문제인가?

출시 전 테스트 한 폰의 Android 버전은 12,갤럭시 폴드4에서 PlayStore에서 다운로드 한 앱이 실행 자체가 되지 않는 오류 발생함.
Firebase Crashlytics 사용의 필요성을 절실히 느낌..
Android version 13 이상부터 설정해주어야 하는 것들을 설정하지 않아서 발생한 문제라고 현재는 예상하고 있다. => ++ 아래 해결방법 추가

문제가 발생한 안드로이드 개발 환경

- 앱 루트/android/app/build.gradle 파일 내부

  minSdkVersion 21       
  targetSdkVersion 32

- 앱 루트/android/build.gradle

    dependencies {
        classpath 'com.android.tools.build:gradle:4.2.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.gms:google-services:4.3.10'
    }
  • 앱 루트/android/gradle/wrapper/gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip

문제 추측 1 : 안드로이드 버전 13 이상부터 동작하지 않는 에러이다.

  • 기존에 테스트 하던 애뮬레이터 + 실 기기들의 version은 12 였음
  • 잘 작동하던 사용자의 휴대폰 version은 12였음

시도 1 - Android SDK 버전 및 gradle 업그레이드

  • 앱 루트/android/app/build.gradle

  • 앱 루트/android/gradle/wrapper/gradle-wrapper.properties
  • 앱 루트/android/build.gradle

문제 추측 2 : Firebase Messaging의 권한 요청시 Crash가 일어난다.

Firebase Messaging은 Android Version 13부터 새로운 permission을 추가하도록 되어 있다. -> 해당 부분 추가해도 문제가 해결되지 않음

최종 문제 해결

Firebase Crashlytics를 사용하여 android version 13에서 발생하는 오류를 수집하였다.

위의 오류에 대한 토론은 여기를 참고해 볼 수 있다.

내가 flutter_local_notification 라이브러리를 사용하지는 않지만,
FCM을 사용하기 때문에 유사한 알람 권한을 요청하는 로직이 수행될 때 crash가 일어나면서 앱이 종료되었다고 예상하고 있음.

flutter_local_notification 에서 아래와 같은 수정사항을 추가하고 있다.

Enabling desugaring이, Android 12L 이상의 안드로이드 버전에서 Crash를 유발한다 => 이 때문에 WindowManager library를 추가하는 로직은 build.gradle에 추가해주어야 한다.

여기서 Desugaring이란, Android에서 API level 24 이전의 기기에서도 Java 8 API 를 사용할 수 있도록 하는 방법이다.

Desugaring에 대한 자세한 내용은 안드로이드 공식 문서에서 찾아볼 수 있다.

결과적으로 Crashlytics 짱! 좀 더 촘촘하게 Crashlytics를 적용하여 신속하게 오류에 대응할 예정이다.

profile
Flutter App Developer

0개의 댓글