7

我需要在我们的调试版本中有一个 settings.bundle,但不想在我们的版本中有它。我该如何处理?有没有我可以用来从复制捆绑资源构建阶段删除它的运行脚本?

4

3 回答 3

12

找到了。我创建了一个 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
于 2011-03-26T16:36:20.583 回答
5

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

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”

于 2014-06-13T22:11:01.360 回答
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路径更改为您的实际路径

于 2016-12-05T23:32:27.940 回答