프로젝트 편집기의 첫 번째 열에있는 프로젝트 제목 아래에는 Project와 Targets제목이 표시된다.
Project는 생성하는 모든 프로젝트는 해당 특정 프로젝트의 모든 대상에 대한 기본 빌드 설정을 정의한다.
Target은 빌드하는 앱이며, xcode가 프로젝트나 작업 공간에서 파일들 안에서 제품을 구축하는 데 필요한 정보를 포함한다.
- Gerneral : ID, 서명 및 배포 옵션과 같이 가장 일반적으로 수정된 대상 설정을 조정
- Singing & Capabilities : 앱에 승인, 앱 서비스를 활성화. 앱에 서명하려면 Xcode 프로젝트의 각 대상을 동일한 팀에 할당해야 한다. 개인으로 등록하면 1인 팀으로 간주됨. 만약 당신이 Apple Developer Program의 회원이 아니라면, Xcode는 당신을 위한 개인 팀을 만들 것
- Resource Tags : 필요한 자원들을 식별하고 관리.
- Info : Info.plist 값, 지원되는 문서타입, 로컬라이제이션 등을 포함하여 프로젝트나 타겟의 속성을 편집.
- Build Settings : 프로젝트를 구축하는 동안 빌드 시스템의 동작에 영향을 미치는 옵션을 사용자 정의. 컴파일러나 링커에게 전달할 옵션들을 저장해놓은 목록이다. 빌드 설정은 유닉스 환경변수, Xcode 내장 변수, 프로젝트, 타깃 순으로 계층 구조를 이루어서 상위 계층의 값을 하위 계층에서 덮어쓰는 방식이다. 타깃에서 지정하지 않으면, 프로젝트에서 설정한 값아 타깃에 설정값으로 그대로 반영된다.
- Build Phases : 프로젝트로 빌드하는 동안 빌드 시스템에서 수행한 작업을 편집하고 재정렬. 타깃의 제품을 빌드하기 위해 필요한 파일들을 단계별로 어떻게 처리할지 구성한 목록이다. 의존성이 있는 다른 타깃들, 컴파일 단계에서 사용할 소스들, 링크 단계에서 사용할 라이브러리나 프레임워크, 앱 번들에 복사할 리소스 파일들을 단계별로 지정하게 된다.
- Build Rules : 빌드 프로세스 중에 특정 유형의 파일을 처리할 때 빌드 시스템이 사용하는 규칙을 사용자 지정. 컴파일 단계와 리소스 복사 단계에서 파일 종류별로 어떤 어떻게 처리할지 규칙을 결정한다.확장자 매칭 조건과 처리할 액션에 대한 지정을 할 수 있는데 기본적인 파일들에 대한 처리 규칙은 이미 자동적으로 생성된다.
앱에 서명하려면 Xcode 프로젝트의 각 대상을 동일한 팀에 할당해야 합니다. 개인으로 등록하면 1인 팀으로 간주됩니다. 만약 당신이 Apple Developer Program의 회원이 아니라면, Xcode는 당신을 위한 개인 팀을 만들 것입
General
🏷 Identity
Display Name CFBundleDisplayName : Siri에서 사용하고 iOS 홈 화면에 표시되는 번들의 사용자에게 표시되는 이름. (CFBundleName은 사용자가 볼 수있는 번들의 짧은 이름이므로 긴걸 쓸때는 CFBundleDisplayName이용)
Bundle Identifier CFBundleIdentifier : Xcode에서 번들 ID는 정보 속성 목록 리소스 파일의 기본 CFBundleIdentifier 키와 제품 번들 식별자(PRODUCT_BUNDLE_IDENTIFIER) 빌드 설정의 값이다.
Version CFBundleShortVersionString, Build CFBundleVersion : 호는 시스템 전체에서 빌드를 식별하는 데 사용되므로 앱을 업로드하거나 내보내기 전에 처음에 version(번호)와 build(문자열)을 설정하고 나중에 업데이트하는 것이 중요
🏷 Deployment Info
Deployment target : 앱이 지원할 수 있는 가장 낮은 운영체제 버전을 명세화.
Target Device : 장치 열에서 지원할 장치를 하나 이상 선택. iPhone , iPad, Mac
Device Orientation : 장치 방향 섹션에서 앱에서 지원하는 장치 방향을 선택.
-
Portrait (bottom home button) : 전면 카메라가 상단에있는 세로 모드의 디스플레이를 지원
-
Upside Down (top home button) : 디스플레이를 지원하지만 거꾸로되어 있으며, 전면카메라가 하단 위치.
-
Landscape Left (left home button) : 전면 카메라가 왼쪽에있는 가로 모드의 디스플레이를 지원
-
Landscape Right (right home button) : 전면 카메라를 오른쪽에두고 가로 모드의 디스플레이를 지원
Status Bar Style : 상태 표시줄 스타일 섹션의 팝업 메뉴에서 밝은 스타일 또는 어두운 스타일을 선택. iPad를 대상 장치로 선택하고 앱에서 전체 화면을 사용하는 경우 "전체 화면 필요" 확인란을 선택
-
Default : 밝은 배경의 어두운 스타일
-
Light Content : 어두운 배경에 사용할 수 있는 밝은 스타일
🏷 App Icons and Launch Images
App Icons Source : 앱 아이콘을 표시할 이미지 선택
Launch Screen File : iOS 앱을 실행하는 동안 실행 화면이 스플래시 화면으로 표시. 템플릿에서 iOS 앱을 생성하는 경우 Xcode는 LaunchScreen.storyboard라는 기본 시작 화면 파일을 프로젝트에 추가
🏷 Frameworks, Libraries, and Embedded Content
외부 프레임워크 또는 라이브러리를 이용하려면, 기타 추가 팝업 메뉴에서 열기를 선택한 다음 컴퓨터에서 찾아 추가하면 된다.
-
Do Not Embed
-
Embed & Sign
-
Embed Without Signing
해당되는 경우 Embedd 열의 팝업 메뉴에서 옵션을 선택
Signing & Capabilities
personal team : Apple Developer Program 또는 Apple Developer Enterprise Program에 가입하지 않은 Apple ID를 가진 사용자를 위해 개인 팀이 자동으로 생성. 개인으로 등록할 경우 개인 팀이 된다.
Team : 속한 팀을 선택
Provisioning Profile : 장치에서 하나 이상의 앱을 시작하고 특정 서비스를 사용하는 데 사용되는 시스템 프로필 유형
Signing Certificate : 빌드 및 보관 프로세스 중 코드 서명에 사용되는 디지털 ID. 애플이 발행한 민관 키 쌍이 있는 인증서가 포함되어 있으며 당신의 키체인에 저장되어 있다. 왜냐면 개인 키는 로컬에 저장되므로 , 계정 암호처럼 보호. 또한 애플과 같은 인증 기관에서 인증서를 발급하도록 하기 위해 중간 인증서를 키체인에 넣어야 한다. Xcode를 설치하면 Apple의 중간 인증서가 사용자를 위해 키 체인에 추가된다. 그런 다음 Xcode를 사용하여 서명 인증서를 만들고 앱에 서명한다.
Info
Info.plist프로젝트의 파일) 프로젝트 또는 대상을 구성 키 - 값 쌍을 포함하고 있습니다. 프로젝트 또는 대상의 정보 창에서 이러한 설정을 편집하거나 Info.plist파일을 직접 편집 할 수 있다.
Document types : 다양한 문서 유형을 지원하도록 앱을 구성 할 수 있다. 대상의 정보 창에서 문서 유형 설정을 편집하거나 정보 속성 목록을 직접 편집하여 편집 할 수 있다. CFBundleDocumentTypes 번들에서 지원하는 문서 유형.
Build Settings
타겟 제품을 만드는데 필요한 정보를 제공. 빌드 프로세스 중에 수행되는 각 작업 (예 : Swift 코드 컴파일)에 대해 빌드 설정은 해당 작업이 수행되는 방식을 제어.
1. 수정된 Build Settng 값들만 모아보기
costomized: Build Setting으로 인해 문제가 발생했다고 생각된다면, 먼저 “기본값이 아닌” 값을 쓰고 있는 Build Setting들을 살펴봐야 한다. Xcode에서는 좌측 상단의 필터 옵션에서 “Customized”된 빌드셋팅 값들만을 모아서 볼 수 있다.
“All” 옵션으로 보더라도, 기본값이 아닌 값들은 굵게 표시되므로 더 눈여겨 볼 수 있다.
2. Target Build Setting보다는 Project Build Setting을 이용하기
여러가지 이유로, 같은 프로젝트 안에서도 개발용 타겟과 배포용 타겟을 별도로 관리하는 경우가 많다. 이런 경우에 각각의 Target별로 빌드셋팅을 바꿀 수 있다. 하지만 가급적 Target의 빌드설정을 수정하는 것은 지양. 왜냐하면 두 Target의 빌드설정은 달라야 하는 경우 보다는 같아야 하는 경우가 더 많기 때문. 따라서 Build Setting을 바꿀 때에는, 언제나 “이것이 프로젝트 전체에 걸쳐 적용되어야 하는 변경인지, 이 타겟에 대해서만 적용되어야 하는 변경인지”를 꼭 염두에 두어야 한다.
3. Level 단위로 Build Setting보기
Build Setting 화면의 좌측 상단에는, “Level”이라는 옵션이 있다. 이 옵션으로 Build Setting을 보면, 현재 적용되어 있는 Build Setting이 어느 차원에서 정의되었는지(기본값을 쓰고 있는지, 프로젝트에 적용된 값을 쓰고 있는지, 타겟별로 override를 한 것인지, xcconfig에서 정의된 값을 쓰는지) 등을 볼 수 있다.
“나는 분명히 이 Build Setting을 수정한 것 같은데 이 수정이 반영되지 않았다”는 생각이 든다면, 이 옵션으로 Build Setting을 관찰해 보세요. 또한 이 옵션이 켜진 상태에서, 관심있는 값을 선택한 후, Tab키를 누르면, 한 Level 더 높은 곳의 필드를 수정 할 수 있다.
4. 각 Build Settinig의 의미 파악하기
Build Setting의 값은 너무나도 많고, 각각의 값들의 의미를 파악하기란 매우 어려운 일입니다. 어떤 값들은 변수명이 직관적이어서 바로 이해 될 수도 있지만 그렇지 않은 값들도 얼마든지 있지요.
그럴 때는 그런 값을 선택 한 후 Xcode의 우측 패널을 열어서 Quick Help 를 열어보세요. 각 값들에 대한 보다 상세한 설명과, 각 값을 바꿨을 때 어떤 변화가 있을지에 대한 정보를 얻을 수 있다.
Build Setting을 변경해야 하는 경우는 많다. 하지만 종종 우리는 각 Build Setting의 의미를 정확히 이해하지 못하고 StackOverflow의 답변에 따라 무심코 Build Setting을 바꾸기도 한다. 또는 물려받은 Legacy프로젝트에 내가 인지하지 못했던 Build Setting 변경이 남아있을 수도 있다.
때로는 시간을 내서 내 프로젝트가 불필요하게 Override하고 있는 Build Setting들은 없는지, 또 Override하는 Build Setting들은 왜 Override하게 되었는지를 명확히 할 필요가 있다.
Targeted Device Families TARGETED_DEVICE_FAMILY : 선택한 장치를 사용하여 대상의`Info.plist` 파일에 추가하는`UIDeviceFamily` 키에 올바른 값을 설정. 타겟 디바이스 설정.
Runpath Search Paths LD_RUNPATH_SEARCH_PATHS : 생성중인 이미지의 'runpath'검색 경로 목록에 추가 할 경로 목록
Info.plist File INFOPLIST_FILE : 번들에서 사용하는`Info.plist` 정보가 포함 된 속성 목록 파일의 프로젝트 상대 경로. 정보 속성 목록 파일에 대한 자세한 내용은 [정보 속성 목록 파일]을 참조
Product Bundle Identifier PRODUCT_BUNDLE_IDENTIFIER : 번들을 고유하게 식별하는 문자열
Code Signing Style : 이 설정은 signing assets을 획득하고 찾는 데 사용되는 방법을 지정. '자동'을 선택하면 Xcode가 프로필, 앱 ID 및 인증서를 자동으로 만들고 업데이트 할 수 있다. 개발자 웹 사이트에서 직접 만들고 업데이트하려면 '수동'을 선택
Asset Catalog App Icon Set Name : 콘텐츠가`Info.plist`에 병합 될 자산 카탈로그 앱 아이콘 세트의 이름
Global Accent Color Name : 대상의 강조 색상으로 사용할 색상 리소스의 이름으로, iOS 및 watchOS에서는 기본 색조로 사용되며 macOS에서는 강조 색상으로 사용.
Architectures : 제품이 만들어질 아키텍처의 목록. 일반적으로 이 설정은 플랫폼에서 제공하는 미리 정의된 빌드 설정으로 설정. 둘 이상의 아키텍처를 지정하면 범용 이진 파일이 생성
Build Active Architecture Only : 활성화 된 경우 활성 아키텍처 만 빌드된다. 이 설정은 '일반 장치'실행 대상과 같이 특정 아키텍처를 정의하지 않는 실행 대상으로 빌드 할 때 무시된다.
Supported Platforms : 기본 SDK를 사용할 수있는 지원되는 플랫폼 목록. 이 설정은 다른 SDK를 사용하여 여러 플랫폼 용으로 제품을 빌드 할 수있는 경우에 사용.
Info.plist File : 번들에서 사용하는`Info.plist` 정보가 포함 된 속성 목록 파일의 프로젝트 상대 경로. 정보 속성 목록 파일에 대한 자세한 내용은 [정보 속성 목록 파일]을 참조
Product Bundle Identifier : 번들을 고유하게 식별하는 문자열. 문자열은 영숫자 (`A-Z`,`a-z`,`0-9`), 점 (`.`) 및 하이픈 (`-`) 만 사용하는 역 DNS 형식한다. 이 값은 빌드 된 번들의`Info.plist`에서`CFBundleIdentifier`로 사용
Product Name : 대상에서 생성 한 제품의 기본 이름
Default Module : 특정 모듈 이름없이 참조되는 Swift 클래스의 모듈 이름을 정의
Flatten Compiled Storyboard Files : 스토리 보드 파일을 평면화 된 (래퍼가 아닌) 스토리 보드 파일로 컴파일. 병합 후 결과 Storyboard는 더 작지만 더 이상 Interface Builder에서 편집 할 수 없다. 이 옵션이 비활성화되면 결과 Storyboard 파일은 Interface Builder에서 편집 가능한 상태로 유지.
Build Phases
Dependencies: 동일한 프로젝트(동일한 작업영역이 아님) 또는 연결된 프로젝트에서 target 자체를 빌드하려면 먼저 빌드해야 하는 다른 대상을 명시적으로 지정한다. 예를 들어 프로젝트의 다른 프레임워크에 의존하는 target은 일반적으로 해당 프레임워크에 대한 대상 종속성으로 구성된다. Xcode는 일부 종속성을 암시적으로 유발하지만, 이 빌드 단계는 종속성과 해당 빌드 순서에 대한 더 큰 제어를 제공
Compile sources : Swift, Objective-C, Lex 및 Yacc와 같은 호환 가능한 소스 파일을 대상에 연결하고 이를 컴파일. 필요한 경우 각 소스 파일에 대해 컴파일러 플래그를 지정할 수 있다. 이 단계는 대상당 한 번 사용할 수 있으며 Aggregate 및 외부 빌드 도구 대상에서 지원되지 않는다.
Link binary with libraries : 애플 프레임워크와 같은 라이브러리를 대상과 연관시킨다. 이들은 플랫폼 라이브러리, 다른 대상에서 생산한 라이브러리 또는 외부 사전 제작된 XCFrameworks 및 라이브러리일 수 있다. 도서관은 필수 또는 선택사항으로 지정될 수 있다(약하게 링크된 것, 즉 라이브러리가 없어도 앱이 여전히 로드되도록 링크됨). 이 단계는 대상당 한 번 사용할 수 있으며 집계 및 외부 빌드 도구 대상에서 지원되지 않는다.
Copy bundle resources : 리소스를 대상과 연결하고 적절한 경우 처리한 다음 제품 내의 리소스 하위 폴더에 복사. 이 단계는 대상당 한 번 사용할 수 있으며 대상의 제품이 내장 리소스를 지원하는 경우에만 사용할 수 있다.
Build Rules
'빌드 규칙'탭에서 이해하기 위해 파일을 컴파일 할 때 컴파일러가 수행하기를 원하는 모든 동작을 자동화 할 수 있다. Xcode에는 컴파일 할 때 표준 규칙이 있으며 빌드 규칙을 사용하여 규칙을 추가 할 수 있다.
'🌙 iOS 스터디 > Xcode' 카테고리의 다른 글
[Xcode] 데이터 저장방법 (0) | 2021.02.02 |
---|---|
[xcode] Storyboard objects 정리 (0) | 2021.01.24 |
[xcode] Inpo.plist 파일 - 애플리케이션 정보 (0) | 2021.01.24 |
[xcode] HeaderView있는 CollectionView 애플 뮤직 앱 (0) | 2021.01.20 |
[xcode] CollectionView로 Animation기능을 추가한 원피스 현상금 앱 (0) | 2021.01.20 |