【问题标题】:How can I prevent using the Settings.bundle in Release build v.s. Debug build?如何防止在 Release build vs. 中使用 Settings.bundle调试构建?
【发布时间】:2011-07-22 04:17:54
【问题描述】:

我需要在我们的调试版本中有一个 settings.bundle,但不想在我们的发布版本中有它。 我该如何处理? 是否有我可以使用的 runscript 将其从复制包资源构建阶段中删除?

【问题讨论】:

    标签: iphone debugging release settings.bundle


    【解决方案1】:

    或者,只是不要在“复制捆绑资源”中包含设置捆绑包,并添加构建阶段运行脚本以仅将其包含在某些配置中。

    这是一个运行脚本,它还更新版本并在设置包中构建

    if [ ${CONFIGURATION} == "Debug" ] ; then
        echo "Copying settings bundle..."
        version=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "$SRCROOT/Blah/Supporting Files/Info.plist")
        build=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$SRCROOT/Blah/Supporting Files/Info.plist")
        cp -r "${PROJECT_DIR}/Blah/Supporting Files/Settings.bundle" ${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app
        echo "Updating settings bundle version to ${version}b${build}"
        /usr/libexec/PlistBuddy "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/Settings.bundle/Root.plist" -c "Set :PreferenceSpecifiers:17
    :DefaultValue $version($build)"
    fi
    

    确保将 Blah/Supporting Files 路径更改为您的实际路径

    【讨论】:

      【解决方案2】:

      您可以编写一个脚本来完全删除某个构建配置的设置包。对于目标,在“构建设置”下,有一个运行脚本的选项。这个脚本应该做你需要的:

      BUILD_APP_DIR=${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app
      
      if [ "$CONFIGURATION" == "Release" ]; then
          rm -Rf $BUILD_APP_DIR/Settings.bundle
          echo "Removed Settings Bundle"
      fi
      

      “shell”字段可以读取“/bin/sh”

      【讨论】:

        【解决方案3】:

        找到了。 我创建了一个 RunScript 作为构建阶段的最后一个阶段。 在那里,我删除了设置 plist 中的所有条目并将其替换为版本号。 这样,我可以使用 settings.bundle root.plist 作为我的调试项目的设置(能够定义要使用的测试服务器或任何其他可以在调试构建中指定的东西)。 因此,当您构建调试时,root.plist 就是您所期望的。 当您运行 Release 构建时,内容将被替换为 info.plist 的 CFBundleVersion 信息。所有与调试相关的选项都消失了。

        if [ "$CONFIGURATION" = "Release" ] ; then 
            echo "Replacing $CODESIGNING_FOLDER_PATH/Settings.bundle for 'Release' build"
        
            APPVERSION="`/usr/libexec/PlistBuddy -c \"Print :CFBundleVersion\" \"$CODESIGNING_FOLDER_PATH/Info.plist\"`"
            SETTINGSBUNDLEPATH="$CODESIGNING_FOLDER_PATH/Settings.bundle/Root.plist"
        
            /usr/libexec/PlistBuddy -c "Delete :PreferenceSpecifiers" "$SETTINGSBUNDLEPATH"
        
            /usr/libexec/PlistBuddy -c "Add :StringsTable string 'Root'" "$SETTINGSBUNDLEPATH"
            /usr/libexec/PlistBuddy -c "Add :PreferenceSpecifiers array" "$SETTINGSBUNDLEPATH"
            /usr/libexec/PlistBuddy -c "Add :PreferenceSpecifiers:0 dict" "$SETTINGSBUNDLEPATH"
        
            /usr/libexec/PlistBuddy -c "Add :PreferenceSpecifiers:0:Type string 'PSGroupSpecifier'" "$SETTINGSBUNDLEPATH"
            /usr/libexec/PlistBuddy -c "Add :PreferenceSpecifiers:0:Title string 'Version Information'" "$SETTINGSBUNDLEPATH"
        
            /usr/libexec/PlistBuddy -c "Add :PreferenceSpecifiers:1:Type string 'PSTitleValueSpecifier'" "$SETTINGSBUNDLEPATH"
            /usr/libexec/PlistBuddy -c "Add :PreferenceSpecifiers:1:Title string 'Release:'" "$SETTINGSBUNDLEPATH"
            /usr/libexec/PlistBuddy -c "Add :PreferenceSpecifiers:1:Key string 'appVersion'" "$SETTINGSBUNDLEPATH"
            /usr/libexec/PlistBuddy -c "Add :PreferenceSpecifiers:1:DefaultValue string '$APPVERSION'" "$SETTINGSBUNDLEPATH"
        fi
        

        【讨论】:

        • 为什么不直接删除 settings.bundle?
        猜你喜欢
        • 1970-01-01
        • 2020-03-20
        • 2021-12-02
        • 1970-01-01
        • 1970-01-01
        • 2011-06-12
        • 1970-01-01
        • 1970-01-01
        • 2014-09-02
        相关资源
        最近更新 更多