2012-09-13 42 views
3

我正在爲我的iOS應用程序準備Info.plist。我想仔細設置每個選項。但是,有一些奇怪的變量,例如$ {REGION},$ {APPNAME},$ {EXTRA_ICONS}等等。我猜他們是通過Xcode設置的?

我不希望Xcode混淆值。我可以簡單地設置它們嗎?例如,對於$ {REGION}插入「en」。對於CFBundleDisplayName - 什麼,因爲文檔說:

如果你不打算本地化包,不包括在你的Info.plist文件中此鍵 。包含此密鑰不會影響軟件包名稱的 顯示,但確實會導致性能損失至 搜索此密鑰的本地化版本。

依此類推。我可以簡單地做這個嗎?爲「CFBundleExecutable」插入什麼?我想我必須知道Xcode產生了什麼?

這是可怕的設計,因爲有兩種價值來源:plist本身,以及Xcode內部的一些愚蠢的meta-plist。

回答

5

您的Info.plist文件由Xcode處理,這要歸功於「在Info.plist文件中展開構建設置」(INFOPLIST_EXPAND_BUILD_SETTINGS)構建您的項目設置。

這通常是一個很棒的功能,因爲它可以避免根據您的構建設置和配置有不同的Info.plist,並且避免您在多個位置修改設置。但是,如果你真的不想要,只需在項目或目標的「生成設置」中關閉此設置。


我建議你保持反正此設置,讓您的構建設置中選擇的值會在你的Info.plist報告,如果你需要改變的東西一樣,例如應用程序的名稱,將其更改直接在Build Settings中。這樣,您將保持構建設置和Info.plist文件之間的一致性,而不必擔心會出現不一致的配置。

一個很好的例子就是你自己在自己的問題中編寫的一個例子:Info.plist文件的CFBundleExecutable條目。此條目通常必須包含您的包中的可執行文件的名稱(以便iOS知道在您的.ipa包中啓動哪個可執行文件)。

該值通常取決於您的構建設置,通常是EXECUTABLE_NAME構建設置。如果您更改了生成的可執行文件的名稱(在您的項目或目標的「生成設置」中),並且您在Info.plist中爲該值添加了一些常量字符串,則顯然需要將此密鑰更改爲新名稱由Xcode生成的可執行文件。如果您使用${EXECUTABLE_NAME}作爲此鍵的值(並且保持Info.plist在項目設置中處於打開狀態),則Xcode會替換它,確保Info.plist與您的Build Settings一致,並且與它生成的可執行文件的名稱。

我沒有看到任何利用Xcode禁用Info.plist文件的處理階段的好處;您應該利用它並繼續使用${xxx}構建變量,以便在編譯時動態替換它們的實際值Xcode,從而確保一致性並避免錯誤。

+1

我想知道,是否有一種方法可以在不添加額外的開發機器信息(如DTSSDKBuild等)的情況下保留'$ {xxx}'變量替換。在我的情況下,我不瞄準IOS或應用程序商店,但是當啓用INFOPLIST_EXPAND_BUILD_SETTINGS時,我得到了額外的鍵。 – hoss