2010-11-09 82 views
3

我最近使用3.2的部署目標(在我的調試設置中是3.0,但我必須忽略分發設置)提交了應用程序的更新。但在iTunes Connect中的應用程序設置中,我指出支持的最低操作系統版本爲3.0。現在我從OS 3.1的用戶那裏得到了關於應用程序無法運行的報告。「部署目標」不僅僅是控制編譯器警告嗎?

我已經用固定的部署目標構建了新的二進制文件,但我無法對其進行測試。我沒有任何運行OS < 3.2的設備,並且模擬器也不會低於3.2(爲什麼不?)。我不願意提交這個作爲修復,只是爲了讓它仍然無法工作...

因此,部署目標設置不僅僅是控制編譯器警告(例如,如果我使用API​​只適用於較新的SDK)?據我所知,我沒有使用任何OS 3.0中沒有的API(也沒有警告)。

+0

您是如何設置iTunes Connect中支持的最低操作系統版本的?這應該從提交的二進制文件中的Info.plist中自動提取,不應該是您可以設置的內容。 – 2010-11-09 23:14:35

+0

@Brad,嗯,我確定我已經指定在iTunes Connect中配置更新時,但現在我似乎無法找到它 – Brian 2010-11-10 00:37:39

回答

2

如果某人的iOS的版本低於部署目標,則該應用將拒絕啓動。

我曾經有一個應用程序,其部署目標是3.1。在更新中,我意外地將部署目標設置爲4.0。我的iOS 3.1客戶無法運行該應用程序。我提交了另一個更新,只是將部署目標恢復到3.1。它再次爲他們工作。

測試情況不幸,是的。如果有人知道如何在沒有額外設備專用的情況下測試早期版本,我希望他們可以參加。

This article可能會對您感興趣。

+1

若要在此基礎上進行構建,您的部署目標會記錄在您的Info.plist中,並隨後由iTunes Store用於信息顯示和設備使用,以確定它是否可以運行該事情。如果可以的話,對設備進行測試確實非常重要,因爲如果您嘗試使用早期操作系統中不存在的API,那麼您的應用將無法啓動,看起來就像崩潰一樣。 – Tommy 2010-11-09 22:50:00

+0

我不確定是否設置部署目標會做到這一點,但聽起來像是會。謝謝 – Brian 2010-11-10 00:47:55

+0

如果你在任何地方執行'[UIPopoverController alloc]'(即使它沒有被實際執行),應用程序一旦啓動就會崩潰。使用'[NSClassFromString(@「UIPopoverController」)alloc]'可以解決這個問題。當SDK仍支持在iOS 3.1.3上運行時,我實際上已經意識到了這一點,但是當他們放棄了該選項時,它也掉了下來。 – Brian 2010-11-19 21:51:29