티스토리 뷰

728x90
반응형

안드로이드 프로젝트는 gradle 의 buildTypes 변수를 통해서

 

development, QA, release 배포환경에 따른 환경 변수를 조작할수 있는데요

 

iOS 프로젝트에서는 어떻게 할수 있을까요?

 

xcode를 열어보면 target이라는 눈에 잘띄는 녀석이 있긴 한데

 

저도 처음에는 target을 통해서 배포환경별 분기를 했었는데 나중에 알고 보니

 

target은 이런용도로 쓰는것이 아니었더라고요(물론 방법적으로는 이렇게 써도 원하는 구현을 할수는 있죠)

 

target은 안드로이드의 productFlavor와 비슷한 개념인데요

 

하나의 프로젝트에서 무료앱, 유료앱과 같은 상품별 분기가 발생할때 활용을 하는것이고

 

배포환경(dev, qa, production)별 분기시에는 build config를 활용하는것이 올바른 쓰임입니다.

 

그렇다면 build config를 어떻게 쓰면 되는지 한번 알아볼까요

 

 

 

 

여러분의 프로젝트를 선택하시고 info 탭을 클릭하시면

 

configurations 설정이 보입니다.

 

기본적으로 Debug와 Release가 생성되어있는 것을 볼 수 있습니다.

 

 

 

그 아래에 더하기 버튼을 누르면 설정을 복사해서 생성을 할 수 있습니다.

 

Debug configuration은 세부 설정값이 debug쪽에 가까울것이고

 

Release configuration은 release쪽에 가까울것입니다.

 

그러니 여러분이 원하는 배포환경에 가까운 설정값을 복사하시면 될거예요.

 

 

복사를 해서 이름을 Qa로 바꾸었습니다.

 

이런식으로 Stage라던가 원하시는 만큼 생성하시면 됩니다.

 

 

 

 

configuration을 추가한 다음에 build settings 탭을 클릭해서 값들을 열어보시면

 

내가 생성한 configuration이 추가된 것을 확인하실수 있어요

 

이렇게 모든 설정값들이 Debug, Qa, Release로 나뉘어져있으니

 

여러분이 각 배포 환경에 따라 원하는 값을 직접 설정해주실수 있어요

 

 

이렇게 각 환경별 번들ID나 앱이름을 다르게 설정해줄수도 있죠

 

 

 

이제 설정하는 법은 끝냈는데 그렇다면 빌드시에 원하는 특정 configuration을 어떻게 붙일수 있을까요?

 

 

일단 먼저 build configuration이 동작하는 방식을 알아볼게요

 

빌드를 실행하는 실행 버튼 옆에는 연필이랑 자가 그려진 아이콘이 있는 부분을 볼수 있는데요

 

정확히는 이름이 scheme이라고 합니다.

 

이게 기본적으로는 여러분의 프로젝트 이름과 같은 1개가 생성이 되어있어요

 

 

Edit Scheme... 을 눌러볼까요

 

 

이런 화면을 보실수가 있는데요

 

좌측의 Run 을 눌러볼까요

 

우측에 Build Configuration이 보입니다.

 

 

아하 여기서 이렇게 쓰이는것이군요.

 

 

 

클릭해보시면 여러분이 설정한 build configuration중 하나를 선택할 수 있습니다.

 

바로 여러분이 xcode에서 Run 을 실행하면 여기서 설정한 build configuration이 적용되는것이죠.

 

 

 

Run 말고도 그 밑에 Archive도 보이는데요

 

Archive는 여러분이 앱을 배포하기 위해 애드훅을 만들때 쓰는 기능이죠

 

바로 이때 사용할수 있는 Build Configuration을 정할수 있습니다.

 

xcode는 기본적으로 Run 모드에서는 Debug build configuration을 사용하고

 

Archive 모드는 Release build configuration을 사용하도록 설정이 되어있어요.

 

 

이렇게 여러분들은 원하는 배포타입을 선택해서 빌드하는 방법을 깨우치셨습니다.

 

 

 

근데 사실 우리가 정확히 원하는 것은 빌드 타입을 나누는게 목적이 아니라

 

빌드타입을 나눠서 각각의 환경에 서로 다른 변수값을 사용하려고 하는것이죠

 

예를 들면 dev 빌드는 dev서버를 참조해야할것이고

 

qa빌드는 qa서버를

 

release 빌드는 release 서버를 참조해야할테니깐

 

각각 환경에 맞는 endpoint 주소를 넣어야하는것이죠.

 

 

 

1. 손쉬운 직접 수정방법

 

 

여러분은 이미 새로운 build configuration을 추가한 순간

 

다이렉트로 각 configuration별 값을 설정할수 있게 됩니다.

 

Info.plist 파일을 각각 dev, qa, release 용 세개를 만들어서

 

서로 다른 plist 파일을 참조하도록 설정할수 있습니다.

 

서로 다른 plist 파일은 물론 각각의 환경에 맞는 값을 가지고 있겠죠?

 

 

2. 좀더 체계적인 방법

 

1번의 방법을 사용하셔도 괜찮지만

 

Info.plist 파일은 하나로 두고

 

각 환경에 맞는 설정파일을 추가로 생성하는 방법을 알아봅시다.

 

 

새 파일 추가를 하시면 Configuration Settings File이라는 것을 찾을 수 있습니다.

 

그리고 직관적으로 파일이름도 각 환경에 맞는 이름으로 지어보겠습니다.

 

 

 

 

이렇게 추가된것을 볼 수 있습니다.

 

생성된 파일은 텅 비어있는데요

 

 

값을 채워넣어보죠

 

세개 파일 모두 동일한 변수들을 넣고 값을 각각 다르게 넣어줍니다.

 

 

그리고 다시 프로젝트의 info 탭으로 돌아가보시면 각 환경에 configruation 파일을 설정할수 있습니다.

 

우리가 생성했던 파일중에 한개를 선택할수 있습니다.

 

그리고 이런식으로 각 환경에 따른 configuration file을 설정해주면 됩니다.

 

Build Settings 탭으로 이동하면 하단에 User-Defined 라는 항목에 내가 configuration 파일에 추가한 변수들과 값을 확인할 수 있습니다.

 

 

여러분도 이렇게 잘 보이시나요

 

저는 앱이름과, 번들ID, 그리고 앱토큰이라는 변수를 설정했습니다.

 

뭐 여기에 추가로 server_url이 들어갈수도 있겠고 여러분이 원하는 변수를 넣으면 됩니다.

 

저는 아까 예제로 APP_NAME, APP_BUNDLE_ID, APP_TOKEN 이라는 변수를 선언했는데요

 

APP_NAME과 APP_BUNDLE_ID 라는 변수는 이미 기존에 info.plist 파일에 선언되어있는 Bundle identifier랑 Bundle name에 변수를 할당했구요

 

가장 마지막에 보면 AppToken 이라는 key를 추가해서 APP_TOKEN 변수를 할당했어요

 

 

이제 앱을 실행할때 debug, qa, release configuration에 따라 bundle id와 앱이름이 바뀔것이고요

 

그리고 커스텀한 변수 AppToken를 코드내에서 사용할수 있게됩니다.

 

AppToken은 우리가 보통 info.plist 값 불러오듯이 호출하시면 됩니다.

 

print(Bundle.main.infoDictionary?["AppToken"] as? String)

 

 

 

Scheme 생성하기

 

매번 Edie Scheme을 눌러서 build configuration 파일을 바꿔서 실행하는건 은근히 번거로운 일이잖아요

 

그렇기 때문에 빌드타입별로 사용할 scheme 생성해두면 조금 더 편합니다.

 

 

이렇게 원하는 빌드유형마다 scheme을 생성하면 

 

좀 더 편하게 사용하실수 있어요

 

그리고 다른 누군가도 프로젝트소스코드를 받았을때 이러한 설정을 볼테니 아 이러이러한 빌드타입들이 있구나 라고 한번에 알수 있겠죠?

 

New Scheme이나 Manage Scheme의 더하기 버튼을 눌러서 생성하고 원하는 이름을 정해주시면 됩니다.

 

그리고 각 scheme 별로 원하는 build configuration을 설정해주시면 되요.

 

 

 

 

이상 여기까지 iOS 프로젝트에서 빌드 타입 구성하기를 마쳤습니다

 

 

 

 

 

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