iOS) Xcode Build Settings를 통한 Custom environment 구축

2021. 10. 28. 00:01iOS

iOS 를 개발하다보면 다양한 환경들에 대해서 다른 세팅들을 해주어야 하는 경우가 많습니다.

 

예를들면 아무래도 서버 url 같은 것들이 빈번하게 바뀌는 것들이겠죠.

앱을 앱스토어에 Release 할 때와, 로컬에서 Develop(test) 할 때, 서버 URL이 달라지게 할 수 있습니다.

 

Release 혹은 Develop 이나 기타 등등 다양한 환경들이 있다면 서버 URL같은 설정값들을 어떻게 처리할 수 있을까요?

 

손으로 일일히 한다면...

 

1. 환경에 따라서 매번 URL 값을 바꿔줘야 할 겁니다...

2. 만약에 Git같은 버전관리 툴을 쓰고 있다면, URL 값을 바꿀 때마다 워킹 디렉토리는 변경되고 매번 커밋을 해줘야겠죠.

3. 항상 앱이 어떤 환경상태인지 기억해놓아야 합니다. Develop 인가? Release 인가? 혼란스러우실 겁니다.

 

이런 위험천만한 환경변수 관리라니, 정말 끔찍합니다.

하지만 Xcode build settings 를 이용한다면 훨씬 세련되고 깔끔하게 환경변수들을 환경에 맞게 관리할 수 있죠.

 

 

세가지 과정만 기억하세요.

 

1. 프로젝트 타겟의 Build Settings 에 user defined settings 를 추가하세요.

2. build settings 에 추가한 Key를 info.plist에 추가하세요.

3. (옵션) info.plist 에 추가한 값을 코드에서 읽으세요.

 

 

1. 프로젝트 타겟의 Build Settings 에 user defined settings 를 추가하세요.

 

그러면 아래와 같이 새로운 세팅을 직접 만들어 줄 수 있습니다.

 

이를테면.. Server URL 이 될 수 있겠죠.

 

 

2. build settings 에 추가한 Key를 info.plist에 추가하세요.

우리가 설정했던 키값이었던 SERVER_URL은 info.plist 값으로 쓰일 수 있습니다.

 

 

3. (옵션) info.plist 에 추가한 값을 코드에서 읽으세요.

let serverUrl = Bundle.main.object(forInfoDictionaryKey: "ServerURL") as! String
        
print(serverUrl)

프로젝트 어디에서든 위의 코드를 활용하면 ServerURL에 해당하는 값을 가져올 수 있어요.

 

자, 그럼 이제 확인해볼까요?

 

콘솔 로그를 봐주세요!

 

Release 일 때, 위에서 User Defined로 설정한 값대로 https://rel.myapp.com의 값을 구했어요.

 

Debug 일 때도, 마찬가지겠죠.

 

 

이게 끝이에요.

 

정말 쉽게 환경세팅을 바꿔서 빌드할 수 있습니다.