2013-01-10 81 views
3

我使用this tutorial在我的應用程序中創建一個簡單的設置包。 問題是我想要在發佈版本中完全隱藏設置,並且找不到一種方法。我讀過this question,但它對我仍然不清楚。顯示設置僅用於調試模式

在此先感謝

我設法做到這一點從目標中移除Settings.bundle並加入這個腳本構建階段:

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

但仍然有問題。如果我刪除應用程序,然後在釋放方案模式下啓動它,則不會顯示設置包。然後,我更改爲Debug Scheme並重建,出現設置,但是如果再次切換到Release,設置仍然存在,所以看起來如果將設置添加到發佈應用程序,我永遠不會再刪除該包。是對的嗎?

回答

5

如果您使用設置包進行設置,則需要在發佈配置中將其從構建過程中排除。一個#ifdef DEBUG宏只會幫助你爲你想從編譯中排除的代碼 - 它不會幫助排除設置包。

您需要添加一個構建階段以根據您使用的構建配置包含/排除設置包。請查看How can I conditionally include a file based on build configuration in Xcode?以獲取幫助。

+0

感謝您的回答!我現在就處理這件事。 – Chompas

+0

它工作。但我有問題。我從目標中刪除了Settings Bundle,並使用了我在上面添加的腳本在我的問題中。問題是,如果我在Debug中然後在Release中構建,那麼Settings Bundle不會消失,所以如果我犯了一個錯誤並將它發佈到生產環境中,我將永遠無法再移除設置包了。 – Chompas

+1

構建到模擬器不會刪除以前在模擬器中構建的文件。這也適用於設備上的設備構建。但是,隻影響運行而不影響構建本身 - 爲不同配置構建的文件存儲在〜/ Library/Developer/Xcode/DerivedData//Build/Products/內的不同文件夾中。所以這個額外的文件將不會出現在您構建的任何存檔中。商店提交是基於檔案。 –