2021. 6. 20. 17:54ㆍiOS
아래 사진은 iOS 프로젝트 생성 시 초기 설정 화면입니다.
1. Project
프로젝트는 모든 파일, 리소스, 빌드에 필요한 모든 정보를 담고있는 저장소입니다.
제품의 빌드 정보를 가지고 있는 Target을 한 개 또는 여러개 가지고 있을 수 있으며, Target을 위한 기본적인 빌드 설정을 정의합니다.
Target은 기본 빌드셋팅을 Override하여 작동하며, 한 개 또는 여러개의 Build Configuration을 설정할 수 있습니다.

- Deployment Target - Minimuim OS 버전을 지원합니다.
- 앱에서 어떤 기능을 사용할 것인지에 따라서 iOS Deployment Target이 달라질 수 있으며, 프로젝트에서 사용할 iOS 기능의 최소 버전을 확인 후 설정하면 됩니다. (배포 최소 버전)
- Configurations - Debug, Release 빌드 설정
- Build Settings의 모음으로써 하나의 Target은 여러개의 Configuration을 가질 수 있습니다.
- Localizations - 여러 다국어를 지원할 수 있도록 셋팅할 수 있습니다.
2. Target
타겟은 프로젝트를 빌드할 때, 빌드의 과정에서 어떤 Resource(Asset, Xib, Info.plist)나 Source(.swift 파일)들을 포함할 지를 설정할 수 있고, 빌드 과정의 순서 등 프로젝트의 큰 설정을 지정해줍니다.
또한 하나의 Target이 하나의 프로덕트라는 점!!
즉, 타겟에 따라 하나의 프로젝트에서 여러 버전으로 프로덕트를 분리할 수 있습니다. 예를들어) inhouse, dev, release 용으로 각각의 타겟이 분리되어 있는 것처럼요!!
정리하자면,
하나의 Target은 하나의 프로덕트이며, 한 프로젝트는 여러 개의 Target(프로덕트)으로 이루어 질 수 있고, Target별로 빌드 설정을 달리할 수 있습니다 !!

- Identity - 기본 설정을 해줍니다.
- Display Name - 프로젝트 이름 설정
- Bundle Identifier - 고유한 값이어야 앱스토어에 업로드 가능
- Version - 버전
- Build - 빌드 회수 관리
- Deployment Info - 앱을 배포할 때 필요한 항목을 설정합니다.
- Main Interface - 앱을 처음 실행할 때 기본 인터페이스 설정
- Device Orientation - 기기 회전 여부 설정
- Status Bar Style - 상태바 스타일(Dark,Light)
- App Icons and Launch Images - 앱 아이콘 및 런치 페이지(스플래시)를 설정합니다.
- Assets.xcassets 폴더에 모든 사이즈 등록 필수
- Signing & Capabilities
- Automatically manage signing - 체크 시 애플 서버에서 인증서 자동으로 불러옴
2-1. Build Setting
위 사진들을 보면 Project와 Target에 공통으로 들어가 있는 메뉴 하나가 있는데, 이것은 바로 Build Setting, Build Phases 라는 것을 알 수 있습니다.
두 메뉴에 존재하는 Build Setting와 Build Phases는 무엇일까요?
먼저 Build Setting 란?
빌드 단계에 대한 옵션이며, 기본적으로 Target을 빌드할 때 가질 수 있는 옵션의 변수입니다.
예를들어) Build Settings의 정보는 Xcode가 컴파일러에 전달하는 옵션을 지정할 수 있는 것을 말합니다.
Build Phases 란?
다른 Target의 요소이며, 각각의 Target은 Build Phases 설정을 가지고 있습니다.
또한 Build Phases는 유저의 컴파일 코드를 포함 시킬 수 있는데, 유저는 스크립트(bash script, perl script, rubyscript 등)를 생성할수 있으며, 무엇이든 build process에 포함 시킬 수 있습니다.
이렇듯, Target은 Project의 Build Setting를 상속받는다고 합니다. 그렇기 때문에 Override를 이용하여 Target 별로 설정을 다르게 해줄 수 있다는 것인데요!!
즉, 별도로 Target의 Build Settings를 설정해주지 않으면 Project의 설정을 이어받아서 사용된다고 이해하시면 될 것 같습니다.
여기서 정리!!!
Project는 모든 정보를 담고있는 저장소이고, Target은 제품의 빌드 정보를 가지며, Build Setting는 Target을 빌드할 때 가질 수 있는 옵션 변수이다.
공통된 Build Setting 중에서는 Target Build Setting보다는 Project Build Setting을 이용하자!!
- 같은 프로젝트 안에서도 개발용 타겟과 배포용 타겟을 별도로 관리하는 경우가 있는데, 이런 경우에 각각의 Target별로 빌드셋팅을 바꿀 수 있습니다.
- 하지만 가급적 Target의 빌드설정을 수정하는 것은 지양하는 것이 좋습니다. 이유는 Target Build Setting을 다르게 해야 하는 경우보다 같아야 하는 경우가 더 많기 때문입니다.
Project 둘러보기

1. Navigator Area
- Project navigator - 프로젝트 트리를 보여주며, 가장 통상적으로 사용됩니다.
- Source Control navigator
- Symbol navigator - 프로젝트를 클래스와 메서드 기준으로 정리해 보여줍니다.
- Find navigator - 프로젝트 안 텍스트를 검색하거나 교체할 때 사용합니다.
- Issue navigator - 에러나 경고 메시지를 모아서 보여줍니다.
- Test navigator - 테스트 프로젝트 항목을 정리해서 보여줍니다.
- Debug navigator - 디버그 관련 메시지를 모아서 보여줍니다.
- Breakpoint navigator - 소스 코드에 설정된 프레이크 포인트 관련 내용을 모아서 보여줍니다.
- Report navigator - 프로젝트 실행이나 빌드, 테스트 등 프로젝트 실행 내역을 정리해서 보여줍니다.
1-1. .swift
Swift 클래스 파일로 앱의 소스 코드를 구성하는 역할을 합니다.
- AppDelegate & SceneDelegate - 앱 전체의 생명주기를 관리 하는 역할을 합니다.
- ViewController - 초기 프로젝트 생성 시 기본으로 생성되며, 일반적으로 화면의 개수만큼 ViewController가 필요합니다.
1-2. .storyboard
유저 인터페이스를 종합적으로 구현하는 역할을 합니다.
- Main.storyboard - 프로젝트 생성 시 기본으로 생성되며, 앱의 사용자 인터페이스 설계를 담당합니다.
- LaunchScreen.storyboard - 앱을 실행하면 처음 나타나는 시작 화면을 구성하는 데에 사용하며 Splash 라고도 합니다.
1-3. Assets.xcassets & Info.plist
- Assets.xcassets - 이미지 등의 리소스를 관리합니다.
- Info.plist - 프로젝트 설정을 담당합니다. 예를 들어, 네트워크 접근 허용, 카메라 접근 허용 등
2. Inspector Area
소스 코드의 타입이나 타깃 확인 등에 사용하지만 특히 프로젝트의 UI를 구성할 때 많이 사용합니다. 어떤 UI요소를 다룰 때 ID를 지정해 주거나 UI를 구성하는데 이용할 오브젝트 역시 이곳에서 선택해 넣을 수 있습니다.
- File Inspector - 선택한 파일의 타입 정보를 표시하거나 타깃 운영체제 버전 등을 설정합니다.
- History Inspector - 버전 관리 도구를 사용하고 있다면 선택한 파일의 이력을 한눈에 확인해 볼 수 있습니다.
- Quick Help Inspector - 선택한 개체와 관련된 간단한 도움말을 표시하고, 해당 개체의 클래스 정보 등을 알려줍니다.
- Identity Inspector - 선택한 개체의 클래스 정보를 표시하거나 설정합니다.
- Attributes Inspector - 선택한 개체의 세부 정보를 표시하거나 설정합니다. 텍스트 크기, 캡션, 색상 등이 여기에 포함 됩니다.
- Size Inspector - 선택한 개체의 위치나 크기를 표시, 설정합니다.
- Connections Inspector - 선택한 개체의 코드 연결 정보나 동작 정보를 표시하거나 설정합니다.
▼ 참고
Xcode Target, Project, Workspace, Scheme 그리고 Build Setting.
안녕하세요 :) Zedd입니다. 오늘은! 여러가지를 알아볼건데요. 제가 지금 Build Configuration을 추가하는 작업을 하고 있는데, 음..그러니까 Build Configuration의 정확한 정의를 모르겠는거에요. 아무튼 Bui
zeddios.tistory.com
[TIL] Workspace, Project, Target, Scheme, Build Settings, Configurations, Build Phases 의 의미
Workspace 워크스페이스는 Xcode Projects그룹으로 이루어진 문서입니다. 워크스페이스는 다수의 Xcode Projects를 포함할수 있습니다. 각 Workspace는 독립적인 ID를 보유하기 때문에 같은 Xcode Project라 하더.
memohg.tistory.com
[iOS] Xcode Target이란?
이번에 새로운 프로젝트를 보고 "어..? 이 프로젝트는 왜 이렇게 타겟이 많이 분리되어 있지..?"라고 느낌이 들었고, 지금까지 iOS 개발을 해오면서 Xcode 프로젝트에 대한 원론적인 이해(?)가 부족
dongminyoon.tistory.com
'iOS' 카테고리의 다른 글
| Cell 재사용시 생기는 문제점 및 해결방법 (0) | 2021.07.06 |
|---|---|
| Storyboard 컴포넌트 알아보기 (0) | 2021.06.20 |
| AutoLayout이란? (0) | 2021.06.20 |
| Info.plist란? (0) | 2021.06.20 |
| CGPoint와 CGSize, CGRect (0) | 2021.06.02 |