티스토리 뷰

반응형

 

Xcode 14.0 이상 버전에서 프로젝트 생성 후, 최소 deployment target version을 iOS13 이상으로 설정하면 겪게 될 수 있는 "~ is only available in iOS 14.0" 컴파일 에러가 있습니다.

오늘은 이 오류에 대한 수정방법을 빠르게 알아보겠습니다.

 


Xcode 14.0, 'main()' is only available in iOS 14.0
언제 이 컴파일에러가 발생하지?

제가 이 컴파일 에러를 경험하게 된 케이스를 공유드립니다. Xcode 14.2버전으로 SwiftUI 프로젝트를 생성했습니다. 그리고 프로젝트 설정 화면에서 Minimum Deployments를 iOS 13.0으로 수정합니다.

 

 

App Target > General > Minimum Deployments 도 iOS 13.0으로 수정했습니다. 의도는 아시겠지만, iOS13.0 이상 지원 앱으로 개발하기 위한 프로젝트 설정을 했습니다. 빌드 시도를 해보겠습니다.

 

 

안타깝게도... Xcode 14.0, 'main()' is only available in iOS 14.0 에러가 발생합니다. 만약 빌드가 그대로 잘 되었으면 이 포스팅은 없었겠죠... ㅎㅎ 

생성된 SwiftUI 프로젝트의 기본 생성 코드인데 iOS 14.0 이상에서만 사용가능하다는 컴파일 에러가 발생합니다. ㅜ.ㅜ....
Scene, WindowGroup, main() 등의 개념이 iOS 14.0 이상에서 지원을 하기 때문입니다.

이제 Xcode 14.0, 'main()' is only available in iOS 14.0 컴파일 에러 문제를 해결해봅시다.

 

 


Xcode 14.0, 'main()' is only available in iOS 14.0
문제 해결방법, SceneDelegate.swift 파일 생성하기

먼저, SceneDelegate.swift 파일을 생성해 주시구요. 위와 같이 코드를 작성해주세요.

여기에서 UIHostinigController는 SwiftUI View를 초기 화면으로 띄우기 위해 브릿징 용도로 사용되는 것으로 알고 있습니다. Scene에서 앱 실행 시 보여질 첫 화면을 지정하는 코드를 작성합니다.

위에서 사용한 ContentView()는 현 프로젝트에서 초기에 띄워줄 View를 생각해서 적용하시면 됩니다.

 

 


UIApplicationMain, SceneDelegate 연결하기

App을 위한 Wrapper 구조체를 생성해 줍니다. 여기에서 UIApplicationMain을 생성하고, UIApplicationMain 생성자 의 delegateClassName 인자로 앞서 생성한 SceneDelegate 코드와 연결을 시켜줍니다.

 

 

앞서 SceneDelegate.swift에서 UIHostingViewController의 rootView로 전달한 ContentView입니다. 기본 프로젝트 생성 시 작성되어있는 ContentView를 그대로 사용했습니다.

 


SceneDelegate 연결을 위해 info.plist 값 수정하기

info.plist 파일을 수정해줍니다. 예전과 달리 info.plist파일을 왼쪽 inspector에서 선택할 수 없고, 프로젝트 설정 > TARGETS > Info 탭에서 확인할 수 있습니다.

여기에서 확인해야할 Key는 Applicatioin Scene Manifast 입니다.

여기에서 Enable Multiple Windows는 NO로, Scene Configuration은 위와 같이 설정값을 맞춰주어야 앞서 구현한 SceneDelegate.swift 파일을 알아먹을 수 있습니다. 

* 위 info.plist 설정 화면에서 Configuration Name은 코드 상으로 명시해서 사용하는게 아니라면 꼭 추가할 필요는 없습니다.

 

 

앱 테스트 시, 다크모드 비활성화를 하고 싶다면 plist 설정에 위 키 값(Appearance -> Light)도 추가로 설정하면 됩니다.

 

 

이후 빌드나 앱 실행이 정상적으로 동작하는 것을 볼 수 있습니다.

 


오늘은 Xcode 14.0 이상을 사용하고, 최소 타겟 버전을 iOS13 이상으로 설정 시에 마주할 수 있는 "~ is only available in iOS 14.0" 컴파일 에러 수정방법을 알아봤습니다.

혹여나 해당 문제를 겪고, 제가 말씀드린 수정사항을 참고했는데 문제가 있었거나, 제가 빠뜨린 부분이 있다면 댓글로 공유해주시면 감사하겠습니다.

즐거운 앱개발 되시구요. 포스팅 할만한 컴파일 에러가 발생할때마다 한 번씩 찾아뵙겠습니다. 감사합니다. 🤗

 

 

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함