DateP

iOS 빌드 및 Firebase 인증 문제 해결 과정 상세 기록 -2025 -05 -18

Solo.dev 2025. 5. 19. 00:06
iOS 빌드 및 Firebase 인증 문제 해결 과정 상세 기록

iOS 빌드 및 Firebase 인증 문제 해결 과정 상세 기록

1. EAS Production 빌드 시 pod install 실패 (iOS)

  • 문제 상황: iOS 앱 심사를 위해 EAS를 통해 Production 빌드를 시도했으나, pod install 단계에서 지속적으로 실패했습니다.
  • 원인 추정: EAS 빌드 환경에서의 Cocoapods 의존성 처리 문제 또는 특정 Pod과의 호환성 문제일 수 있습니다.

2. 로컬 prebuild 및 수동 pod install 시도

  • 조치 사항: EAS 빌드 대신 expo prebuild 명령어를 사용하여 네이티브 iOS 프로젝트를 생성하고, 로컬 환경에서 직접 pod install을 실행했습니다.
  • 결과: 여러 시도 끝에 pod install은 성공적으로 완료되었습니다.

3. Xcode 빌드 시 'react/runtime/JSRuntimeFactory.h' 에러 발생

  • 문제 상황: pod install 성공 후 Xcode에서 프로젝트를 빌드하는 과정에서 'react/runtime/JSRuntimeFactory.h' file not found 와 유사한 에러가 발생하며 빌드에 실패했습니다.
  • 원인 추정: React Native 버전과 관련된 헤더 파일 경로 문제, New Architecture (Fabric) 활성화와 관련된 설정 미흡, 또는 Cocoapods가 생성한 프로젝트 설정과의 불일치 등일 수 있습니다.
  • 조치 사항: 인터넷 검색을 통해 관련 해결 방법을 찾아 적용했습니다. (일반적으로 헤더 검색 경로 수정, use_frameworks! 설정 조정, 또는 특정 React Native 버전 관련 패치 적용 등이 포함될 수 있습니다.)
  • 결과: 해당 빌드 에러를 해결했습니다.

4. 빌드 성공 후 Firebase Auth 관련 런타임 에러 발생 (iOS)

  • 문제 상황: 앱 빌드는 성공했으나, 실행 시 Firebase 인증(Auth) 관련 기능에서 "Component auth has not been registered yet" 오류가 발생했습니다. 이 문제는 Android에서는 발생하지 않고 iOS에서만 특정적으로 나타났습니다.
  • 원인: Expo SDK 53 업데이트 이후 Metro 번들러가 Firebase JS SDK의 package.jsonexports 필드를 처리하는 방식과 호환성 문제가 발생하여, Firebase Auth 모듈이 제대로 로드되지 않는 문제였습니다.
  • 조치 사항: 인터넷 검색을 통해 Expo SDK 53과 Firebase JS SDK 간의 호환성 문제 해결 방법을 찾았고, 프로젝트 루트의 metro.config.js 파일을 다음과 같이 수정했습니다:
    // /Users/siwoo/Downloads/DateP/metro.config.js
    const { getDefaultConfig } = require('expo/metro-config');
    const { withNativeWind } = require('nativewind/metro');
    
    const config = getDefaultConfig(__dirname);
    
    // Firebase / Expo SDK 53+ Compatibility Fix
    config.resolver.sourceExts = config.resolver.sourceExts || [];
    if (!config.resolver.sourceExts.includes("cjs")) {
      config.resolver.sourceExts.push("cjs");
    }
    config.resolver.unstable_enablePackageExports = false;
    
    module.exports = withNativeWind(config, { input: './global.css' });
  • 결과: metro.config.js 수정 후 Firebase Auth 관련 에러가 해결되었습니다.

현재 상태 및 다음 단계

위의 과정을 통해 iOS 빌드 및 Firebase Auth 관련 주요 문제들이 해결된 것으로 보입니다.

다음 단계: 최종적으로 앱의 모든 기능이 iOS에서 정상적으로 작동하는지 다시 한번 꼼꼼히 확인한 후, App Store 심사를 위해 빌드 파일을 제출할 예정입니다.