Error: The plugin "firebase_core" requires a higher minimum iOS deployment version than your application is targeting.
이라는 로그와 함께 앱 실행이 안되는 문제
firebase_core의 버전이 지원하는 iOS 최소 배포 버전보다 앱에서 설정한 최소 버전이 낮기 때문에 발생하는 오류로 파악
ios/Runner.xcworkspace 를 xcode로 실행
Minimum Deployments의 버전을 확인
지금은 수정되어 있지만, 12버전으로 잡혀있었다.
Firebase_core가 지원하는 최소 배포 버전 확인
https://firebase.google.com/docs/flutter/setup?platform=ios&hl=ko
Unhandled Exception: Binding has not yet been initialized
이라는 에러 메세지가 발생했다.
조금 더 공부가 필요하겠지만 정리해보면
1. Flutter 앱을 실행할 때 Flutter 엔진을 초기화하고, 렌더링 이벤트 처리, 플랫폼 통신 등을 위한 기본적인 환경을 구축한다.
2. Firebase 플러그인은 Flutter와 네이티브 플랫폼(Android, iOS)간의 통신을 위한 플랫폼 채널을 통해 네이티브 코드와 상호작용한다.
3. 따라서 Firebase를 초기화하기 이전에 초기화를 해 주어야 할 필요성이 있다.
해 주고 있다!!
runApp() 내부에서 해주고 있다.void runApp(Widget app) { final WidgetsBinding binding = WidgetsFlutterBinding.ensureInitialized(); _runWidget(binding.wrapWithDefaultView(app), binding, 'runApp'); }
void main() async {
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
runApp(MyApp());
}
이렇게 적으면, Firebase는 플랫폼 채널을 이용해야 하는데, 먼저 초기화를 하고 runApp()이 실행되면서 그때서야 플랫폼 채널을 설정하니까 오류가 발생하는 것이다.
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
runApp(MyApp());
}
따라서 ensureInitialized()
를 Firebase 초기화 전에 실행시켜주면 해결이 된다.