관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] 프로젝트 개념 (xcodeproj / project.pbxproj / xcuserdata / .xcworkspace / contents.xcworkspacedata / Target / Scheme) 본문

iOS 기본 (swift)

[iOS - swift] 프로젝트 개념 (xcodeproj / project.pbxproj / xcuserdata / .xcworkspace / contents.xcworkspacedata / Target / Scheme)

jake-kim 2021. 4. 7. 01:01

{프로젝트이름}.xcodeproj

  • 파일이 아닌 디렉토리임을 주의: 터미널을 통해 $ cd {프로젝트이름}.xcodeproj 하여 들어가게 되면,
     project.pbxproj라는 파일, project.xcworkspace파일,  xcuserdata라는 디렉토리가 존재

project.pbxproj

  • 프로젝트 내부에서 파일들을 파일 유형에 따라 reference를 저장
  • project.pbxproj는 특히 git에서 merge conflict가 일어나는 주요 파일 중 하나
    - A파일, B파일 수정 후 merge -> B파일의 reference, A파일의 reference가 모두 바뀐경우 conflict 발생
    - conflict가 제대로 해결되지 못하면 project.pbxproj 파일이 깨져서 프로젝트가 열리지 않는 현상 존재

project.pbxproj

project.xcworkspace

  • contents.xcworkspacedata: project파일의 reference가 정의되어 있는 파일
  • xcshareddata: 공통적으로 적용되어 있는 정의이며 .plist형태로 정의 (ex: 32bit에서 warning이 발생)

project.xcworkspace

xcuserdata

  • 프로젝트 자체에 크게 영향을 주지 않는 개인 설정을 담은 디렉토리: breakpoint, 스냅샷 등

{UserName}.xcuserdatad

.xcworkspace

  • 여러개의 project를 담아 관리할 수 있도록 해주는 개념
  • CocoaPods 사용 시 pod install을 할 경우 .xcworkspace 생성의 의미
    : CocoaPods 본래의 프로젝트와는 별도로 Project를 만들어서 라이브러리 의존성을 관리할 수 있도록 해주는 것
  • .xcworkspace는 파일이 아닌 디렉토리: 안에 contents.xcworkspacedata 존재

  • contents.xcworkspacedata: project들의 reference가 저장되어 있는 파일

contents.xcworkspacedata

Target

  • 프로젝트를 통해 생성되는 Application을 지칭 ( = 하나의 모듈을 의미, 어떻게 프로젝트를 빌드할 것인지를 담당)
    - 하나의 project에 여러개의 배포판 & 성격으로 사용할 수 있도록, 여러개의 target설정 가능 (특정 라이브러리가 포함된 target, iPhone용 target, iPad용 target)
    - build setting
    - 프로젝트에 포함될 객체, 리소스, 스크립트 설정

Scheme

  • Target이 프로젝트를 Build, Profile, Test등을 할 때 일어날 환경을 설정할 수 있는 개념

* 참고

developer.apple.com/library/archive/featuredarticles/XcodeConcepts/Concept-Projects.html#//apple_ref/doc/uid/TP40009328-CH5-SW1

developer.apple.com/library/archive/featuredarticles/XcodeConcepts/Concept-Projects.html

hcn1519.github.io/articles/2018-06/xcodeconfiguration

Comments