2009-08-31 53 views
25

我知道這個問題的部分被問了幾個變化,但我想確保我說得對。基地與活動與部署目標

這裏是我的假設和理解,我想知道他們在提交前是否正確。

我的應用程序假定所有OS支持的功能,所以我應該:

  1. 設置活動的SDK是最新的(目前SDK 3.0)。
  2. 將部署目標設置爲較低我想支持 - iPhone 2.0及更高版本?
  3. Base SDK的用途是什麼?我應該忽略它,如果我選擇活動SDK是不同的,我在哪裏可以看到項目設置中的活動SDK?

最後一個問題 - 蘋果允許選擇iPhone OS 2.0作爲部署目標嗎?

由於提前,

順便說一句 - 我的主要的原因這個問題,一個是因爲當與先前版本的SDK蘋果編譯似乎已經釋放了的UIImageView動畫數組的內存出現問題時,這個動畫保存多時間用法。這是一個已知問題,即是(通過簡單地設定的UIImageView動畫陣列爲nil)

回答

28

的基礎,活SDK之間的區別在於,前者是用於項目的默認SDK集,後者是固定SDK 3.0您目前正在構建的SDK。因此,您的Active SDK可能成爲Base SDK,此時XCode將使用您爲該項目指定的SDK。

爲了建立你的儘量多的潛在設備的應用程序,你是正確的:

  • 設置基本SDK到最新的SDK可能(3.0,3.0.1)
  • 設置部署目標到最早的SDK可能的(2.0)

蘋果並允許您指定iPhone 2.0的部署目標,但要記住iPhone 2.0後,你會不會提供給您以供發佈任何API或框架默認。有techniques to use features from later SDKs,但它們不平凡。

+6

不要吝嗇是一個堅持己見,但OP問及 「基地SDK」 和「部署目標「。您是否使用「Active SDK」來表示「部署目標」? Apple使用術語「Base SDK」和「Deployment Target」,我理解的意思是:MAX SDK =「Base SDK」和MIN SDK =「部署目標」。 – jww 2012-11-15 09:58:58

8

您應該將Base SDK構建設置設置爲包含您打算使用的所有功能(通常是最新的可用SDK)的最新SDK,並將「iPhone部署目標」構建設置設置爲最早版本您想要運行的操作系統的版本。

然後,您需要確保在運行時檢查早期操作系統上可能不存在的任何功能。

+0

清晰簡單的答案 – 2014-01-28 18:49:39

3

「基礎SDK」是您應用程序可以支持的最大SDK。這裏有一個嚴格的限制 - 你不能選擇未來,未發佈的SDK。

「部署目標」是您願意支持的最低SDK。你願意去多遠的時間。

Xcode似乎對「部署目標」產生虛假依賴。例如,我無法使用Xcode 4.5.2在iOS 5.1.1 iPod上開發(Xcode 4.5。2與iOS 6.0配對),即使在此安裝中安裝了4.3,5.0和5.1 API和模擬器。我需要在iOS 6.0 iPhone中使用模擬器或插孔。

蘋果公司正在玩的遊戲似乎也導致了應用程序的問題。我購買的Elements Elements不會通過iTunes同步到iPod,因爲Elements需要更新版本的iOS才能運行(它可以在iOS 6.0 iPhone上同步並運行良好)。

我有兩個iPad,一個是4.3。我不寒而慄,認爲它會造成什麼混亂。

1

一般而言;

將BASE SDK設置爲您願意支持和測試的最新SDK。

將部署目標設置爲您願意支持和測試的最低版本的iOS。

如果您碰巧使用部署目標SDK上不可用的Base SDK功能,則應用程序將在運行時在較舊的設備上崩潰,因此測試至關重要。

一個替代/補充過程將使用Deploymate http://www.deploymateapp.com/進行靜態代碼分析來識別問題。

如果你是來自android世界的類比是這樣的;

TargetSDK - >基礎SDK

MinSDK - >部署目標

林特 - > Deploymate