我已经在设备设置中出现的设置包中定义了我的 Root.plist。现在,我希望它根据我构建项目的环境类型显示不同的选项。
我在 XCode 中定义了一个 TEST 和 PROD 方案(不同的构建配置),我希望 Root.plist 为这些构建配置定义不同的。如何才能做到这一点?
我们是否可以定义 2 个 plist 并将它们与不同的构建配置链接,或者我们可以在编译时根据选择的构建配置或方案修改 root.plist。
请指教。
我已经在设备设置中出现的设置包中定义了我的 Root.plist。现在,我希望它根据我构建项目的环境类型显示不同的选项。
我在 XCode 中定义了一个 TEST 和 PROD 方案(不同的构建配置),我希望 Root.plist 为这些构建配置定义不同的。如何才能做到这一点?
我们是否可以定义 2 个 plist 并将它们与不同的构建配置链接,或者我们可以在编译时根据选择的构建配置或方案修改 root.plist。
请指教。
我是这样解决的:
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) 完成后,只需在不同的方案上运行即可查看所需的结果。
我做了一些类似于@Abhinav 的事情,但我没有使用运行脚本,而是使用文件检查器的目标成员资格部分来确定哪个目标使用哪个 Settings.bundle。
我使用了@abhinav 方法,但稍作修改以适应我的项目需求。我们有两个目标,但都用于构建单独的应用程序。
在项目目录中的文件系统上创建文件夹结构:
<project_folder>/Settings/debug
<project_folder>/Settings/production
在项目中创建这些组:
Settings
debug
production
创建一个Settings.bundle
,将其添加到调试组并保存到调试文件夹。(不要将其添加到任何目标)
.plist
以您希望最宽设置页面看起来的方式编辑(通常,调试版本有更多设置)。
将包从调试文件夹复制到生产文件夹
Settings.bundle
从生产文件夹添加到项目中的生产组(不要添加到任何目标),所以你有这个结构
确保没有Settings.bundle
s 被添加到任何目标
从生产中删除.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
注意:我有两个构建方案:发布和调试。我将路径用引号括起来,因为我的目标名称带有空格。
有条件地捆绑项目(例如不同版本中的设置捆绑)的唯一方法是复制您的目标。只需将正确的包添加到正确的目标,并保持所有代码相同。这是不同的,但从长远来看,它应该对你更好。
简单的方法是,
1 -- 使用现有目标的副本创建不同的目标, 2 -- 在新目标构建阶段 elif [ ${CONFIGURATION} == "Release" ]; 然后 cp -r ${PROJECT_DIR}/Settings/ReleaseHHAppStore/Settings.bundle ${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app fi
如果需要,这将允许您进行一些更可定制的设置