Skip to content

[#753] 기존 설치의 Crashlytics 수집 상태가 Xcode Debug 빌드에 남는 현상을 해결한다#754

Merged
opficdev merged 3 commits into
developfrom
fix/#753
Jul 22, 2026
Merged

[#753] 기존 설치의 Crashlytics 수집 상태가 Xcode Debug 빌드에 남는 현상을 해결한다#754
opficdev merged 3 commits into
developfrom
fix/#753

Conversation

@opficdev

@opficdev opficdev commented Jul 22, 2026

Copy link
Copy Markdown
Owner

🔗 연관된 이슈

🎯 의도

  • 기존 설치에 저장된 Crashlytics 수집 상태가 빌드된 Info.plist보다 우선하는 문제 해결
  • Xcode 직접 빌드의 첫 실행부터 Crashlytics 수집 비활성화
  • Xcode 직접 빌드에서 생성된 미전송 보고서의 추후 배포 빌드 전송 차단
  • Fastlane 배포 빌드의 Crashlytics 수집 및 dSYM 처리 유지

📝 작업 내용

📌 요약

  • 빌드된 FirebaseCrashlyticsCollectionEnabled 값을 해석하는 FirebaseCrashlyticsCollectionPolicy 추가
  • 현재 수집 상태와 빌드 정책에 따른 Crashlytics 전환 작업 정의
  • FirebaseApp.configure() 이전에 기존 Crashlytics 수집 override를 제거하는 FirebaseCrashlyticsOverrideMigrator 추가
  • 수집 비활성 상태에서 미전송 보고서 삭제 후 현재 빌드 정책 저장
  • 정책 입력값, 상태 전환 순서, 내부 저장값 마이그레이션에 대한 단위 테스트 추가

🔍 상세

  • Info.plist의 Boolean 값만 유효한 수집 정책으로 해석
  • 값 누락, 잘못된 형식, 숫자 입력을 수집 비활성 상태로 처리
  • 수집 비활성 빌드에서 Firebase 11.15.0의 CLSUserDefaults.plist에 저장된 com.crashlytics.data_collection 제거
  • Crashlytics의 다른 내부 속성을 유지하고 수집 override만 제거
  • 내부 저장값 제거 완료 후 FirebaseApp.configure() 호출
  • 마이그레이션 실패 시 Firebase 구성을 진행하지 않는 전송 차단 처리
  • 현재 수집 상태가 비활성인 경우 deleteUnsentReports() 실행 후 현재 빌드 정책 저장
  • 현재 수집 상태가 활성인 경우 현재 빌드 정책으로 저장 상태 갱신

Xcode 직접 빌드 전환 흐름:

저장된 활성 상태 Optional(1)
→ FirebaseApp.configure() 이전 수집 override 제거
→ 저장된 override nil
→ Info.plist=false로 Crashlytics 초기화
→ deleteUnsentReports()
→ setCrashlyticsCollectionEnabled(false)
→ 비활성 상태 Optional(2) 저장

Fastlane 배포 빌드 전환 흐름:

저장 false + 배포 빌드 true
→ 비활성 상태로 Crashlytics 초기화
→ deleteUnsentReports()
→ setCrashlyticsCollectionEnabled(true)
→ Debug 미전송 보고서 삭제 후 수집 활성화

검증 결과:

  • 변경된 Source·Tests 파일 SwiftLint 위반 0건
  • Infra build-for-testing 성공
  • 기존 TodoServiceImpl.swift 파일 길이 경고 외 신규 경고 없음
  • Xcode Debug 빌드의 FirebaseCrashlyticsCollectionEnabled=false 확인
  • 기존 활성 상태 Optional(1) 재현 확인
  • FirebaseApp.configure() 이전 마이그레이션 후 저장 상태 nil 확인
  • 상태 전환 작업 완료 후 비활성 상태 Optional(2) 저장 확인
  • 다음 Debug 실행에서 Automatic data collection is disabled. 확인
  • 계획 외 Project.swift, Info.plist, Fastlane 및 target dependency 변경 없음

내부 구현 의존:

  • Firebase iOS SDK 11.15.0의 Library/Application Support/com.crashlytics/CLSUserDefaults.plist 저장 구조 의존
  • Firebase SDK 버전 변경 시 저장 경로와 com.crashlytics.data_collection 키 재검증 필요

남은 관찰 항목:

  • 실제 미전송 보고서가 있는 상태에서 삭제 후 N → 0 전환 확인
  • Fastlane TestFlight/App Store 산출물의 수집 활성화 및 dSYM 유지 확인
  • 새로운 Debug UUID가 Firebase 필수 누락 dSYM 목록에 추가되지 않는지 확인

📸 영상 / 이미지 (Optional)

@opficdev opficdev self-assigned this Jul 22, 2026
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@opficdev
opficdev marked this pull request as draft July 22, 2026 03:20
@opficdev
opficdev marked this pull request as ready for review July 22, 2026 03:20
@opficdev opficdev closed this Jul 22, 2026
@opficdev opficdev reopened this Jul 22, 2026
@opficdev
opficdev merged commit 01874f1 into develop Jul 22, 2026
7 checks passed
@opficdev
opficdev deleted the fix/#753 branch July 22, 2026 03:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

기존 설치의 Crashlytics 수집 상태가 Xcode Debug 빌드에 남는 현상을 해결한다

1 participant