显示设置仅适用于调试模式

时间:2013-01-10 20:51:26

标签: ios debugging macros settings.bundle

我正在使用this tutorial在我的应用中创建一个简单的设置包。 问题是我想在发布版本中完全隐藏设置,我找不到办法。我读过this question但我现在还不清楚。

提前致谢

我设法完成此操作,从目标中删除Settings.bundle并将此脚本添加到Build Phase:

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

但仍有问题。如果我删除应用程序然后在发布方案模式下启动它,则不会显示设置包。然后,我进入调试方案并重建,设置出现,但是,如果然后我再次切换到Release,设置仍然存在,所以似乎如果我添加一个设置到Release应用程序,我永远不能再删除该包。是吗?

2 个答案:

答案 0 :(得分:7)

如果您正在为设置使用设置包,则需要在发布配置中将其从应用的构建过程中排除。 #ifdef DEBUG宏只会帮助您处理要从编译中排除的代码 - 它无助于排除设置包。

您需要添加构建阶段,以根据您正在使用的构建配置来包含/排除您的设置包。请查看How can I conditionally include a file based on build configuration in Xcode?以获取有关此操作的帮助。

答案 1 :(得分:0)

这可以通过运行脚本来完成。

  • 选择项目

  • 选择目标

  • 切换到Build Phases标签

  • Add Build Phase(+)按钮

  • 选择Add Run Script

添加脚本:

if [ "${CONFIGURATION}" == "Debug" ]; then
cp -r "${PROJECT_DIR}/${PRODUCT_NAME}/Settings/Settings_Debug.bundle/Root.plist" "${PROJECT_DIR}/${PRODUCT_NAME}/Settings.bundle/Root.plist"
echo "Debug settings bundle copied"
else
cp -r "${PROJECT_DIR}/${PRODUCT_NAME}/Settings/Settings_Release.bundle/Root.plist" "${PROJECT_DIR}/${PRODUCT_NAME}/Settings.bundle/Root.plist"
echo "Release settings bundle copied"
fi
  

注意:您需要创建3个设置包(Settings.bundle,   Settings_Debug.bundle,Settings_Release.bundle)。这样您就可以在构建后保留实际文件。