2014-10-01 45 views
1

與許多人一樣,我需要使用舊版iOS SDK構建應用程序。舊版iOS模擬器是否與iOS SDK相同?

當我通過Xcode的喜好下載iOS模擬器的舊版本,這是一樣的下載SDK的先前版本?

舉個例子,如果我今天6(iOS版8剛剛發佈)下載的XCode,我得到了iOS 8 SDK和模擬器。如果我需要編譯適用於iOS 7的應用程序並使用XCode偏好設置中的下載功能來獲取iOS 7.0模擬器,那麼iOS 7.0 SDK中是否包含這些功能?

在我的腦海中,iOS 7.0模擬器是一款應用程序。 iOS 7 SDK是否附帶它,以便您可以構建適用於iOS 7兼容性的應用程序?

+1

你是什麼意思「拉一個SDK的早期版本」? – rmaddy 2014-10-01 16:00:54

+0

爲上述問題添加了示例。 – rynmrtn 2014-10-01 16:55:32

回答

1

我想我明白你問什麼,答案是否定的:iOS的模擬器被命名爲他們模擬硬件和iOS的版本,它們運行;例如iPhone 5s(7.1)

Xcode 6僅附帶iOS 8 SDK。這就是「Base SDK」(SDKROOT)。您可以將其視爲「最佳編譯目標」或「最佳支持版本」 - 這是您編譯的SDK版本。 「部署目標」(IPHONEOS_DEPLOYMENT_TARGET)定義您支持的iOS支持版本的最低。隨着您的應用程序的成熟以及兩者之間的距離的擴大,您需要對受支持的功能進行更多,更多的運行時檢測,或者處理API差異,例如,較新的平臺首選較新的調用,而較舊的平臺則不存在。

針對(基地SDK)7.1編譯的應用程序將在iOS 8.0設備上運行。您可以將其視爲「iOS 7模式」。一個更好的例子是從iOS6移動到7 - iOS6.1上編譯的應用程序「基礎SDK」在iOS7設備上運行,但它們看起來像舊的UI風格。當他們被編譯對iOS7.x「基礎SDK」,他們看起來適合iOS6或7.

我有一個應用程序,我支持作爲「基本SDK」7.1此刻,我設法複製舊的7.1 SDK並針對它進行編譯。老實說,它比它的價值更麻煩,恕我直言。如果你仍然有Xcode 5,並且目前只需要7.1,那麼你可能只是想使用它。鑑於iOS 8.0已經發布,並且如果您的應用程序是新的,那麼您可能根本不需要擔心這一點 - 您可能只想確保您支持iOS 7.x,這就是AOK。

鑑於(對於例如)具有7.0部署目標和8.0鹼SDK應用程序,任何兼容性問題是你來處理。有些方法可能會有不同的表現(儘管Apple努力維護API兼容性),其他方法將被棄用或者不同。文檔在闡明差異和棄用方面做得很好。

+0

所以,如果我正在閱讀這個權利 - iOS 7 SDK不需要將部署目標設置爲iOS 7.x? – rynmrtn 2014-10-01 17:40:34

+0

@rynmrtn 100%正確。 – greymouser 2014-10-01 17:51:24

1

不,下載模擬器不會添加任何新的SDK。沒有必要。使用Xcode 6,您的應用程序應該具有iOS 8的基本SDK。您可以將部署目標設置爲早於4.3(儘管進一步超過7.0現在毫無意義)。這樣你的應用程序就可以同時支持iOS 8和iOS 7.不需要iOS 7 SDK。

1

什麼是你需要舊的SDK?較新的SDK包含標記,允許您使用較舊的部署目標針對較新的SDK進行構建。需要非常小心,以確保您實際上不需要較舊的SDK,因此如果遇到阻止您使用較新的SDK的問題,請確保您提供的雷達位於http://bugreport.apple.com

如果您需要編譯將在iOS 7上運行的應用程序,您應該設置7.0(或7)的部署目標。1取決於你的意圖是什麼),並只使用iOS 8.0 SDK。

-

的iPhone模擬器的SDK雙既是是對建立在SDK和模擬器的應用與運行的運行(幾乎是一個完全獨立的操作系統)。 iOS Simulator.app是一個小型應用程序,基本上啓動模擬設備(通過CoreSimulator.framework)並處理I/O。