Skip to content

Xcode 직접 빌드에서는 Crashlytics를 비활성화하고 배포 빌드에서만 활성화한다 #722

Description

@opficdev

배경

  • Xcode에서 직접 생성한 1.4 (1) 빌드 UUID가 Firebase Crashlytics의 dSYM 누락 대상으로 등록됨
  • 저장소의 기본값은 MARKETING_VERSION = 1.4, CURRENT_PROJECT_VERSION = 1이므로 Xcode 직접 빌드가 1.4 (1)로 생성됨
  • 2026년 7월 3일 TestFlight 1.4 (1) 앱 본체 UUID는 AF8CB5B3-D8B3-3BA2-9EB8-329317C422AB이며, 아래 누락 UUID 및 해당 TestFlight dSYM 전체와 일치하지 않음
  • 보존된 최근 TestFlight/App Store dSYM에서도 아래 UUID가 발견되지 않아 삭제된 로컬 Xcode 산출물로 판단됨

누락 UUID

  • 33358645-05B1-38E6-A112-43F3DFA35EB7
  • F3E0C80C-6856-3E83-94E1-EEDF24BA0F55
  • 6FCC0790-B22C-37C7-93A0-8F130797911C
  • 82E9B0E8-3BB3-32BC-815F-2B95905196F6

원인

  • Application/App/Project.swift에서 StagingReleaseFirebaseCrashlyticsCollectionEnabledYES로 설정됨
  • Xcode에서 직접 Staging 또는 Release를 빌드해도 Crashlytics가 활성화됨
  • FirebaseAppServiceImplsetCrashlyticsCollectionEnabled(true) 호출값은 기기에 보존되고 Info.plist보다 우선하므로, 이후 로컬 빌드에서도 이전 활성화 상태가 남을 수 있음
  • Crashlytics는 TestFlight/App Store 여부가 아니라 전달받은 이벤트의 실행 파일 UUID를 기준으로 dSYM을 요구함

작업 범위

  • Xcode 직접 빌드의 Debug, Staging, Release에서 Crashlytics 수집을 기본 비활성화
  • FirebaseAppServiceImpl의 실행 시점 setCrashlyticsCollectionEnabled(true) 제거
  • fastlane/Fastfilebuild_for_store에서만 Crashlytics 활성화 설정 주입
  • TestFlight/App Store 빌드에서만 dwarf-with-dsym을 사용하고 기존 dSYM 업로드 흐름 유지
  • 생성된 IPA의 FirebaseCrashlyticsCollectionEnabled 값이 true인지 배포 전 검증
  • 배포 dSYM UUID 목록을 텍스트 아티팩트로 보존해 이후 누락 알림의 출처를 대조할 수 있도록 구성
  • 개발 기기에 보존된 Crashlytics 활성화 값과 미전송 보고서를 정리하는 전환 절차 확인

완료 조건

  • Xcode에서 직접 빌드한 Debug, Staging, Release 앱이 Crashlytics 이벤트를 전송하지 않음
  • 로컬 Xcode 빌드 UUID가 새로운 dSYM 누락 대상으로 추가되지 않음
  • Fastlane으로 생성한 TestFlight와 App Store 앱에서는 Crashlytics가 활성화됨
  • TestFlight/App Store dSYM이 Firebase에 업로드되고 배포 UUID 목록이 아티팩트로 보존됨
  • 배포 IPA의 Crashlytics 활성화 설정을 자동으로 검증함
  • 변경된 Swift 파일은 SwiftLint, iOS 프로젝트 변경은 빌드만 수행하여 검증함

제외 범위

  • 기존에 삭제된 로컬 dSYM 복구
  • Firebase Console에 이미 등록된 과거 누락 UUID 제거
  • 개발용 bundle ID 또는 별도 Firebase app 추가
  • Crashlytics에 기록하는 오류 종류와 metadata 변경

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions