7

我已经在设备设置中出现的设置包中定义了我的 Root.plist。现在,我希望它根据我构建项目的环境类型显示不同的选项。

我在 XCode 中定义了一个 TEST 和 PROD 方案(不同的构建配置),我希望 Root.plist 为这些构建配置定义不同的。如何才能做到这一点?

我们是否可以定义 2 个 plist 并将它们与不同的构建配置链接,或者我们可以在编译时根据选择的构建配置或方案修改 root.plist。

请指教。

4

5 回答 5

11

我是这样解决的:

1) 将 2 个设置包(一个用于测试,一个用于生产)添加到项目并将它们添加到目标。

2) 在 Runner 目标上添加一个 Run 脚本,以选择性地将所需的设置包复制到构建文件中。

if [IS_PRODUCTION]; then
cp -r ${PROJECT_DIR}/Settings/Prod/Settings.bundle ${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app
fi

if [IS_TEST]; then
cp -r ${PROJECT_DIR}/Settings/Test/Settings.bundle ${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app
fi

3) 完成后,只需在不同的方案上运行即可查看所需的结果。

于 2012-07-06T23:12:41.687 回答
10

我做了一些类似于@Abhinav 的事情,但我没有使用运行脚本,而是使用文件检查器的目标成员资格部分来确定哪个目标使用哪个 Settings.bundle。

设置捆绑目标成员资格

于 2012-12-21T21:38:49.543 回答
3

我使用了@abhinav 方法,但稍作修改以适应我的项目需求。我们有两个目标,都用于构建单独的应用程序。

脚步

在项目目录中的文件系统上创建文件夹结构:

<project_folder>/Settings/debug
<project_folder>/Settings/production

项目中创建这些组:

Settings
  debug
  production

创建一个Settings.bundle,将其添加到调试组并保存到调试文件夹。(不要将其添加到任何目标)

.plist以您希望最设置页面看起来的方式编辑(通常,调试版本有更多设置)。

将包从调试文件夹复制生产文件夹

Settings.bundle生产文件夹添加到项目中的生产组(不要添加到任何目标),所以你有这个结构

项目组结构

确保没有Settings.bundles 被添加到任何目标

从生产中删除.plist您不希望随 App Store 版本一起提供的设置项。

在Copy Bundle Resources阶段之后添加Run Script阶段

if [ "${CONFIGURATION}" = "Release" ]; then
cp -r ${PROJECT_DIR}/Settings/production/Settings.bundle "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app"
fi

if [ "${CONFIGURATION}" = "Debug" ]; then
cp -r ${PROJECT_DIR}/Settings/debug/Settings.bundle "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app"
fi

注意:我有两个构建方案:发布和调试。我将路径用引号括起来,因为我的目标名称带有空格。

于 2016-05-26T16:12:34.370 回答
1

有条件地捆绑项目(例如不同版本中的设置捆绑)的唯一方法是复制您的目标。只需将正确的包添加到正确的目标,并保持所有代码相同。这是不同的,但从长远来看,它应该对你更好。

于 2012-07-06T20:42:10.037 回答
0

简单的方法是,

1 -- 使用现有目标的副本创建不同的目标, 2 -- 在新目标构建阶段 elif [ ${CONFIGURATION} == "Release" ]; 然后 cp -r ${PROJECT_DIR}/Settings/ReleaseHHAppStore/Settings.bundle ${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app fi

如果需要,这将允许您进行一些更可定制的设置

于 2017-08-03T09:41:05.290 回答