DEV_Larva
Xcode 오류발생 & 해결 본문
Git이랑 Github 공부도 다시 했겠다. 이제 더 이상 애매하게 아닌 알고 하는 Push와 Pull을 하려는 와중에 오늘도 오류는 나를 피해 가지 않았는데... 오늘의 상황은 git 실습 과정이 이후에 발생한 Xcode 내에서의 오류들에 대한 글이다.
https://daebong-monk.tistory.com/28?category=1099846
Github 공유 실습
지금까지 공부한 것을 토대로 실제 내 프로젝트를 깃헙에 push까지 해보는 과정을 한번 정리해보았다. 모든 과정은 터미널에서 git명령어를 이용하여 해보았다. 나의 경우 기존에 이미 진행하고
daebong-monk.tistory.com
문제 발생 순서
- 오랜만에 깃허브에서 과거에 진행하고 있던 ios앱 개발 튜토리얼 프로젝트를 다시 한번 까먹기 전에 클론 해보았다.
- 근데 실행해보니 갑자기 Info.plist파일이 존재하지 않다고 하는 것,,, 이때부터 이상했다
- 이후 Info.plist파일도 추가해주고 누락되었던 파일도 원상 복귀시켰는데 갑자기 나타난 10개가 넘는 오류 발생
그래서 가장 근본적인 문제 Info.plist는 어디로 갔을까 하고 한번 찾아보았는데 아무리 찾아봐도 없을 뿐 아니라 잘못 clone을 해왔나 싶은 생각에 구석구석 찾다 겨우 해결하는 과정을 주제로 오늘은 이야기해볼 것이다.
1. 문제 발생(1)
Info.plist를 찾아서.
이걸 찾고 있을 때만 하더라도 Github에 push 할 당시부터 내가 제대로 업로드를 안 한 줄 알고 추가해주려고 했다.
그래서 구글링을 좀 해보니 새로운 Info.plist를 하나 새로 생성하기 위해 다음과 같이 File -> New -> File에서 prop이라고만 검색하면
다음과 같이 Property List가 나오게 된다. 여기서 이제 이름은 당연히 Info.plist라고 하고 하나를 만들어 주면 쉽게 끝난다.
그리고 해당 프로젝트의 Build Settings에 들어가면 다음과 같이 Packaging에 Info.plist file의 부분에 아까 복사해둔 값을 입력해주면 끝이다.
자 여기까지 다해서 이제 실행을 해봐야지 했더니만 갑자기 또 새로운 오류창이 뜨는데 난생처음 본 오류였다.
저 오류 문을 그대로 들고 와서 보니 Info.plist does not contain a valid CFBundleVersion. Ensure your bundle contains a valid CFBundleVersion. 즉 Info.plist에 유효한 CFBundleVersion이 없다. 번들에 유효한 CFBundleVersion이 포함되어 있는지 확인해주라~ 이런 말이었는데 CFBundleVersion??? 모를 땐 apple의 공식 documentation이 있으니 그걸로 검색을 해보았다.
CFBundleVersion: 번들의 반복을 식별하는 빌드 버전
그래도 이해가 잘 가지 않아 다른 분들의 블로그를 참고해보기로 하였고
http://theeye.pe.kr/archives/2475
iOS CFBundleVersion와 CFBundleShortVersionString에 대한 이해 | 아이군의 블로그
CFBundleVersion와 CFBundleShortVersionString의 차이점 XCode에서 보면 위와 같이 버전 정보를 설정하는 부분을 볼 수 있습니다. 하나는 Version이고 다른 하나는 Build입니다. 이 버전 정보들을 Info.plist에서 확
theeye.pe.kr
아이군 님의 블로그에서 발견한 CFBundleVersion과 CFBundleShortVersionString의 의미, 그리고 차이점을 통해 정의에 대해서 알게 되었다. CFBundleVersion = Build = Bundle Version을 의미한다고 한다.
그런데 오류는 왜 떴을까? 나는 이 프로젝트에서 Bundle version 부분은 건드렸던 적이 없다.
여기서 약 1시간가량을 투자하면서 거의 새로 프로젝트를 하나 뒤집어엎어서 만들까 싶다가 이때까지 한 게 너무 아까워서 그건 절대 못할 거 같아 10분 정도만 폰 보다가 다시 맘 잡고 찾아보는데 아무리 봐도 아까부터 Info.plist 파일을 추가한 게 기분 싸한 것이.. 뭔가 안 넣어야 하는데 넣어서 이런 건가? 하면서 Info.plist에 대해서 찾아보니.. Info.plist에 대한 apple의 공식 문서를 하나 발견하였다.
https://developer.apple.com/documentation/xcode-release-notes/xcode-13-release-notes
Apple Developer Documentation
developer.apple.com
아래는 Xcode13의 releasenote의 일부분이다.
- Projects created from several templates no longer require configuration files such as entitlements and Info.plist files. Configure common fields in the target’s Info tab, and build settings in the project editor. These files are added to the project when additional fields are used.
no longer require!! 더 이상 필요하지 않다고 한다.. 이때까지 없어도 되는 파일로 때문에 생긴 오류를 잡아내느라 시간은 시간대로 고생은 고생대로 다 썼는데 필요가 없다고 한다. 문제 해결은 하지도 못하고 잠깐 조금만 쉬자..
2. 새로운 문제 발생 및 해결
잠깐 쉬고 다시 한번 조사를 시작하였고 그를 통해 잘못된 부분을 건드리고 있다는 건 알았지만.. 정확하게 어떻게 해야 하나 감이 오질 않았고 결국은 Stackoverflow로 들어가서 해당 오류를 찾아보았다.
그리고 나서 아예 프로젝트를 처음 Clone 받았을 때 당시로 돌려놓고 다시 천천히 건드려 보기로 하였고 이번엔 아까와는 조금 다른 "the copy bundle resources build phase contains this target's info.plist file"라는 오류가 발견되었다.
이건 내가 Info.plist에 관련된 오류를 검색하던 도중 Stackoverflow에서 한번 보았던 오류였다.
즉 해결할 가능성이 더 높아졌다는 말인데..
찾았다 요놈!!🕵️♂️🕵️♂️
Warning: The Copy Bundle Resources build phase contains this target's Info.plist file
I've separated a project into two builds and given each of them a plist file. Everything works fine, but I keep getting this build warning: Warning: The Copy Bundle Resources build phase contain...
stackoverflow.com
아래 그림과 같이 Copy Bundle Resources 빌드 단계에 Info.plist 파일을 추가했기 때문에 이 경고가 표시된다고 한다.
지우고 나니 무슨 일 있었냐는 듯이 아무렇지도 않게 정상적으로 실행되고 Commit&Push&Pull모두 정상적으로 완료하여 Github에 공유할 수 있었다.. 찾았던 것들에 비교적 너무 쉽게 해결된 것 같은 기분이 들지만 여하튼~끝!
지금까지 보지 못한 새로운 오류를 만나보았고 오랜 시간 투자를 했음에도 해결하지 못했다는 것에 대한 멘붕과 함께 무능력함이 찾아왔지만 오류를 통해 새로운 개념에 대해서 공부해볼 수 있었다.
'Xcode > Xcode 오류 모음집' 카테고리의 다른 글
iOS 에러 - Command PhaseScriptExecution failed with a nonzero exit code (1) | 2023.08.28 |
---|---|
Google 로그인 - GIDSignIn오류 (0) | 2023.01.12 |
pod init 안될때 (0) | 2022.11.13 |