[Xcode Version 16.1 (16B40)] SwiftUI 앱 실행시 오류 해결 방법(Clean build)(file:///System/Library/PrivateFrameworks/MetalTools.framework/ principal class is nil because all fallbacks have failed)
Sequoia OS(15.1(24B83)) 및 XCode(Version 16.1 (16B40))로 업데이트한 후 앱을 사용할 수 없다.
기존에 개발했던 어플을 실행해보는데 아래와 같은 오류가 노출된다. 어플은 실행되었으나 앱은 실행이 중지된다.
Can't find or decode reasons
Failed to get or decode unavailable reasons
NSBundle file:///System/Library/PrivateFrameworks/MetalTools.framework/ principal class is nil because all fallbacks have failed
왜 이런 오류가 발생되는가? Macbook Pro를 Sequoia로 업데이트해서는 안된다는 걸 알고 있으면서도 궁금하여 시도했고, 결국에는 Xcode도 16 버전으로 업데이트해야 했다.
나와 같은 이슈를 격은 개발자들이 보인다.
https://forums.developer.apple.com/forums/thread/765974
저는 Xcode 16 이후로 같은 오류를 겪고 있다는 개발자가 성공적으로 컴파일하려면 간단한 메뉴바 앱일지라도 매번 클린 빌드를 해야 한다는 댓글이 보인다.
Xcode 클린빌드 방법
1. Xcode 상단 메뉴 > Product > Clean Build Folder… 메뉴를 클릭하면 클린빌드를 할 수 있다.
2. 단축키를 사용하는 방법
Command + Shift + K 키를 눌러준다.
위 메뉴 버튼을 클릭하는 것과 동일한 결과를 준다.
3. Terminal 명령어를 사용하는 방법
해당 프로젝트 폴더로 이동 후 아래 명령어를 실행한다.
(예: cd ~/project/testproject) 그리고 클린 빌드 명령어를 입력합니다.
xcodebuild -workspace testproject.xcworkspace -scheme myscheme clean build
4. 모든 캐시 삭제(Xcode 캐시, DerivedData 폴더)
xcode는 빌드하면 빌드 결과를 폴더에 저장해놓고, 빌드할 때 마다 해당 폴더를 참고하여 캐싱하여 사용하는 방식이다.
터미널에서 아래 명령어로DerivedData 폴더를 삭제
rm -rf ~/Library/Developer/Xcode/DerivedData
최신 MacOS 버전에서 이전 Xcode 버전을 실행할 수 있다는데??
[REFERENCE]
https://stackoverflow.com/questions/8087065/xcode-4-clean-vs-clean-build-folder
클린빌드를 진행하였으나 해결되지 않았다.
오류 해결방법은 맥OS 업데이트와 Xcode업데이트로 해결하였다.
macOS Sequoia 15.2(24C101)
Xcode Version 16.2 (16C5032a)