Xcode開(kāi)發(fā)中费韭,Version和Build可能總是讓大家迷惑。
其實(shí)Version平時(shí)大家叫做發(fā)布版本號(hào),Build叫做編譯版本號(hào)勾栗。
1 . 發(fā)布app到AppStore時(shí)候:
Build | Version相同 |
---|---|
Build不相同 | 提交構(gòu)建版本成功 |
Build相同 | 提交構(gòu)建版本失敗 |
2 . 列表:
名稱(chēng) | 解釋 |
---|---|
Version | 發(fā)布版本號(hào) |
Build | 編譯版本號(hào) |
Build在plist文件中的key是“CFBundleVersion”路鹰,標(biāo)示(發(fā)布或者未發(fā)布)的內(nèi)部版本號(hào).通常我們用這個(gè)小版本號(hào)可以表示每一個(gè)不同的版本號(hào),即使我們發(fā)布到AppStore上的版本有bug,但同時(shí)我們又不愿意修改大版本號(hào)(Version)我們可以通過(guò)Build來(lái)區(qū)分不同的版本號(hào)
NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
Build版本獲取
NSString *build = [infoDictionary objectForKey:@"CFBundleVersion"];
編寫(xiě)腳本使Archive后自動(dòng)增加build版本號(hào)
如果我們想在Archive后build號(hào)自動(dòng)增長(zhǎng)贷洲,就可以使用到Xcode的run script來(lái)實(shí)現(xiàn),
步驟是:
1 .選中項(xiàng)目的TARGETS
2 .點(diǎn)擊“Build Phases“
3 .點(diǎn)擊左上角的?
4 .選擇”New run script Phase“
5 .會(huì)產(chǎn)生一個(gè)新的Run Script項(xiàng),你會(huì)看到有一個(gè)Shell的黑框框,
6 .將代碼copy到里面就可以了
這段shell腳本的意思就是說(shuō)晋柱,如果當(dāng)前的配置是Debug(Archive時(shí)該值為Release优构,直接在模擬器上運(yùn)行是Debug),就設(shè)置build值為當(dāng)前build值+1.(這里為了測(cè)試就用Debug)
在開(kāi)發(fā)中一搬都是Release,直接把Debug 改為Release,這樣每次打包發(fā)布的時(shí)候就會(huì)自增1.
代碼如下
if [ $CONFIGURATION == Release ]; then
echo "Bumping build number..."
plist=${PROJECT_DIR}/${INFOPLIST_FILE}
#increment the build number (ie 115 to 116)
buildnum=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${plist}")
if [[ "${buildnum}" == "" ]]; then
echo "No build number in $plist"
exit 2
fi
buildnum=$(expr $buildnum + 1)
/usr/libexec/Plistbuddy -c "Set CFBundleVersion $buildnum" "${plist}"
echo "Bumped build number to $buildnum"
else
echo $CONFIGURATION " build - Not bumping build number."
fi
7 .接下來(lái)編譯一下就可以自增了
想看build時(shí)輸出的信息雁竞,可以通過(guò)”View -> Navigators -> Log”來(lái)查看最新的build時(shí)產(chǎn)生的log钦椭。