2011-07-06 118 views
3

我是比較新的OS X開發(使用的XCode)最佳實踐向後兼容性

我最近測試的應用程序,我一直工作在一個朋友的MacBook,並遇到了一個問題。

我在運行Snow Leopard 10.6.5的MacBook上構建了應用程序,而我朋友的Mac運行的是早期版本(我認爲Leopard 10.5.x)。該應用程序沒有啓動,只是顯示一條消息說操作系統對於應用程序來說太舊了。

該應用程序本身非常基本,不需要任何第三方庫或API。

確保可以使用相同安裝程序的最佳方法是什麼?我不需要處理比10.4更早的東西。

回答

5

您需要將項目或應用程序的Mac OS X部署目標設置(密鑰名稱:MACOSX_DEPLOYMENT_TARGET)更改爲您想要支持的最舊操作系統。

這裏是如何改變基本的構建設置一個目標文件:http://developer.apple.com/library/mac/documentation/ToolsLanguages/Conceptual/Xcode4UserGuide/Building/Building.html#//apple_ref/doc/uid/TP40010215-CH9-SW2

這裏是一個鏈接的文檔以更多信息來建立一個操作系統的多個版本。 我無法找到在線鏈接,因此這是到本地安裝文檔的鏈接。 file:///Library/Developer/Documentation/DocSets/com.apple.adc.documentation.AppleiPhone4_0.iPhoneLibrary.docset/Contents/Resources/Documents/documentation/DeveloperTools/Conceptual/XcodeProjectManagement/210-Building_Products/building.html#//apple_ref/doc/uid/TP40002693-SW38

下面是摘錄:

您可以開發可部署的軟件,並從不同版本的iPhone OS或Mac OS X的,包括從一個不同的版本需要的功能優勢你正在開發。這種能力被稱爲交叉開發。

爲了利用交叉開發,您必須安裝適用於您計劃定位的操作系統版本的Mac OS X SDK。然後,在您的項目中,指定在構建產品時使用哪個SDK。您還可以指定軟件必須運行的最早的Mac OS X版本。

在某些情況下,Apple會將即將發佈的操作系統版本的SDK作爲種子發佈,允許您在將應用程序與未來版本的Mac OS X一起發佈給公衆之前進行準備。

重要提示:Xcode中的交叉開發需要原生目標。

要設置您的Xcode項目指定多個Mac OS X的版本中,採取以下步驟:

選擇一個SDK。在組&文件列表中選擇您的項目,然後選擇「文件」>「獲取信息」。在Project Info窗口的General窗格中,從Base SDK for All Configurations彈出式菜單中選擇SDK。當您選擇一個SDK時,Xcode將針對與指定版本的操作系統相對應的一組頭文件在您的項目中構建目標,並鏈接該SDK中的存根庫。這使您可以在開發計算機上構建可在SDK所針對的操作系統版本上運行的產品。您的軟件可以使用系統版本中可用的功能,包括您選擇的功能。

您還可以通過Base SDK(SDKROOT)構建設置指定Base SDK。

選擇部署版本Mac OS X.如果您的軟件必須在一系列操作系統版本上運行,請爲每個需要一個目標的單個目標選擇一個Mac OS X部署操作系統。部署操作系統標識軟件可運行的最早系統版本。默認情況下,它被設置爲與SDK版本對應的操作系統版本。
要設置目標的部署版本:

a。在&文件列表中選擇目標並打開一個信息窗口。點擊Build打開Build窗格。

b。查找部署目標(MACOSX_DEPLOYMENT_TARGET)或iPhone OS部署目標(IPHONEOS_DEPLOYMENT_TARGET)構建設置(取決於您正在開發哪個平臺),並從「值」列的彈出式菜單中選擇部署操作系統。

對於每個目標,提供一個考慮所選SDK的前綴文件。要使用SDK中的傘形框架頭作爲前綴文件,請將相應的#include指令添加到目標的前綴文件中,而不是直接爲傘形框架頭設置前綴頭路徑。 成功開發用於Mac OS的多個版本的軟件還有很多。有關更多信息,請參閱SDK兼容性指南

+0

對不起,我花了這麼長的時間來接受這個答案。直到最近還沒有完全意識到這個網站的工作原理。你的答案是有用的。謝謝 – unsynchronized