Thursday, December 6, 2012

XCode에서 빌드 번호 자동으로 증가시키게 하기

프로그램을 개발하다 보면 버그를 발견하게 마련이다. 이때 발견한 버그가 현재 프로그래머가 작업하고 있는 버전에서 이미 고쳐져 있는 상태인지 아닌지 구분을 한다거나 버그가 나타난 빌드가 언제부터 생겨났었는지를 트래킹 하는데도 이 빌드 번호가 자주 사용된다.

이 글에서는 xcode에서 빌드 번호를 자동으로 증가시키는 방법에 대해 설명한다. (웹에 이미 내가 했던 방식과 똑같은 방식으로 글이 올라와 있는게 있다.)  iOS프로그램은 plist를 이용해서 프로젝트에 관련된 정보를 저장하고 있는데 여기에 빌드 번호가 있다. CFBuildVersion이 바로 그것인데 나는 그것을 사용하지 않고 따로 변수를 하나 더 생성했다.

이 KBuildNumber를 화면에 표시만 해주면 실제로 누군가가 버그를 발견했을 때 빌드 번호를 체크함으로써 해결된 버그인지 아닌지 알 수 있다.

우리가 여기서 해결해야할 문제는 이 값이 plist안에 있고 이것을 자동으로 증가시키고 싶은 것이다. 이것은 bash를 이용해서 해결 가능하다.



프로젝트 속성에 들어가서 Build Phases에 들어간다. 그리고 새로운 Add Build Phase를 한 후 이름은 AutoBuildNumber로 한다. (뭐가 되던 상관은 없다)

그리고 그림과 같이 코드를 작성한다. 귀찮은 사람들을 위해서 코드를 적어 보면


#!/bin/bash
buildPlist=${INFOPLIST_FILE} 
buildNumber=$(/usr/libexec/PlistBuddy -c "Print KBuildNumber" $buildPlist)
buildNumber=$(($buildNumber+1))
/usr/libexec/PlistBuddy -c "Set :KBuildNumber $buildNumber" $buildPlist


빌드의 순서는 위에서 아래로 되는데 그렇기 때문에 실제 소스 파일들을 컴파일 하기 이전에 AutoBuildNumber를 실행해서 빌드 번호를 증가 시킨다. 실제로 이 값을 코드에서 사용하기 위해서는 다음과 같다.


NSString* buildNumber = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"KBuildNumber"];


이로써 컴파일을 할 때 마다 빌드 번호를 자동으로 증가 시킬 수 있게 되었다.





No comments:

Post a Comment

Task in UnrealEngine

 https://www.youtube.com/watch?v=1lBadANnJaw