若是你有多人協同開發 Mac/iOS 專案,並且有使用版本控制系統的話,一定會在合併 Xcode 專案檔時吃到不少苦頭,一個不小心就會誤刪某些檔案的參照,或是重複某些檔案的參照。

最近發現一個好用的 script,可以用它來幫忙「根據檔名排序」專案檔裡頭的檔案。原本你的專案可能是混雜了檔案與群組資料夾,但經過這個 script 排序之後,專案會變成所有的群組資料夾排在最前面,接著才是檔案,而且群組資料夾裡頭的內容也會被排序。

因為被排序過,所以在合併不同版本的時候,就可以容易看出哪些項目是新增或刪除,若是不小心重複參照了某些檔案,也比較容易找出來。

這個 script 名叫 sort-Xcode-project-file,假設你把它跟 MyApp.xcodeproj 檔放在同一目錄,那你可以手動執行以下指令來排序(MyApp 請自行代換成你的 app 名稱)

perl sort-Xcode-project-file MyApp.xcodeproj/project.pbxproj

或是修改 Scheme 把它加到 Build → Post-actions,每次編譯專案之後就自動排序一次,免去手動下指令的麻煩。如果要這樣做的話,script 呼叫方式要改成以下(註:我把這個檔案放在專案根目錄下的 script 子目錄):

perl "${PROJECT_DIR}/script/sort-Xcode-project-file" "${PROJECT_FILE_PATH}/project.pbxproj"

(用雙引號把路徑包起來,路徑中有空白才不會出問題)

** 記得「Provide build settings from」要選擇你的 Target! **

1

使用小提示:

  • 最好從一開始就使用它,可以免去後續許多合併的麻煩
  • 要好好規劃群組資料夾,檔案盡量放到群組資料夾裡頭