Flutter Testflight Crash Firebase Init Missing

Flutter TestFlight 크래시 - Firebase.initializeApp() 누락

TestFlight 빌드를 올렸는데 앱을 열자마자 즉시 종료됐다. 시뮬레이터와 디버그 빌드에서는 멀쩡했다. 원인은 Firebase.initializeApp() 호출 누락이었다. 왜 디버그에서는 괜찮고 릴리즈에서만 터지나 firebase_core를 추가하면 iOS native Firebase SDK가 CocoaPods를 통해 앱 바이너리에 포함된다. 앱이 실행되면 iOS 런타임이 GoogleService-Info.plist를 감지하고 native SDK 내부 초기화를 시작한다. Flutter Dart 레이어에서 Firebase.initializeApp()을 호출하지 않으면 native SDK ↔ Dart 브리지 사이의 동기화가 깨진다. 디버그 빌드에서는 실행 속도가 느리고 타이밍 여유가 있어 어물쩍 넘어가는 경우가 있지만, 릴리즈 빌드는 AOT 컴파일로 실행 속도가 빨라지면서 타이밍 차이가 드러나 크래시로 이어진다. ...

2025-08-16 · 2분 소요 · Seunghan
Flutter Singleton Plugin Eager Init Crash

Flutter 싱글톤에서 iOS 플러그인 인스턴스를 즉시 생성하면 크래시가 난다

iOS 네이티브 플러그인을 사용하는 Flutter 앱에서 싱글톤 패턴을 쓸 때 흔히 저지르는 실수가 있다. 플러그인 인스턴스를 클래스 필드에서 즉시 생성하는 것이다. 문제가 되는 패턴 class CloudSyncService { CloudSyncService._(); static final CloudSyncService instance = CloudSyncService._(); // ❌ 클래스 필드에서 즉시 생성 final _iCloudSync = IcloudStorageSync(); } static final instance = CloudSyncService._() 는 Dart에서 클래스가 처음 참조되는 시점에 실행된다. main.dart 상단에 import만 해도 static field initializer가 돌 수 있다. 이 시점은 WidgetsFlutterBinding.ensureInitialized() 이전일 수 있고, Flutter 엔진의 플러그인 채널 등록이 완료되기 전이다. 이 상태에서 IcloudStorageSync() 같은 네이티브 플러그인 인스턴스를 생성하면 플랫폼 채널을 찾지 못해 크래시가 발생한다. ...

2025-08-10 · 2분 소요 · Seunghan
개인정보처리방침 문의