有没有办法在Xcode中覆盖每个人的构建设置?

时间:2013-06-19 14:20:54

标签: xcode xcode4

我正在开发一款iPhone应用程序,它通过REST API连接到多个服务。

每项服务都有一些服务器(开发,生产等), 我希望切换这些服务器以通过编译器标志进行连接,而无需修改foo.xcodeproj / project.pbxproj。

我是一个由6名开发人员组成的团队,每个人都希望连接到不同的服务器组合, 但如果我将这些配置包含在由git管理的project.pbxproj中,那将是一团糟。

所以我需要用一个不是由git管理的文件来改变编译器标志。

理想情况下,我想要像Django一样的本地设置机制。 有没有办法用Xcode做到这一点?

谢谢!任何建议都非常感谢。

2 个答案:

答案 0 :(得分:2)

让您的编译器标志不受源代码控制是一个巨大的RED FLAG。如何保证应用程序的一致性构建。 //结束肥皂盒

<强>答案

我将为生产和开发服务器创建用户定义的构建设置。还有一个运行脚本,用于设置要在应用程序info.plist中使用的服务器

  • 添加构建设置REST_Server

enter image description here
enter image description here

  • 添加运行脚本以更新info.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

答案 1 :(得分:1)

您可以使用构建配置(.xcconfig)文件来创建不同的服务器组合。以下是有关如何为项目配置此项的详细说明:How can I use .xcconfig files in Xcode 4?

每个用户都可以拥有自己的.xcconfig文件,您可以将这些.xcconfig文件添加到.gitignore