Firebase Summit에서 발표된 모든 내용을 살펴보고 Firebase로 앱을 빠르게 개발하고 안심하고 앱을 실행하는 방법을 알아보세요. 자세히 알아보기

Firebase Crashlytics 시작하기

이 빠른 시작에서는 Firebase Console에서 포괄적인 비정상 종료 보고서를 얻을 수 있도록 Firebase Crashlytics SDK를 사용하여 앱에서 Firebase Crashlytics를 설정하는 방법을 설명합니다.

Crashlytics를 설정하려면 Firebase 콘솔과 IDE 모두에서 작업(예: Firebase 구성 파일 및 Crashlytics SDK 추가)이 필요합니다. 설정을 완료하려면 테스트 비정상 종료를 강제 실행하여 첫 번째 비정상 종료 보고서를 Firebase로 보내야 합니다.

시작하기 전에

  1. 아직 추가하지 않았다면 Apple 프로젝트에 Firebase 를 추가하세요. Apple 앱이 없는 경우 샘플 앱 을 다운로드할 수 있습니다.

  2. 권장사항 : 비정상 종료 사용자, 탐색경로 로그, 속도 알림과 같은 기능을 사용하려면 Firebase 프로젝트에서 Google 애널리틱스를 사용 설정해야 합니다.

    Crashlytics에서 지원하는 모든 Apple 플랫폼(watchOS 제외)은 Google Analytics의 이러한 기능을 활용할 수 있습니다. macOS 및 tvOS 앱에는 SDK v8.9.0 이상이 필요합니다.

    • 기존 Firebase 프로젝트에 Google 애널리틱스가 활성화되지 않은 경우 Firebase 콘솔의 > 프로젝트 설정통합 에서 Google 애널리틱스를 활성화할 수 있습니다.

    • 새 Firebase 프로젝트를 만드는 경우 프로젝트 생성 워크플로 중에 Google 애널리틱스를 활성화하세요.

1단계 : 앱에 Crashlytics SDK 추가

Swift Package Manager를 사용하여 Firebase 종속 항목을 설치하고 관리합니다.

  1. Xcode에서 앱 프로젝트를 연 상태에서 File > Add Packages 로 이동합니다.
  2. 메시지가 표시되면 Firebase Apple 플랫폼 SDK 저장소를 추가합니다.
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Crashlytics 라이브러리를 선택합니다.
  5. Crashlytics 사용 환경을 최적화하려면 Firebase 프로젝트에서 Google 애널리틱스를 사용 설정하고 앱에 Google 애널리틱스용 Firebase SDK를 추가하는 것이 좋습니다. IDFA 수집이 없는 라이브러리 또는 IDFA 수집이 있는 라이브러리를 선택할 수 있습니다.
  6. 완료되면 Xcode는 자동으로 백그라운드에서 종속성을 해결하고 다운로드하기 시작합니다.

다음으로 Firebase 모듈을 구성합니다.

  1. App 구조 또는 UIApplicationDelegate 에서 Firebase 모듈을 가져옵니다.

    빠른

    import Firebase

    목표-C

    @import Firebase;
  2. 일반적으로 앱 대리인의 application(_:didFinishLaunchingWithOptions:) 메서드에서 FirebaseApp 공유 인스턴스를 구성합니다.

    빠른

    // Use the Firebase library to configure APIs.
    FirebaseApp.configure()
    

    목표-C

    // Use the Firebase library to configure APIs.
    [FIRApp configure];
    

2단계 : dSYM 파일을 자동으로 업로드하도록 Xcode 설정

사람이 읽을 수 있는 비정상 종료 보고서를 생성하려면 Crashlytics에 프로젝트의 디버그 기호(dSYM) 파일이 필요합니다. 다음 단계에서는 dSYM을 자동으로 생성하고 처리하며 앱을 빌드할 때마다 파일을 업로드하도록 Xcode를 구성하는 방법을 설명합니다.

  1. 프로젝트의 Xcode 작업 공간을 연 다음 왼쪽 탐색기에서 해당 프로젝트 파일을 선택합니다.

  2. TARGETS 목록에서 기본 빌드 대상을 선택합니다.

  3. 빌드 설정 탭을 클릭한 후 Xcode가 빌드에 대한 dSYM을 생성하도록 다음 단계를 완료하십시오.

    1. 모두 를 클릭한 다음 debug information format 을 검색합니다.

    2. 모든 빌드 유형에 대해 디버그 정보 형식DWARF with dSYM File 설정합니다.

  4. Build Phases 탭을 클릭한 후 Xcode가 dSYM을 처리하고 파일을 업로드할 수 있도록 다음 단계를 완료하십시오.

    1. > 새 실행 스크립트 단계 를 클릭합니다.

      이 새로운 스크립트 실행 단계가 프로젝트의 마지막 빌드 단계인지 확인하십시오. 그렇지 않으면 Crashlytics에서 dSYM을 제대로 처리할 수 없습니다.

    2. 스크립트 실행 섹션을 확장합니다.

    3. 스크립트 필드( Shell 레이블 아래에 있음)에서 다음 실행 스크립트를 추가합니다.

      이 스크립트는 프로젝트의 dSYM 파일을 처리하고 파일을 Crashlytics에 업로드합니다.

      "${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"
    4. 입력 파일 섹션에서 다음 파일 위치의 경로를 추가합니다.

      • 프로젝트의 dSYM 파일 위치:

        ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}

        프로젝트의 dSYM 파일 위치를 제공하면 Crashlytics에서 대용량 앱의 dSYM을 더 빠르게 처리할 수 있습니다.

      • 프로젝트의 빌드된 Info.plist 파일 위치:

        $(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)

        프로젝트의 빌드된 Info.plist 파일 위치를 제공하면 Crashlytics에서 앱 버전을 dSYM과 연결할 수 있습니다.

dSYM 파일 및 Crashlytics(dSYM 파일을 수동으로 업로드하는 방법 포함)에 대한 자세한 내용은 난독 해제된 비정상 종료 보고서 가져오기를 참조하세요.

3단계 : 설정을 완료하기 위해 강제로 테스트 비정상 종료

Crashlytics 설정을 완료하고 Firebase 콘솔의 Crashlytics 대시보드에서 초기 데이터를 보려면 강제로 테스트 비정상 종료를 실행해야 합니다.

  1. 테스트 비정상 종료를 강제하는 데 사용할 수 있는 코드를 앱에 추가합니다.

    다음 코드를 사용하여 눌렀을 때 충돌을 일으키는 버튼을 앱에 추가할 수 있습니다. 버튼에는 "Test Crash"라는 라벨이 붙어 있습니다.

    SwiftUI

    Button("Crash") {
      fatalError("Crash was triggered")
    }
    

    UIKit

    빠른

    import UIKit
    
    class ViewController: UIViewController {
      override func viewDidLoad() {
          super.viewDidLoad()
    
          // Do any additional setup after loading the view, typically from a nib.
    
          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) {
          let numbers = [0]
          let _ = numbers[1]
      }
    }
    

    목표-C

    #import "ViewController.h"
    
    @implementation ViewController
    ‐ (void)viewDidLoad {
        [super viewDidLoad];
    
        // Do any additional setup after loading the view, typically from a nib.
    
        UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        button.frame = CGRectMake(20, 50, 100, 30);
        [button setTitle:@"Test Crash" forState:UIControlStateNormal];
        [button addTarget:self action:@selector(crashButtonTapped:)
            forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:button];
    }
    
    ‐ (IBAction)crashButtonTapped:(id)sender {
        @[][1];
    }
    
    @end
    
  2. Xcode에서 앱을 빌드하고 실행합니다.

    1. 빌드를 클릭한 다음 현재 체계를 실행하여 테스트 기기 또는 시뮬레이터에서 앱을 빌드합니다.

    2. 앱이 실행될 때까지 기다린 다음 구성표 또는 작업 실행 중지를 클릭하여 앱의 초기 인스턴스를 닫습니다. 이 초기 인스턴스에는 Crashlytics를 방해하는 디버거가 포함되어 있습니다.

  3. 앱의 첫 번째 충돌 보고서를 보내려면 테스트 충돌을 강제 실행합니다.

    1. 테스트 기기 또는 시뮬레이터의 홈 화면에서 앱을 엽니다.

    2. 앱에서 위의 코드를 사용하여 추가한 "Test Crash" 버튼을 누릅니다.

    3. 앱이 비정상 종료된 후 Xcode에서 다시 실행하여 앱에서 Firebase로 비정상 종료 보고서를 보낼 수 있도록 하세요.

  4. Firebase 콘솔의 Crashlytics 대시보드 로 이동하여 테스트 비정상 종료를 확인하세요.

    콘솔을 새로 고쳤는데도 5분 후에도 테스트 충돌이 표시되지 않으면 디버그 로깅을 활성화 하여 앱이 충돌 보고서를 보내고 있는지 확인하십시오.


그리고 그게 다야! 이제 Crashlytics에서 앱의 비정상 종료를 모니터링하고 있습니다. 모든 보고서와 통계를 보고 조사하려면 Crashlytics 대시보드 를 방문하세요.

다음 단계