AppProject์ Identify์ ํ๋กํผํฐ๋ฅผ ๋ณด๋ฉด Build์ Version์ด ์๋ค.
Build์ Version์ ์ฐจ์ด๋ ?
Version
Version์ ์ฌ๋์ด ์ฝ๊ธฐ ์ํ ๋ฆด๋ฆฌ์ค๋ฒ์ ์ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
ํ๋ก์ ํธ ์์ฑ ํ Version์ ๋ํดํธ๊ฐ์ 1.0์ด๋ค. ๋ณดํต Version์ 10.14.1๊ณผ ๊ฐ์ด 1~3๊ฐ์ ์ ์์ ๋ง์นจํ๋ฅผ ๊ตฌ๋ถ์๋ก ์ด๋ค.๊ฐ ์ ์๋ [Major].[Minor].[Patch] ํ์์ผ๋ก ๋น๋ ๋ฒ์ ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ค.
์ฒซ๋ฒ์งธ ์๋ฆฌ์ 1์ ๋ฉ์ด์ ํ ์
๋ฐ์ดํธ์ผ๋ ์ซ์๋ฅผ ์ฌ๋ฆฐ๋ค.
๋๋ฒ์งธ ์๋ฆฌ๋ ๊ธฐ๋ฅ ๋ฆฌ๋ด์ผ์ ๋์ ์ค๊ท๋ชจ ์
๋ฐ์ดํธ๋ ์ซ์๋ฅผ ์ฌ๋ฆฐ๋ค.
์ธ๋ฒ์งธ ์๋ฆฌ๋ ์์ํ ๋๋ฒ๊น
๋ฐ ์ฝ๊ฐ์ ์์ ์ ์
๋ฐ์ดํธํ ๋ ์ฌ๋ฆฐ๋ค.
3๊ฐ ์ด์์ ์ซ์๋ฅผ ์ฐ๋ฉด ์์คํ
์์ ์ด๋ฅผ ๋ฌด์ํ๋ค. ๋๊ฐ์ ์ ์๋ง ์ฌ์ฉ ํ ๊ฒฝ์ฐ , ๋๋จธ์ง ํ๋๋ 0์ผ๋ก ๊ฐ์ฃผํ๊ฒ๋๋ค.
Build
Build๋ ๋งค๋ฒ์ ํ๋ก์ ํธ ๋น๋์ ๋ฒ๋ค ๋ฒ์ ์ ํ์ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
๊ฐ๋ฐ์๊ฐ ํ๋ก๊ทธ๋จ์ ํธ๋ํน ํ๊ธฐ์ํด ์ฌ์ฉ๋๋๊ฒ์ด๋ค. ๋ฐ๋ผ์ ๊ฐ๋ฐ์ ์ค์ค๋ก ํฌ๋ฉง์ ์ ํด์ ์ฌ์ฉํ๋ฉด ๋๋ค. ์๋ฅผ๋ค์ด ๋ง์ง๋ง์ผ๋ก ๋น๋ํ๋ ๋ ์ง๋ฅผ ์ ๋๋ค๊ฑฐ๋, ๋งค ๋น๋๋ง๋ค ์ซ์๋ฅผ 1์ฉ ๋๋ฆฐ๋ค๊ฑฐ๋ ์ทจํฅ๊ป ์ฌ์ฉํ๋ฉด ๋๋ค.
ํ๋ก์ ํธ ๊ด๋ฆฌ์ ๋น๋์ ๋ฒ์ ์ ์๋ํํ ์ ์๋ค. Bundle์ infoDictionary์์ ๊ฐ๊ฐ ๋ค์์ ํค๋ก ์ ๊ทผ ๊ฐ๋ฅํ๋ค.
Version: CFBundleShortVersionString
Build: CFBundleVersion
์๋์ ๊ฐ์ด extension์ ๋ง๋ค๋ฉด, ํ๋ก์ ํธ ๋ด์์ ์ ๊ทผํ๊ธฐ ํธํด์ง๋ค.
extension Bundle{
class var displayName : String{
if let value = Bundle.main.infoDictionary?["CFBundleDisplayName"] as? String{
return value
}
return ""
}
class var appVersion: String{
if let value = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String {
return value
}
return ""
}
class var appBuildVersion: String{
if let value = Bundle.main.infoDictionary?["CFBundleVersion"] as? String{
return value
}
return ""
}
class var bundleIdentifier: String{
if let value = Bundle.main.infoDictionary?["CFBundleIdentifier"] as? String {
return value
}
return ""
}
}
ํ๋ก์ ํธ๋ฅผ ๋น๋ํ ๋๋ง๋ค,<yyyymmdd + ๋น๋ํ์>๋ก Build ๊ฐ์ ์
๋ฐ์ดํธํด์ฃผ๋ ์๋ํ ์์คํฌ๋ฆฝํธ์ด๋ค.
์๋์ฒ๋ผ Build Phases์ run Script์ ๋ฃ์ด์ฃผ๋ฉด๋๋ค.
#!/bin/bash
buildDay=$(/usr/libexec/PlistBuddy -c "Print buildDay" "$INFOPIST_FILE")
buildCount=$(/usr/libexec/PlistBuddy -c "Print buildCount" "$INFOPLIST_FILE")
today=$(date +%Y%m%d)
if [ x$buildDay == x ]; then
buildDay=${today}
buildCount=1
printf -v zeroPadBuildCount "%03d" $buildCount
buildNumber=${buildDay}${zeroPadBuildCount}
/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
printf -v zeroPadBuildCount "%03d" $buildCount
buildNumber=${buildDay}${zeroPadBuildCount}
/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))
printf -v zeroPadBuildCount "%03d" $buildCount
buildNumber=${buildDay}${zeroPadBuildCount}
/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