[iOS] Firebase Crashlytics 설정하기

Dongwoo Kang·2022년 7월 14일
2
post-thumbnail

앱을 출시하고 반년 정도가 지났는데 앱 분석에 충돌이 찍혀있었다,,

어떤 부분에서 Crash가 발생했는지 확실하게 파악하기 위해서 알아보는중에
Firebase에서 Crashlytics라는 것을 지원하는걸 알게 되었다

Firebase Crashlytics를 프로젝트에 설정하는 방법을 알아보자!


1. Firebase Console

일단 Firebase Console에서 프로젝트를 만들어주고

iOS App을 추가한다

추가하는 과정에서 다운 받은 GoogleService-info.plist 파일을 프로젝트에 추가해준다


2. Pod Install

Cocoa Pods를 생성한적이 없다면
터미널에서 프로젝트 위치로 가서

$ pod init

프로젝트 폴더에 생성된 Podfile 을 텍스트 편집기로 열어주고

# Pods for {프로젝트 이름}
	pod 'Firebase/Analytics'
	pod 'Firebase/Crashlytics'

Analytics와 Crashlytics를 추가해주고

$ pod install --repo-update

다시 터미널로 돌아와서 설치해주면 된다

새로 생성된 {프로젝트 이름}.xcworkspace 로 프로젝트를 Open 해주자


3. Firebase Configure

AppDelegate.swift 에서 Firebase를 설정해주자

//
// AppDelegate.swift
//

import Firebase

@main
class AppDelegate: UIResponder, UIApplicationDelegate {

	func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    	FirebaseApp.configure()
    }
}

4. dSYM 파일 자동 업로드를 위해 Xcode 설정

왼쪽 탐색기에서 프로젝트 파일을 선택해주고

TARGETS 목록에서 기본 빌드 대상을 선택

Build Settings 탭에서 All을 클릭한 후 'debug information format'을 검색

Debug Information Format을 아래처럼 DWARF with dSYM File로 설정

Build Phases 탭으로 가서
+ 버튼을 누르고 'New Run Script Phase'을 클릭하면 아래에 'Run Script'가 생성된다

펼친 다음에 아래와 같이 작성해주자

Shell /bin/sh 아래

"${PODS_ROOT}/FirebaseCrashlytics/run"

Input Files 아래

${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}
$(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)

5. Crashlytics 디버깅 로깅 사용 설정

아래처럼 Product > Scheme > Edit Scheme...를 클릭

Run > Arguments 클릭해서 'Arguments Passed On Launch'에 '-FIRDebugEnabled' 를 추가해준다


6. 테스트

Crash를 강제로 내기 위해 테스트 버튼을 만들고 누르면 앱이 튕기게 해보자

//
// ViewController.swift
//

import UIKit

class ViewController: UIViewController {

	override func viewDidLoad() {
      super.viewDidLoad()

      let button = UIButton(type: .roundedRect)
      button.frame = CGRect(x: 20, y: 50, width: 100, height: 30)
      button.setTitle("Test Crash", for: [])
      button.addTarget(self, action: #selector(self.crashButtonTapped(_:)), for: .touchUpInside)
      view.addSubview(button)
  }

  @IBAction func crashButtonTapped(_ sender: AnyObject) {
      fatalError()
  }
}

버튼을 눌러서 충돌시키고 Firebase Console로 가보자

Console 왼쪽 메뉴에서
출시 및 모니터링 > Crashlytics 클릭

이렇게 나오면 성공,,,

충돌이 발생한 클래스와 메서드에 line까지 알려주고
리스트에 있는 문제를 클릭해서 보면
앱 버전, iOS 버전, 디바이스 모델까지 알려준다

profile
iOS Study Note

0개의 댓글