AppProject
: PROJECT, TARGETS
1. PROJECT
: 모든 파일, 리소스, 소프트웨어 빌드에 필요한 모든 정보의 저장소
1-1. Info
- Info
- Deployment Target
- Configurations
- 기본적으로 Debug, Release를 지원
- 개발 버전, 릴리즈버전, 무료버전, 유료버전, 베타 등 다양한 환경에서 테스트를 하기 위해 Configuration을 추가할 수 있음
- Localizations
- 지원하는 언어(지역)
- Base : 영어
- 로컬라이징 해주고 싶은 언어를 설정해주는 곳
- 로컬라이징: 나라별로 언어를 설정하는 것
1-2. Build Settings
- Build Settings
- 아주 중요하고 민감한 값, Build Setting을 저장하고 있는 파일이 project.pbxproj 파일
- 기본값이 아닌 Build Setting은 Customized 필터 옵션에서 확인
- 현재 적용되어 있는 Build Setting이 기본값을 쓰고 있는지, 프로젝트에 적용된 값을 쓰고 있는지, Target별로 override를 한 것인지 등을 확인 가능
- 불필요한 Build Setting 변경은 최소화 하기 !
1-3. Package Dependencies
- Package Dependencies
- Swift Packages(SwiftPM)
- Swift Package Manager
: 애플에서 제공하는 dependency manager (줄여서 SPM)
- Swift Package Manager로 패키지 설치
- 이 과정을 Xcode > 프로젝트 Target > Package Dependencies
를 통해 진행
- 프로젝트 내 swift 라이브러리를 관리하는 매니저
- Swift 코드의 배포를 관리하기 위한 도구
- Swift 빌드 시스템과 통합되어 종속성을 다운로드, 컴파일 및 연결하는 프로세스를 자동화함
2. TARGETS
- Target은 빌드할 product를 지정하여 프로젝트 또는 workspace의 파일 집합에서 product의 빌드 방법(by Build Settings / Phases)을 지정
- 프로젝트에는 하나 이상의 Target이 포함될 수 있으며, 각 Target은 하나의 product를 생성함
- Target별로 빌드 설정을 달리할 수 있음
- Targets에서는 project 내에서 여러개의 target을 만들어서, 하나는 ios 용, 하나는 mac 용으로 제작하거나, 모듈을 하나하나 따로 뺄 수 있게 해줌
- Target은 Target 내에서 지정한 build Setting에 의해 override 되지 않는 이상 기본적으로 Project Build Setting을 상속받음
- Configuration은 하나의 target에 대해 다른 버전의 앱을 만드는 것 !
- Target은 같은 파일로 만들어도 (일부 or 전부 상관없이) 결론적으로는 다른 Product를 만드는 것 !!
2-1. General
- General
- Identify
- Display Name : 프로젝트 이름 설정
- Bundle Identifier : App Store에 앱 배포시 앱 이름
- Version : (사용자가 보게 될) 나의 앱 버전
- Build : (동일한 버전 내에서) 업데이트를 할 때 설정 → 빌드 횟수 관리
- Deployment Info : 앱을 배포할 때 필요한 항목 설정
- iOS 15.2 (iPhone & iPad & Mac) : os 버전이 쭉 나오고, 설정하는 버전 이후의 유저만 사용 가능
- Main Interface : 앱 기본 인터페이스 설정
- Device Orientation : 기기 방향 설정
- 앱 실행 화면을 가로방향, 세로방향, 두가지 모두 중에 설정 가능
(Portrait : 세로 | Landscape : 가로)
- Status Bar style : 상태바 스타일
- Default를 추천 (Hide status bar 체크 → 앱 실행 시 화면 상단의 상태바가 사라짐)
- App Icons and Launch Images : 앱 아이콘 및 런치 스크린 설정
- App Icons Source : Assets.xcassets 파일로 이동하며, 상황별 아이콘이 있음 (하나라도 비어 있으면 검수 시 reject 당할 수 있다 !)
- Launch Screen File : 앱 실행 시 나오는 splash 화면
- Frameworks, Libraries, and Embedded Content
: 앱에서 쓰이는 라이브러리를 embeded 시킬지 or 안 시킬지에 대한 설정
- embeded 시킬 시 → 앱에 library가 포함된 채 배포
- embeded 안 시킬 시 → 앱 실행 시에 library 참조
2-2. Sigining & Capabilities
- Sigining & Capabilities
- Signing : Automatically manage signing을 체크 → 내 인증과 관련된 자료를 Xcode가 알아서 서버에서 가져옴
: 태그를 사용하여 주문형 배포를 위해 자산을 그룹화할 수 있음
⇒ 앱의 일부로 모든 이미지를 배송하는 것과 달리 필요할 때 앱에서 다운로드할 수 있는 이미지 그룹을 정의할 수 있다 !
2-4. Info
- Info : 파일 유형 및 서비스 정보 추가
- Custom iOS Target Properties : 사용자 지정 대상 속성
- Document Types
- 문서 유형 설정은 앱에서 만들고 편집 할 수있는 문서 유형을 지정하고 iOS 또는 Mac OS에서 해당 문서 유형에 대해 표시되는 사용자 정의 아이콘을 제공
- Exported Type Identifiers & Imported Type Identifiers
- 앱에서 내보내거나 가져올 수있는 모든 파일 유형에 대해 내보내고 가져온 UTI를 추가
- 일반적으로 앱에 고유 한 문서 유형과 달리 UTI는 일반 텍스트 또는 .png. 예를 들어 UTI는 앱간에 클립 보드에 복사 및 붙여 넣기를 지원
- URL Types
- URL 유형 설정을 사용하면 사용자 지정 프로토콜을 사용하여 다른 앱과 데이터를 교환하기 위한 사용자 지정 스키마 지정 가능
- 파일의 유형 및 서비스 정보 추가, 앱과 관련된 속성 앱이 만들거나 열 수 있는 파일의 유형
2-5. Build Settings
- Build Settings: product 빌드 수행에 대한 정보가 들어있는 변수
- 이 값들을 어떻게 설정하느냐에 따라 생산성에 큰 차이가 생길 수도, 알 수 없는 런타임 오류가 발생 할 수도 있음
- 따라서 프로젝트에서 Build Setting을 변경 할 때에는, 그럴만한 충분한 이유가 있어야 하고, 그 이유와 맥락이 팀 전체에 공유가 잘 되어야 함 !
2-6. Build Phases
: Dependency와 유저의 컴파일 코드를 포함하는 정보
2-7. Build Rules
- ‘Build Rules’에 따라 컴파일러에서 파일을 컴파일할 때 수행 할 동작을 자동화할 수 있음