根据构建配置定义“设置”分发包

时间:2012-07-06 17:11:54

标签: ios xcode cocoa-touch settings.bundle

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

我在XCode中定义了TEST和PROD方案(不同的构建配置),我希望为这些构建配置定义不同的Root.plist。怎么办呢?

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

请告知。

5 个答案:

答案 0 :(得分:10)

我用这种方式解决了这个问题:

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

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

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)完成后,只需运行不同的方案即可看到所需的结果。

答案 1 :(得分:9)

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

Settings Bundle Target Membership

答案 2 :(得分:3)

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

步骤

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

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

项目中创建这些组:

Settings
  debug
  production

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

以您最喜欢 wide 设置页面的方式编辑.plist(通常,Debug版本会有更多设置)。

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

生产文件夹中的Settings.bundle添加到项目中的生产组(不要将其添加到任何目标),因此您拥有此结构

project group structure

确保将{{1>}的添加到任何目标

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

复制捆绑资源阶段后添加运行脚本阶段

.plist

注意:我有两个构建方案:Release和Debug。我用引号将路径包装起来,因为我的目标名称带有空格。

答案 3 :(得分:1)

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

答案 4 :(得分:0)

简单的方法是,

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

这将允许您在需要时进行更多可自定义的设置