一涮较、描述
- 本文是介紹迁筛,如何通過將Shell腳本加入到Xcode中,編譯后會自動獲取svn版本號豪嚎,并將獲取到的版本號寫入項目的build里面,你可以通過代碼來獲取項目的build號(即獲取svn的版本號)谈火。
二侈询、我在項目中的應(yīng)用截圖
其中 版本號中的 8538 就是獲取到的svn版本號
IMG_1325.PNG
三、自動獲取svn版本號步驟:
-
1.在target --> build Phases -->點左上角的加號 -- > 選擇 New Run Script Phase堆巧。 如圖:步驟1.png
- 2.將 腳本代碼 拷貝進去
cp ${PROJECT_DIR}/你的項目名稱/Info.plist ${PROJECT_DIR}/你的項目名稱/Info.plist
version=`svn info | grep "Last Changed Rev:" | awk '{print $4}'`
/usr/libexec/PlistBuddy -c "Set:CFBundleVersion $version" "$INFOPLIST_FILE"
如圖:步驟2.png
- 3.然后編譯一下 就可以了(電腦上先安裝了svn ,工程已經(jīng)和svn關(guān)聯(lián)了)妄荔。你可以在info.plist 中查看版本信息,或者在Tagrget --> general 中查看谍肤。如果build中已經(jīng)獲取了svn 的版本號那就成功了啦租,不需要繼續(xù)看了。如果 不成功的話荒揣,那就繼續(xù)將文章往下看
四篷角、未獲取到svn 版本號,可能的原因
1. 如圖:
未獲取版本.png
未獲取版本.png
這種情況就是編譯后依然無法獲取到svn 版本號系任。
- 出現(xiàn)這種情況時恳蹲,就是 本地的svn 庫沒有升級虐块。 你可以在終端上先進入項目的目錄(cd 將文件夾 拖進終端就行了),然后輸入命令:svnversion -c |sed 's/^.://' |sed 's/[A-Z]$//' 如果你的svn 版本過低的話就會出現(xiàn)下面圖中的提示:svn版本太低.png
這個時候嘉蕾,你只需要 執(zhí)行 svn upgrade命令更新svn 就新了贺奠,這個時候再用剛才的命令就可以獲取到svn 的版本號了。如圖(8541就是獲取到的svn版本號):
F528880B-9322-4181-B14C-873D43B7F3C2.png -
然后再回到項目中重新編譯一下就可以 獲取到svn版本號了错忱,如圖:
獲取成功.png
可以看到儡率,在xcode 被寫入的build 版本號(8541)跟我們在終端上用命令獲取到的版本號是一致的。
2.獲取成功后以清,不能提交代碼的問題
報錯原因
- 即使你獲取到了svn 版本號儿普,但你是提交代碼的時候不讓你提交代碼,會報一個錯誤掷倔,說 你的客戶端版本太低眉孩,讓你升級客戶端。
解決辦法
- 關(guān)閉svn工具(cornerstone),重新打開svn工具勒葱,再次提交浪汪。
- 如果關(guān)閉工具還是不能提交的話。去網(wǎng)上下個新版的svn 工具(cornerstone)错森,重新 checkOut 代碼吟宦。這個時候篮洁,會有個坑涩维,因為 你checkOut 的代碼路徑換了,你還得重新升級一下 svn 本地庫(執(zhí)行 svn
upgrade 命令)袁波,否者還是不能獲取svn 版本號寫入build中瓦阐。升級完畢后,再次編譯項目就可以獲取svn版本號了篷牌,如果再次提交代碼 還是報之前那個 客戶端版本過低的錯誤睡蟋,關(guān)閉svn 工具,重新打開就可以了枷颊。
五戳杀、補充,通過代碼獲取項目的版本號和build號
// 獲取版本號
NSString * currentVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
// 獲取build號:
NSString * currentBuild = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
到此夭苗,xcode 自動獲取svn版本號寫入到build中就完成了信卡。如有其他更好的辦法獲取版本號或者是還有其他情況獲取不到svn版本號的歡迎在評論下補充,謝謝题造。