티스토리 뷰
안드로이드 프로젝트는 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 프로젝트에서 빌드 타입 구성하기를 마쳤습니다
'WEB2.0 > 프로그래밍' 카테고리의 다른 글
mysql 8.0 php 오류 (0) | 2019.12.02 |
---|---|
vuetifyjs 오래된 브라우저와 IE 지원하기 (0) | 2019.11.19 |
ab로 post request 벤치마크하기 (0) | 2019.10.06 |
xcode 11부터 빌드시 기본 modal presentation style이 변경됩니다 (0) | 2019.09.27 |
애플 인앱(in-app purchase) 영수증 검증시 참고하면 좋은 (2) | 2019.09.26 |
- Total
- Today
- Yesterday
- android
- 벤처
- 공모전
- JavaScript
- Apple
- 안드로이드
- 아이디어
- AWS
- CSS
- 애플
- 대학생
- 창업
- 트위터
- 경진대회
- 아이폰
- 웹표준
- 구글
- 소프트웨어
- php
- 자바스크립트
- 모바일
- 어플리케이션
- 네이버
- 앱스토어
- 스마트폰
- iPhone
- 게임
- 앱
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |