2012-10-18 128 views
1

這是一個出於興趣而提出的問題,所以請儘可能提供有關您答案的信息。如何使iOS應用程序在iPhone 3GS及更高版本上工作,適用於iOS 5.1和iOS 6?

我最近更新了Xcode到4.5,並失去了對iOS SDK 5.1的訪問。使用幾個SO帖子中描述的方法(使用以前的Xcode安裝程序的圖像),我再次添加了iOS SDK 5.1。

我想用我的應用程序支持的環境是iPhone 3GS,iPhone 4,iPhone 4S和iPhone 5.很明顯,iOS SDK 5.1和6.0都是如此。這些要求的推薦構建設置是什麼?

現在我在6.0上設置了Deployment Target上的5.1,Base SDK,armv7和armv7上的體系結構。它是否正確?

現在,我相信iOS SDK 5.1並未針對armv7s(iPhone 5架構)進行編譯。我如何確保爲iOS 6.0編譯的代碼也適用於iPhones < 5?目前我正在收到指向iOS 5.1 SDK的鏈接器錯誤ld: file is universal (4 slices) but does not contain a(n) armv7s slice,但未檢查Build For Active Architectures Only。我如何確保在發佈到App Store時,應用程序仍將在iOS SDK 5.1上運行。它似乎與arm 5.1一起編譯armv7s - 這是行不通的。

任何幫助,非常感謝。

回答

0

您根本不需要下載SDK 5.1。 SDK 6.0包含SDK 5.1包含的所有庫和頭文件,以及iOS6的新增庫和頭文件。

請務必理解SDK版本,您的應用將兼容的iOS版本以及您爲其構建應用的架構之間的差異。

編譯SDK 6.0並不意味着您的應用只能在iOS6上運行;這意味着您的應用程序將能夠在iOS上從您在IOS_DEPLOYMENT_TARGET中設置的版本運行到SDK對應的版本,即6.0。

所以,如果你想你的應用程序將與iOS 5.1及以上版本兼容,你仍然使用基地SDK 6.0編譯它不需要SDK 5.1都:你只需要設置Deployment Target 5.1和Base SDK在6.0上(就像你在你的問題中說的那樣),所以你不需要SDK 5.1,無論如何編譯iOS6,iPhone5和armv7s都是無用的(它不包含必要的頭文件,庫和體系結構,這是爲什麼SDK 6.0已經發布並且是必要的)。

使用舊版SDK(如您單獨下載)與最新版本的Xcode一起使用可能會導致您遇到問題,並且更重要的是,不允許您爲iOS版本編譯高於SDK版本的應用程序你的情況5.1)。所以使用SDK 6.0,即使你想你的應用程序兼容開始iOS 5.1。


有關您使用(基地SDK)的SDK版本之間的區別的詳細信息,部署目標,併爲您的應用程序支持的IOS版本和架構,蘋果文檔在閱讀SDK Compatibility Guide說詳細解釋這一切。

0

在將Deployment Target設置爲5.1時您是正確的,您可以將體系結構保留在ARMv7和ARMv7上。

您不想指向5.1 SDK,只需使用iOS 6 SDK。只要確保不直接調用任何僅支持iOS 6 SDK的方法或類。

部署目標是這裏的關鍵,它定義了運行此應用程序所需的iOS的最低版本,因此將其設置爲5.1將使您的應用程序運行於5.1及更高版本。

相關問題