我在设置包中定义了我的Root.plist,它出现在设备设置中。现在,我希望它根据我构建项目的环境类型显示不同的选项。
我在XCode中定义了TEST和PROD方案(不同的构建配置),我希望为这些构建配置定义不同的Root.plist。怎么办呢?
我们是否可以定义2个plists并使用不同的构建配置链接它们,或者我们可以根据所选的构建配置或方案在编译时修改root.plist。
请告知。
答案 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。
答案 2 :(得分:3)
我使用过@abhinav方法,但稍微修改了它以适应我项目的需要。我们有两个目标,但两者都用于构建单独的应用程序。
在项目目录中的 filesystem 上创建文件夹结构:
<project_folder>/Settings/debug
<project_folder>/Settings/production
在项目中创建这些组:
Settings
debug
production
创建Settings.bundle
,将其添加到调试组并将其保存到调试文件夹。 (不要将其添加到任何目标)
以您最喜欢 wide 设置页面的方式编辑.plist
(通常,Debug版本会有更多设置)。
将捆绑包从调试文件夹复制到生产文件夹
将生产文件夹中的Settings.bundle
添加到项目中的生产组(不要将其添加到任何目标),因此您拥有此结构
确保将{{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 网络
这将允许您在需要时进行更多可自定义的设置