最好的 Xcode 自動產生版本號碼技術,xcode版本號碼

來源:互聯網
上載者:User

最好的 Xcode 自動產生版本號碼技術,xcode版本號碼

在 bloglovin ,我們使用自動產生版本號碼來設定Xcode,使當前的版本號碼為在Git活躍的分支上

的提交數。它一直正常工作著,但我們的技術也不是一帆風順的。

糟糕的老方法

我們使用的技術是來自一個叫 “Cocoa is my Girlfriend”1 的網友發表的一篇文章,真是個不可

原諒的名字。它工作原理如下:

  1. 運行一個指令碼拿到Git提交數並把它輸出到一個 “infoplistwhatever.h” 檔案中.這個檔案名稱

      是什麼並不重要。

  2. 在Xcode中選擇 Target 中的 build Setting,在Packaging 設定支援 “Preprocess Info.plist

      File” ,並設定 “Info.plist Preprocessor Prefix File” 的值為Step1:中的檔案名稱。

  3. 在Setp1中的 "infoplistwhatever.h“ 檔案得到的git提交數的值或者能達到這效果的其他值,

      讓它作為預先處理變數 custom_build_number 的值。

  4. 在Xcode 的 Info.plist 中使用 custom_build_number 替換現在的版本號碼。

雖然這種技術可以正常工作,但它有幾個非常令人討厭的缺點:

  1. 每次提交改變數目後的產生都會弄髒Git。

  2. 如果你不想弄髒Git,你必須忽略 “Preprocess Info.plist File” 。

  3. 如果你忽略了前置處理器的plist檔案,你必須手動建立的一個初始設定檔案,否則在

    Xcode上第一次產生將會失敗(除非你不把你的 ”.gitignore“ 檔案提交到Git 倉庫上,

      讓原始值繼續追蹤檔案現在的狀態)。

  4. 版本號碼將不會更新,除非您手動清理和重建。這是因為在Xcode 用一種不可能被其

      它機制清理的方式緩衝了 Info.plist 。在這周圍我也嘗試了很多:產生預動作方案,

      其他的運行指令碼等。也沒有想到其它的方式,只有手動清理和重建,同時也失去了

     自動化佈建的目的。

最可行的方法

經過大量的Google搜尋,我搜到一篇文章的匿名評論,而且評論中提到的技術表現更好些。它

避免了我們之前的技術所有的缺陷,而且更容易設定。你需要做的就是支援該技術,在

”build phase“ 的 “Copy Bundle Resources” 後面添一個 "run script" 指令碼。

 指令碼代碼:

## Set the build number to the current git commit count.# If we're using the Dev scheme, then we'll suffix the build# number with the current branch name, to make collisions# far less likely across feature branches.# Based on: http://w3facility.info/question/how-do-i-force-xcode-to-rebuild-the-info-plist-file-in-my-project-every-time-i-build-the-project/#git=`sh /etc/profile; which git`appBuild=`"$git" rev-list --all |wc -l`if [ $CONFIGURATION = "Debug" ]; thenbranchName=`"$git" rev-parse --abbrev-ref HEAD`/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $appBuild-$branchName" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"else/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $appBuild" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"fiecho "Updated ${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"

這個指令碼使用 PlistBuddy 命令列工具來編輯 /foo/DerivedData/bar(也是Target的組建目錄)

目錄下的 Info.plist 的版本號碼。這就是為什麼版本號碼變化時Git不會被弄髒。每次產生它都會更

新了版本號碼,不只是一個總的清理後的第一次產生,而且和你是否在 Info.plist 頁面也沒有關係。

 

上面的代碼是在匿名評論者代碼上做了一些修改。它使用Git提交計數的版本號碼,但是如果它檢測

到我們在Xcode使用調試組建組態,它會在版本號碼後加上當前分支的名字尾碼。這避免了在並行

開發中不同分支版本號碼潛在的衝突2。

 

2014年9月14日-更新Johan庫爾,可以說是在互連網上最酷的名字,他糾正了我的新運行指令碼

的一些潛在的問題。上面的指令碼也已經更新。

 

          雖然不是一個大的問題,我不喜歡這個特定的產生,這將會導致難以識別的崩潰日誌。

          這種在版本號碼後面加尾碼的方法應該可以解決這個問題。

  原文連結: http://blog.jaredsinclair.com/post/97193356620/the-best-of-all-possible-xcode-automated-build    
想搞ios上iphone的開發,發現教程很多Xcode版本不同,要怎解決

Xcode版本雖然經常更新,但是準系統還是一樣的,重點是語言學好就行了。

就像windows系統,雖然經常更新,但是新版本不需要你學一樣會用,所以這個擔心是多餘的
 
問一下,我現在裝mac os 106版本,用什版本Xcode 與 sdk 好一點,最好給個

推薦你上獅子系統
因為新的SDK 出來了

10.6 系統只能使用XCODE 3 4

不能開發IOS 5.0的東西

不過現在主流已經是5.0了

所以如果你想搞開發的話

推薦你安裝獅子系統 才能享受最新功能

如果你一定要 雪豹系統開發的話

download.chinamac.com/mac7647.html
這個

不過強烈不推薦
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.