Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Firebase Crashlytics 시작하기

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

이 빠른 시작에서는 Firebase 콘솔에서 포괄적인 오류 보고서를 얻을 수 있도록 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 패키지 관리자를 사용하여 Firebase 종속 항목을 설치하고 관리합니다.

  1. Xcode에서 앱 프로젝트를 연 상태에서 파일 > 패키지 추가 로 이동합니다.
  2. 메시지가 표시되면 Firebase Apple 플랫폼 SDK 저장소를 추가합니다.
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Crashlytics 라이브러리를 선택합니다.
  5. Crashlytics에 대한 최적의 경험을 위해 Firebase 프로젝트에서 Google Analytics를 활성화 하고 앱에 Google Analytics용 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. 모든 빌드 유형에 대해 dSYM 파일을 사용하여 디버그 정보 형식DWARF with dSYM File 설정합니다.

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

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

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

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

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

      이 스크립트는 프로젝트의 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"라는 레이블이 붙어 있습니다.

    스위프트UI

    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 대시보드 를 방문하여 모든 보고서와 통계를 보고 조사하세요.

다음 단계