2013-06-19 39 views
1

我正在研究通過REST API連接到多個服務的iPhone應用程序。有什麼方法可以在Xcode中覆蓋每個人的構建設置?

有一些服務器爲每個服務(開發,生產等), ,我想切換這些服務器連接通過編譯器標誌沒有修改foo.xcodeproj/project.pbxproj。

我在一個由6位開發人員組成的團隊中,每個人都想連接到不同的服務器組合,但是如果我將這些配置包含在由git管理的project.pbxproj中,這將會很糟糕。

所以我需要更改編譯器標誌與不受git管理的文件。

理想情況下,我想要像Django一樣的本地設置機制。 有沒有辦法用Xcode做到這一點?

謝謝!任何建議是高度讚賞。

+0

你能設置與t相提並論6個不同的目標繼承自己的構建設置,使用項目中的相同文件。它可能會變得棘手,但每個添加文件的人都可以確保將它們添加到所有目標中,並且它應該可以工作。 – Putz1103

+0

感謝您的快速響應! 但我不想這樣做,因爲我們已經有3個目標(iPhone,iPad和另外一個)。 這將是一個混亂18個目標在1個項目文件... – taichino

回答

2

有你的編譯器標誌不在源代碼控制下是一個巨大的紅旗。你如何保證一致構建你的應用程序。 //結束肥皂盒

回答

我將創建一個用戶定義的構建設置的生產和開發服務器。和運行腳本來設置服務器應用程序中的info.plist中使用

  • 添加構建設置REST_Server

enter image description here
enter image description here

  • 添加運行腳本來更新信息。 plist

enter image description here
enter image description here

# ---------------------------- IMPORTANT ---------------------------- 
# You must set RESTServer to something like 'Set by build script' in the file 
# file '<Project Name>-Info.plist' in the 'Supporting Files' group 
# ------------------------------------------------------------------- 
# 
# determin server based on user name 
# 

SERVER=${REST_Server} 

# Only use developer servers for debug never for release 
if [ "$CONFIGURATION" != "Debug" ] ; then 
    exit 
fi 

if [ "$USER" == "gdunham" ] ; then 
    SERVER="gld.nextbigthing.com" 
fi 

if [ "$USER" == "jashmun" ] ; then 
    SERVER="jda.nextbigthing.com" 
fi 

echo $SERVER 

# 
# Set the server info in plist file in the build product not the source tree 
# 
/usr/libexec/PlistBuddy -c "Set :RESTServer $SERVER" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}" 
  • 添加佔位符來的Info.plist

enter image description here

對於所有駭人聽聞的細節在Github上查看我的演示項目 https://github.com/GayleDDS/DemoMultiDeveloper

+0

「讓你的編譯器標誌不在源代碼控制之下是一個巨大的紅旗,你如何保證你的應用程序的一致構建。 我不認爲這是如此危險。我想覆蓋幾個設置參數。當然,基本設置應該被管理。 使用local_settings.py覆蓋參數是使用Django開發Web應用程序的普通方式。 無論如何,你的建議是真棒!這幾乎就是我想要做的! 我不知道PlistBuddy。涼! – taichino

1

您可以使用構建配置(.xcconfig)文件來創建不同的服務器組合。下面是如何配置此爲您的項目很好的解釋:How can I use .xcconfig files in Xcode 4?

每個用戶都可以有自己的.xcconfig文件(S),你可以添加這些.xcconfig文件的.gitignore

+0

謝謝您的信息!關了。 但似乎local.xcconfig必須包含在xcodeproj中指定該文件作爲基本配置。 這意味着我應該在git上管理local.xcconfig。 這是正確的嗎?我該如何處理這個問題? – taichino

+0

你說得對,local.xcconfig文件包含在xcodeproj中,但它不需要在git中。即使這個文件不存在於工作空間中,XCode也能夠構建(當然,只有在Xcode中的項目構建設置中包含了它所需的所有設置) – rakmoh

+0

嗯,如果我不添加local.xcconfig git並將其指定爲基本配置,其他成員無法構建,因爲它們沒有local.xcconfig。 Xcode會投訴「local.xcconfig:沒有這樣的文件或目錄」。我應該怎麼做? – taichino

相關問題