[iOS] Version + Build 이용 프로젝트 관리

2020. 11. 28. 06:24iOS

반응형

공모전에 나가면서 앱을 App Store에 등록하게 되었다.

그 때, 현재 빌드한 프로젝트를 기준으로 Archive하여 App Connect에 제출하고 앱의 버전을 주고 출시하게 된다.

 

그렇다며 여기서 버전은 무엇이고 Build 번호는 무엇일까요..⁉️

 

이렇듯 Xcode의 프로젝트에서 General을 클릭하게 되면 위의 그림과 같이 현재 앱의 버전과 Build가 확인이 가능합니다.

 

Version

일단 버전의 경우에는 현재 앱의 단계..? 정도라고 생각하면 될 것 같습니다.

즉, App Store에서 앱을 다운받을 때, 앱의 버전을 확인할 수 있죠? 얼마나 그 앱이 업데이트 되었는지 척도로 알 수 있습니다.

 

저 같은 경우에는 이 앱의 버전 관리에서 1.2.2로 현재 측정되어 있죠?

 

일단 첫번째 자리의 1의 경우에는 엄청나게 큰 메이저급 업데이트일 경우 숫자가 올라갑니다.

예로 UI가 많이 변하거나 기능적이나 기획적으로 큰 변화가 있을 경우가 해당합니다.

 

두번째 자리 2의 경우에는 메이저급의 업데이트가 아니지만 기능적으로 어느정도의 변화가 있을 때 숫자가 올라갑니다.

 

마지막 자리 2의 경우에는 작은 버그나 수정이 있을 때 1씩 증가하게 됩니다.

예로 급하게 버그를 수정하는 경우, 또는 정말 사소한 변화정도가 될 것 같습니다.

 

Build

빌드 번호는 여기서 전 처음에는 잘 몰랐는데, 이것을 자동화해서 빌드할 때마다 번호를 늘려주는 기능이 Xcode에 있더라구요.

 

일단 현재의 빌드 번호를 보면 전 첫 8글자는 년월일로 시간을 나타내었습니다. 

그리고 마지막 1은 그 날 몇개의 빌드를 수행했는지를 알 수 있습니다.

 

즉, 2020년 10월 27일날 1번의 빌드를 했다는 뜻입니다.

 

이 경우는 본인이 편한 방식으로 빌드를 구분할 수 있도록 커스텀하면 될 것 같습니다.

앱 스토어에 올리게 될 때, 이 빌드를 기준으로 Archive을 하게 되는데 그렇기 때문에 개발자의 입장에서 구분이 되는 것이 좋습니다.

 

그렇다면 이제 이 빌드 번호를 매기는 것을 자동화하는 것을 알아볼까요.

 

우선 Xcode 프로젝트를 클릭하고 위의 메뉴에서 Build Phases라는 항목을 찾아야합니다.

 

그렇다면 이 밑의 화면처럼 여러가지 메뉴가 뜰건데요.

여기서 Run Script라는 화살표를 클릭하여 영역을 봅니다.

 

코드를 입력할 수 있는 창이 보여지면 거기에서 이제 본인이 맞는 코드로 커스텀을 실행하여주면 됩니다.

저의 경우에는 년도 + 월 + 일 + 빌드횟수로 구성했었죠?

 

코드는 다음과 같습니다.

buildDay=$(/usr/libexec/PlistBuddy -c "Print buildDay" "$INFOPLIST_FILE")
buildCount=$(/usr/libexec/PlistBuddy -c "Print buildCount" "$INFOPLIST_FILE")
today=$(date +%Y%m%d)

if [ x$buildDay == x ]; then
    buildDay=${today}
    buildCount=1
    buildNumber=${buildDay}${buildCount}

    /usr/libexec/PlistBuddy -c "Add :buildDay string $buildDay" "$INFOPLIST_FILE"
    /usr/libexec/PlistBuddy -c "Add :buildCount string $buildCount" "$INFOPLIST_FILE"
    /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"

elif [ $buildDay != $today ]; then
    buildDay=${today}
    buildCount=1
    buildNumber=${buildDay}${buildCount}

    /usr/libexec/PlistBuddy -c "Set :buildDay $buildDay" "$INFOPLIST_FILE"
    /usr/libexec/PlistBuddy -c "Set :buildCount $buildCount" "$INFOPLIST_FILE"
    /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"

else
    buildCount=$(($buildCount + 1))
    buildNumber=${buildDay}${buildCount}

    /usr/libexec/PlistBuddy -c "Set :buildDay $buildDay" "$INFOPLIST_FILE"
    /usr/libexec/PlistBuddy -c "Set :buildCount $buildCount" "$INFOPLIST_FILE"
    /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"

fi

 

반응형