사용자 bug - report인해 비정상 종료에 원인을 찾아야 했었다.
어느 부분에서 종료가 일어나는지 보고를 받기 위해 FireBase Crashlytics 적용
Flutter 설정
Android에 적용하기
안드로이드 프로젝트 폴더에 들어가서 프로젝트 레벨의 build.gradle에 maven 주소와 fabric, google-services 의존성을 추가해준다.
buildscript {
...
dependencies {
classpath 'com.google.gms:google-services:4.3.10'
classpath 'com.android.tools.build:gradle:7.2.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.1'
}
}
app 레벨의 build.gradle에는 위 처럼 플러그인을 활성화 해준다.
여기까지가 안드로이드 설정 과정이다.
iOS에 적용하기
Xcode로 iOS 프로젝트를 연다.
총 순서는 5개다.
Xcode로 프로젝트를 열어 Runner를 선택한다.
Build Phases 탭을 선택한다.
텍스트 박스에 ${PODS_ROOT/Fabric/run}을 추가한다.
사용중인 Xcode 버전이 10이라면, Info.plist의 Input Files에 (INFOPLIST_PATH)를 추가한다.
Runner 탭에서 Build Phases 항목을 선택한다.
스크립트를 입력할 수 있는 텍스트 박스가 나오는데 거기에 ${PODS_ROOT}/Fabric/run을 추가한다.
여기까지 iOS 설정 과정이다.
Crashlytics 작동시키기
앱 설정을 마쳤다면 crashlytics를 활성화 할 차례이다.
// pubspec.yaml
dependencies:
firebase_crashlytics: ^3.3.4
pubspec.yaml에 firebase_crashlytics 패키지를 추가한다.
메인 함수에서 앱을 로딩하기 전에 Crashlytics를 초기화하는 코드를 넣어주면 된다.
FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;
runZonedGuarded(
() {
runApp(
AppPage(
authenticationRepository: AuthenticationRepository(),
userRepository: UserRepository(),
),
);
},
(error, stack) => FirebaseCrashlytics.instance.recordError(
error,
stack,
fatal: true,
),
);
모든 설정이 완료되었으며, 이제부터 발생하는 크래시 로그는 파이어베이스의 Crashlytics 항목에서 조회할 수 있게 된다.
좋은 글 감사합니다.