티스토리 뷰

728x90
반응형

내용

  • 서버 API 를 개발하며 동시에 데이터 손상에 대해 안전하기 위해서 테스트 서버와 릴리즈 서버의 차이를 두기로 하였습니다.
  • 개발용, 베타, 릴리즈에 따라 Build 환경을 구축하여 하드 코딩하지 않도록 해보겠습니다.
  • 보안상 중요한 key 를 노출시키지 않도록 하겠습니다.

1️⃣ Configuration Setting File 생성 후 설정

  • Configuration 을 duplicate 하여 필요한 환경을 만든다.

1

  • xcconfig 파일 생성111
  • 반드시 targets 를 설정해주어야 한다.
  • 2

❓.xcconfig 파일이란?

apple - configuration file

  • .xcconfig 파일에 key-value 로 작성을 하면된다.

이때, 진행한 프로젝트는 CocoaPods 을 위한 xcconfig 파일이 있기 때문에 import 하여 사용해야 한다.

// ✅ 공통으로 쓰이는 것들은 각 파일에 따로 include 해주었습니다.

// Shared.xcconfig
KAKAO_NATIVE_APP_KEY = ...

// ✅ 빌드 스키마에 따른 configuration file 을 작성하였습니다.

// Beta.xcconfig
#include "Shared.xcconfig"
#include "Pods/Target Support Files/Pods-(프로젝트 이름)/Pods-(프로젝트 이름).beta.xcconfig"
BASE_URL = (배타 테스트용 URL)

// Debug.xcconfig
#include "Shared.xcconfig"
#include "Pods/Target Support Files/Pods-(프로젝트 이름)/Pods-(프로젝트 이름).debug.xcconfig"
BASE_URL = (개발용 URL)

// Release.xcconfig
#include "Shared.xcconfig"
#include "Pods/Target Support Files/Pods-(프로젝트 이름)/Pods-(프로젝트 이름).release.xcconfig"
BASE_URL = (릴리즈용 URL)
  • configurations 에 .xcconfig 파일 매칭

configuration file - Configurations(Debug, Beta, Release) - Build Scheme 로 이어진다.

3

❓ 방법은 이것뿐인가요? 왜 선택했나요?

info.plist 에서 User-Defined Setting 으로 만든 User-Defined 환경변수를 Swift 파일에 가져와서 동작시키는 방법도 있습니다.

45

해당 방법은 아래의 블로그를 참고하실 수 있습니다.

[[iOS - swift] iOS 프로젝트 배포 환경별 build 세팅(info.plist 방법, 단일 타겟), debug / alpha / beta / release](https://ios-development.tistory.com/278)

하지만, key-value 들을 따로 모아서 .gitignore 를 통해 무시하게 할 예정이고, 개발자들이 이 파일을 로컬에 가지고 있기로 하였습니다.

그런데 코드가 섞여 있어 추후에 유지보수를 통해 비지니스 로직을 수정하게 되는 swift 파일보다는 key 만 들어있는 configuration file 이 관리에 용이하다고 판단하여 이와 같이 진행하였습니다.

2️⃣ Scheme 설정

빌드 상황에 따른 Configurations 를 만들어보았는데요. 이제는 빌드 스키마를 만들어서 Configurations 를 매칭해보도록 하겠습니다.

  • build scheme 생성

6

  • build scheme 에 따른 configuration 설정

7

release 용 빌드의 경우

  • Run, Test, Analyze 는 Debug
  • Profile, Archive 는 Release

beta 테스트 용 빌드 스키마의 경우는 테스트 플라이트로 팀 내에서 진행할 목적이라서

  • Profile, Archive 를 Beta 로 Configurations 을 설정했습니다.

이를 통해 베타 테스트에서는 테스트 서버 URL 을 사용하여 테스트 플라이트를 만들도록 하였습니다.

혹여나 Unable to load contents of file list: ~~~ input/output xcfilelist 관련 에러를 만난다면 아래의 방법대로 pod 을 업데이트 후 클린 빌드해보시길 바랍니다.

Xcode 10.2 Update issue Build system error -1: Unable to load contents of file list: input/output xcfilelist

3️⃣ 사용

  • info.plist 에 환경변수를 $()로 만들어준다.

7-1

let baseURL = Bundle.main.object(forInfoDictionaryKey: "BaseURL") as? String ?? ""

let kakaoNativeAppKey = Bundle.main.object(forInfoDictionaryKey: "KakaoNativeAppKey") as? String ?? ""

8

❗️ 주의해야 할 점

.xcconfig 파일에서 // 는 주석처리를 해주기 때문에 사이에 비어있는 환경변수를 넣어서 처리해주었다.

910

❗️Build Scheme 별로 빌드 번호 관리

beta 테스트를 위해서 빌드버전을 따로 관리할 수도 있었다.

11

출처

11. xcconfig 설정하기 (빌드 구성하기)

[iOS - swift] iOS 프로젝트 배포 환경별 build 세팅, Build Scheme 세팅 (단일타겟, xcconfig)

[iOS - swift] iOS 프로젝트 배포 환경별 build 세팅(info.plist 방법, 단일 타겟), debug / alpha / beta / release

iOS 프로젝트 배포 환경별 build 세팅하기

[iOS - swift] Xcode 배포환경 설정 xcconfig, configuration, phase, deploy (alpha, beta, real, staging, production, CocoaPods)

github에 올리면 안되는 APIKEY 숨기기 - iOS

728x90
반응형
댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
«   2024/07   »
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 31
링크
Total
Today
Yesterday