Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 스위프트
- MVVM
- map
- clean architecture
- Human interface guide
- 리펙토링
- SWIFT
- uiscrollview
- ribs
- collectionview
- Observable
- swiftUI
- Refactoring
- RxCocoa
- 클린 코드
- rxswift
- Protocol
- combine
- tableView
- 리팩토링
- Xcode
- HIG
- UITextView
- swift documentation
- 리펙터링
- UICollectionView
- ios
- 애니메이션
- Clean Code
- uitableview
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] iOS 프로젝트 배포 환경별 build 세팅, Build Scheme 세팅 (단일타겟, xcconfig) 본문
iOS 앱 배포와 출시
[iOS - swift] iOS 프로젝트 배포 환경별 build 세팅, Build Scheme 세팅 (단일타겟, xcconfig)
jake-kim 2021. 4. 21. 22:13* xcconfig방법은 .xcconfig파일을 별도로 swift문법과는 다르게 작성하는 번거로움이 있는 단점과 더욱 정밀하게 선언하여 관리할 수 있는 장점이 있지만, info.plist에 configuration을 가져와서 .swift파일에서 동작하도록 하는게 더욱 간편
* info.plist로 설정 방법: ios-development.tistory.com/278
각 환경에 맞는 설정파일 추가
- Configuration은 나눈 상태 (debug / alpha / beta / release)
- 단 debug모드는 전처리기로 구분하려고 할 때, alpha, beta, release모두에 포함되므로, 새로운 스킴 DEV와 같이 만들 것
- 아래는 편의상 Debug로 정의
- Configuration Settings File 추가
- 구성: CConfig 디렉토리에 shared.xcconfig(공통적으로 사용될 config), 하위 App에 대한 phase 각 .xcconfig파일이 존재
각 Configuration 파일 내용 적용
- 각 xcconfig 별 속성 정의
// 각 파일에 공통적으로 추가
#include "../shared.xcconfig"
- shared.xcconfig 파일에 각 환경에 맞게 MACRO로 분기할 수 있도록 적용
- config={xcconfig이름}
OTHER_SWIFT_FLAGS[config=DEBUG][sdk=*] = $(inherited) -DDEBUG
OTHER_SWIFT_FLAGS[config=ALPHA][sdk=*] = $(inherited) -DALPHA
OTHER_SWIFT_FLAGS[config=BETA][sdk=*] = $(inherited) -DBETA
OTHER_SWIFT_FLAGS[config=RELEASE][sdk=*] = $(inherited) -DRELEASE
- configurations -> xcconfig 파일 지정
Scheme 추가
- Manager Schemes 선택
- Schemes 추가
- build configuration 설정 (default가 debug이므로 따로 설정 필요)
- 일반적으로는 Debug-Alpha, Beta, Production 세 개로 구성
- debug, alpha, beta, release모두 Build Configuration 수정
- Run, Test, Profle, Analyze, Archive 모두 수정 필요- 만약 Debug-Alpha, Release-Alpha 이렇게 한쌍으로 구성할 경우, Run, Test, Analyze에는 Debug-Alpha로 설정 / Profile, Archive에는 Release-Alpha로 설정
결과 확인
- MACRO로 확인
API를 환경설정 별 다르게 부르는 방법
- API프로젝트가 있을때 위에서 정의했던 configuration들을 동일하게 만들어 주지 않으면 오류
- API프로젝트에 MACRO로 환경별 다른 api를 호출하도록 설정
- MainApp에서 API프로젝트를 import한 후 사용
기타 xcconfig의 활용
- xcconfig파일은 info.plist에서 접근 가능
- info.plist에서 좌측 key값은 .swift파일에서 접근, 우측 value값은 .xccconfig로부터 읽어오는 것
- 타겟 빌드세팅에서 configuration세팅이 되어 있다면, configuration.swift 파일에서 불러와서 바로 사용
- 빌드 세팅에 어떤 환경을 구별하는 DeployPhase 값을 보고 Configuration.swift에 적용하지 않아도 되는 간편함 존재
//
// ServiceConfiguration.swift
// configTest
//
// Created by 김종권 on 2021/04/26.
//
import Foundation
struct ServiceConfiguration {
static var baseUrl: String {
guard let baseUrl = Bundle.main.object(forInfoDictionaryKey: "ApiBaseUrl") as? String else {
fatalError("Service API URL could not find in plist. Please check plist or user-defined!")
}
return baseUrl
}
}
* xcconfig를 이용한 xcode 세팅: https://ios-development.tistory.com/660
* 참고
pewpewthespells.com/blog/xcconfig_guide.html
minsone.github.io/ios/mac/xcode-xcconfig
www2.slideshare.net/MintakSon/ios-80115427
'iOS 앱 배포와 출시' 카테고리의 다른 글
[fastlane] 6. fastlane register devices, 디바이스 정보(UDID, Name) Apple Developer에 등록 방법 (register_devices) (0) | 2021.08.23 |
---|---|
[iOS - swift] Xcode에서의 configuration별 build Settings 설정값 (최적화) (0) | 2021.05.05 |
[CI/CD] CI/CD 기본 개념 (0) | 2021.04.17 |
[iOS - swift] AppStore 앱스토어 심사 제출에 필요한 리소스 (0) | 2021.03.19 |
[iOS - swift] fastlnae으로 스크린샷 (snapshot) 찍기 (0) | 2021.01.16 |
Comments