1

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

每个服务(开发、生产等)都有一些服务器,我想切换这些服务器以通过编译器标志连接而不修改 foo.xcodeproj/project.pbxproj。

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

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

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

谢谢!任何建议都将受到高度赞赏。

4

2 回答 2

2

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

回答

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

  • 添加构建设置 REST_Server

在此处输入图像描述
在此处输入图像描述

  • 添加运行脚本以更新 info.plist

在此处输入图像描述
在此处输入图像描述

# ---------------------------- 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

在此处输入图像描述

有关所有血腥细节,请参阅我在 GitHub 上的演示项目 https://github.com/GayleDDS/DemoMultiDeveloper

于 2013-06-19T18:22:46.383 回答
1

您可以使用构建配置 (.xcconfig) 文件来创建不同的服务器组合。以下是如何为您的项目配置的很好的解释:如何在 Xcode 4 中使用 .xcconfig 文件?

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

于 2013-06-19T14:54:45.500 回答