기어가더라도 제대로
[Xcode-기초] Target, Build Configuration, Scheme 개념 정리 본문
[Xcode-기초] Target, Build Configuration, Scheme 개념 정리
Damagucci-juice 2025. 1. 30. 12:47개요
개발용도로 작업을 하는 것과 실제 배포 버전에서 수행해야하는 작업에 차이가 있음
- 호출하는 API 서버가 달라지는 등에 변경에 대응을 해야하는데, 그걸 상황마다 다르게 그때마다 변경하기가 어렵고 오류의 가능성도 있어서 별도의 환경 설정값들이 필요
- 예를 들어 은행 앱을 개발하면서 실제 은행 잔고가 편집되면 큰 사고임
또한, 얼핏보면 비슷해 보이고, 기본적으로 제공되는 것이 있어서 한번 짚고 넘어가야 함
개념
- Build: 코드로 되어있는 문서를 앱으로 돌릴 수 있는 실행단위로 만드는 행위(타겟을 컴파일)
- Build의 결과물로 실행할 수 있는 앱이 나옴
- 그 결과로 나온 앱을 실행하는 것이 'Run'
- Product: 일반적으로 접하는 앱, 혹은 상품과 같은 큰 개념, 작은 앱이라면, Project와 혼용 해서 말을 쓰는 것이 가능
- Project: Xcode 템플릿을 이용해서 앱을 시작을하면 생성되는 파일로써, 소프트웨어를 만드는데 필요한 모든 파일, 자료, 정보등에 대한 저장소
- Bundle: 코드, 이미지, 폰트, 오디오 파일 등 앱이 접근하는 자원을 포함하는 계층적으로 구조화된 디렉토리
- 예를 들어 Bundle 덕분에 디스크에 이미지가 있을 때, 그 이미지의 구체적인 저장 위치를 알지 못해도 코드적으로 Bundle Object에 접근 가능
- Target: 앱, 프레임워크, App Extension 또는 Unit Test 같이 빌드할 Product의 구체화된 모델
- ios target, mac target, watch os target등 한 프로덕트에서 여러 플랫폼에 앱을 지원한다면 한 프로덕트에 여러 타겟이 존재 가능
- 타겟 사이에 먼저 설치가 되어야하는 파일을 명시하는 것이 Dependencies
- 타겟 설정은 그 타겟에만 영향을 미치나, 프로젝트 설정은 모든 타겟과 프로젝트 전반에 영향을 미침
- 타겟에서 특정 파일에 접근하기 위해선 그 파일의 멤버쉽에 타겟을 등록시켜야함
- ios target, mac target, watch os target등 한 프로덕트에서 여러 플랫폼에 앱을 지원한다면 한 프로덕트에 여러 타겟이 존재 가능
- Build Configuration: Build Settings의 집합, 환경 설정의 모음집이라고 봄
- 기본적으로 Debug, Release Configuration이 제공됨
- 디버그 스킴, 릴리즈 스킴이라는 말은 잘못된 말임
- Scheme: Target, Build Configuration, Buil Settings를 아우르는 혼합체, 기본적으로 앱 생성시 하나 주어짐
- Active Scheme: 활성화 되어있는 스킴
- 여러 스킴을 만드는 것이 허용되지만 바로 당장 빌드할 수 있는 스킴은 하나뿐임
- Active Scheme: 활성화 되어있는 스킴
Unit Test 를 만들며 Target을 알아보기
프로덕트에서 "무엇을" 만들지 나타냄
- Unit Test도 별도의 타겟
- 타겟 생성하기
- 프로젝트 > Targets > '+' 버튼
- 다양한 타겟의 템플릿들 중 가장 밑으로 내려서 Unit Testing Bundle을 추가
- 2개의 타겟이 된 것을 확인
- ContentView.swift 파일은 Unit Test 타겟(ExProjTests)의 멤버쉽으로 등록이 안되어 있음
Swift Language 버전으로 Build Settings 알아보기
- 프로젝트 > 타겟 > Build Settings 로 이동하면 보이는 무수한 환경설정이 있음
- 모두다 알 순 없고, 필요한 설정만 이해하면 됨
- All > Levels > "swift lang" 검색
- 현재 타겟에서 어떤 Swift 버전을 사용할 것인지 설정
- iOS Default - Project - Target 순서로 구체적인 설정 범위를 지님, 즉 프로젝트 설정보다 타겟의 설정이 더 우선순위를 지님
- Resolved: 위의 것 중에 어떤 환경 설정을 사용할 것인지 결정난 사항을 보여줌
- 필요하다면 Debug와 Release의 Swift 버전을 변경할 수 있으나 여기선 굳이 하지 않음
Alpha Configuration을 만들면서 이해하기
Build Configuration: 프로덕트를 "어떻게" 만들 것인지를 나타냄
- 앱 배포의 단계에는 대표적으로 Dev, Alpha, Beta, Release 등이 있음
- Dev: 기능을 개발하면서 버그가 발생하고, 그런 버그를 잡기도 하는 단계
- Alpha: 개발팀에서는 개발이 마무리가 되었고, 내부적으로 QA나 테스트를 중점적으로 하는 단계
- Beta: QA도 안정적으로 통과되어서 내부에서 출시전에 사용을 하거나, 외부의 베타테스터들에게 배포하는 단계
- Release: 공개적으로 앱스토어에 올라가있는 단계
이러한 각 단계들을 대표하는 환경설정의 집합을 Build Configuration으로 묶어서 대표함, 이 중에서 Alpha를 만들어 보기
- 프로젝트 > Info에 들어오면 Configurations가 보임
- "+" 버튼으로 Alpha를 추가, 여기선 Release를 복사해와서 만듦
- Configuration 마다 Bundle Identifier를 변경해서 서로 다른 프로덕트로 설
- Target > Build Settings > "bundle identifier" 검색
- App Icon 을 담당하는 이름도 변경
- 한 프로덕트가 동일한 기기에 한개 이상 설치 될 수 없는데, product bundle identifier를 변경해서 두 프로젝트가 설치 된모습
- Alpha Configuration을 만들고 설정을 해줬으나, 그것을 실행하는 Scheme이 없어서 앱이 바탕화면에 나타나지 않음
Scheme을 만들면서 Alpha Configuration을 채택하기
Scheme?: 아까 Target이 무엇을 만들지를 정하고, Build Configuration이 어떻게 만들지를 정한다면 Scheme은 이런 것들을 아우르는 혼합물의 개념
- 기본 Scheme: 프로젝트가 생성하면 하나가 자동적으로 생성됨
- 특징: 앱 언어, 시스템 언어, 로케이션 등의 아이폰의 "설정"에서 바꿔야하는 것들을 설정할 수 있음
- Scheme Phase: 빌드, 실행, 테스트, profile, analyze, Archive 등의 단계를 나타냄
- 여기서 각 단계 마다 세부 설정을 변경해 줄 수 있음
- 상단에 project indicator에서 가장 왼쪽편을 누르면 Scheme에 대한 정보를 볼 수 있음
- New Scheme ... 을 누르고 ExProj Alpha 라는 이름의 스킴을 추가
- Active Scheme이 ExProj Alpha 인 상태에서 Edit Scheme ... 선택
- Run 빌드 페이즈를 선택하고 Build Configuration을 Alpha로 선택
- scheme과 build configuration을 이용해 동일한 앱을 3가지 설치한 모습
전체 코드
https://github.com/Damagucci-Juice/ExProj
GitHub - Damagucci-Juice/ExProj
Contribute to Damagucci-Juice/ExProj development by creating an account on GitHub.
github.com
참조
- https://developer.apple.com/documentation/xcode/configuring-a-new-target-in-your-project
- https://www.kodeco.com/books/ios-app-distribution-best-practices/v1.0.ea1/chapters/10-build-customizations
Configuring a new target in your project | Apple Developer Documentation
Configure your project to build a new product, and add the code and resources the product requires.
developer.apple.com
iOS App Distribution & Best Practices, Chapter 10: Build Customizations
Learn how to customize a build using targets, build settings and schemes. Understand how they work together, and the different levels of inheritance in build configurations.
www.kodeco.com
'Xcode, build, etc' 카테고리의 다른 글
[Xcode] UniversalLink (0) | 2024.08.09 |
---|---|
[xcode-build] Framework 분리와 Build 최적화로 Build 시간 줄이기 (0) | 2022.11.13 |