๐ŸŽ iOS

App Version & Build Version

gom1n 2022. 12. 2. 15:18

์•ฑ ๋ฒ„์ „๊ณผ ๋นŒ๋“œ ๋ฒ„์ „์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€?!

์•ฑ ๋ฒ„์ „์€ ํ‰์†Œ์— ์šฐ๋ฆฌ๊ฐ€ ์•ฑ์Šคํ† ์–ด์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ฆด๋ฆฌ์ฆˆ ๋ฒ„์ „์ธ๋ฐ, 

์ˆ˜์ •์‚ฌํ•ญ์ด ์žˆ๊ฑฐ๋‚˜ ๋ญ ์—…๋ฐ์ดํŠธํ•œ ๊ธฐ๋Šฅ์ด ์žˆ์„ ๋•Œ๋งˆ๋‹ค ๋ฒ„์ „์„ ์˜ฌ๋ ค ๋ฐฐํฌํ•œ๋‹ค.

 

๊ทธ๋Ÿผ ๋นŒ๋“œ ๋ฒ„์ „์€ ๋ฌด์—‡์ด๋ƒ?!

ํ‰์†Œ์— ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ๋นŒ๋“œํ•˜๋Š” ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.... ๋นŒ๋“œ๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„์ „์ธ ๊ฒƒ์ด์ง€์š”. ํผํผ 

์•ฝ๊ฐ„ ๋ง๋กœ ์„ค๋ช… ๋ชป ํ•˜๊ฒ ๋Š”๋ฐ ๋Œ€์ถฉ ์ดํ•ด๊ฐ€์‹œ์ ธ

 

1.0.2 (24)

์ด๋ ‡๊ฒŒ ๋˜์–ด์žˆ๋‹ค๋ฉด ์—ฌ๊ธฐ์„œ 1.0.2 ๋Š” ์•ฑ๋ฒ„์ „, 24๋Š” ๋นŒ๋“œ ๋ฒ„์ „์ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธํ”Œ๋ผ์ดํŠธ์— ์•ฑ ์˜ฌ๋ฆฌ๊ณ  "24๋กœ ํ์—์ดํ•ด์ฃผ์„ธ์šฉ~" ์ด๋Ÿฌ๋ฉด ํ…Œ์Šคํ„ฐ๋“ค์ด (24)๋ผ๊ณ  ์จ์ ธ์žˆ๋Š” ์•ฑ์œผ๋กœ ํ์—์ดํ•˜์‹œ๋Š” ๊ฑฐ์ฃ .

 

์ฐธ๊ณ ๋กœ ๋นŒ๋“œ ๋ฒ„์ „์€ ์•„๋ฌด๋ ‡๊ฒŒ๋‚˜ ์จ๋„ ๋œ๋‹ค๊ณ  ํ•œ๋‹ค๋„ค์š”. ๊ฐœ๋ฐœ์ž ๋งˆ์Œ์ž…๋‹ˆ๋‹ค.

๋‚ ์งœ+๋นŒ๋“œ์ˆซ์ž ์ด๋Ÿฐ ์‹์œผ๋กœ ๋นŒ๋“œ๋ฒ„์ „์„ ์ž๋™ํ™” ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๊ณ ?! (yyyymmdd + 20)

๋นŒ๋“œ ํ•  ๋•Œ๋งˆ๋‹ค ์ˆซ์ž๋ฅผ ์˜ฌ๋ฆฌ๊ฒŒ ์ž๋™ํ™” ์‹œํ‚ค๋Š” ๋ฐฉ์‹๋„ ์žˆ๊ณ ?! (1, 2, 3, ....)

๋‚ด๋ง˜๋Œ€๋กœ์ž…๋‹ˆ๋‹ค!

 

 

๋‹ค์Œ ์ฝ”๋“œ๋Š” ๊ทธ๋ƒฅ ์•ฑ ๋ฒ„์ „๊ณผ ๋นŒ๋“œ ๋ฒ„์ „์„ ์ถœ๋ ฅ์‹œํ‚ค๋Š” 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 ""
    }
}

 

 

๋นŒ๋“œ ๋ฒ„์ „ ์ž๋™ํ™”

๋นŒ๋“œ ๋ฒ„์ „์„ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ๋‹ค๊ฐ€ ํ•˜๋‚˜ํ•˜๋‚˜ ํƒ€์ดํ•‘ํ•˜๋Š” ๊ฒƒ์ด ๊ท€์ฐฎ์ž–์•„์š”!? ๊ทธ๋ฆฌ๊ณ  ์ˆซ์ž ๊นŒ๋จน์œผ๋ฉด ์–ด๋–กํ•ด์š”!

 

1. Run Script ์ถ”๊ฐ€

2. ์Šคํฌ๋ฆฝํŠธ ์ถ”๊ฐ€

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

๋นŒ๋“œํ•  ๋•Œ๋งˆ๋‹ค ์ˆซ์ž๊ฐ€ ์˜ฌ๋ผ๊ฐ€์„œ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

 

 

๊ทผ๋ฐ ๋นŒ๋“œ ์˜ค๋ฅ˜ ๋‚จ...

Command PhaseScriptExecution failed with a nonzero exit code

๊ทธ๋Ÿผ ์ด์ œ ๋งˆ์ง€๋ง‰ ์ค„์— 'agvtool next-version -all' ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ์ž˜ ๋œ๋‹ค.

 

๊ทผ๋ฐ ์ด๋Ÿฌ๋ฉด ๋˜ ์•„์นด์ด๋ธŒํ•  ๋•Œ ์˜ค๋ฅ˜๋‚จ..... 

์ด์œ ์—†์ด archive canceled๊ฐ€ ๋œจ๋Š”๋ฐ, ๊ทธ ์ด์œ ๋Š” agvtool์ด ์•„์นด์ด๋ธŒ๋ฅผ ์ค‘๋‹จ์‹œํ‚จ๋‹ค๋„ค์š”?! (๋‚ด๊ฐ€ ์ดํ•ดํ•œ ๊ฒŒ ๋งž๋‚˜?)

remove ํ•˜๋ฉด ์•„์นด์ด๋ธŒ๊ฐ€ ์ž˜ ๋œ๋‹ค๋„ค์š”.

๊ทผ๋ฐ removeํ•˜๋ฉด ๋นŒ๋“œ ์˜ค๋ฅ˜๊ฐ€ ๋˜ ๋– ์š”.

์ด๊ฒŒ ๋ชจ ๋ƒ ๊ณ  ์š” ใ… ใ… ใ…  ๐Ÿ˜ฑ๐Ÿ˜ฑ๐Ÿ˜ฑ๐Ÿ˜ฑ๐Ÿ˜ฑ๐Ÿ˜ฑ

 

๊ฒฐ๊ตญ ๋นŒ๋“œ๋ฒ„์ „ ์ž๋™ํ™”๋Š” ํฌ๊ธฐํ•˜๊ณ  ์ž„์‹œ๋ฐฉํŽธ์œผ๋กœ ์ˆ˜๋™์œผ๋กœ ์˜ฌ๋ ค์ฃผ๋Š” ์ค‘์ธ๋ฐ์š”.

์•„์‹œ๋Š” ๋ถ„ ์ ญ์•Œ ์•Œ๋ ค์ฃผ์„ธ์š”.

 

์ œ๊ฐ€ ๋นŒ๋“œ๋ฒ„์ „์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๊ฒŒ ๋œ ์ด์œ ๋Š”์š”....

QAํ…Œ์Šคํ„ฐ๋ถ„๋“ค์ด ๋นŒ๋“œํ•  ๋•Œ๋งˆ๋‹ค ๋กœ๊ทธ์•„์›ƒ์‹œํ‚ค๋ฉด ์•ˆ๋˜๋ƒ๊ธธ๋ž˜ ์ข€ ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค.

์ €๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์ด์ „ ๋นŒ๋“œ๋ฒ„์ „์„ ์ €์žฅํ•ด๋†“๊ณ  ๋นŒ๋“œ๋ฒ„์ „์ด ๋ณ€๊ฒฝ๋˜๋ฉด ๋ฐ”๋กœ ๋กœ๊ทธ์•„์›ƒ์‹œ์ผฐ๋Š”๋ฐ, ์ข€ ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ์„๊นŒ์š”...

 

ํ•œ์ˆจ๋งŒ ๋‚˜์˜ค๋Š” ๋นŒ๋“œ ๋ฒ„์ „...