2011-03-24 54 views

回答

4

您可以編寫一個腳本來爲特定的構建配置完全刪除設置包。對於目標,在「構建設置」下,可以選擇運行腳本。這個腳本應該做你需要的東西:

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 

的「殼」字段可以閱讀「/ bin/sh的」

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 
+0

爲什麼你不只是刪除settings.bundle? – 2012-02-13 18:59:32

+0

刪除包.....沒有考慮過......是否有效? – P5ycH0 2012-04-25 19:16:40

0

或者,只是不包括設置在「複製包資源」捆綁和添加一個構建階段運行腳本,僅包含某些配置。

這裏是一個運行腳本還更新一個版本,建立在設置捆綁

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路徑,無論你實際上是