2013-09-24 33 views
6

我們ios6.1-SDK編譯的應用程序已經在IOS 6.1 iphone 4,4S & 5設備上運行的編譯的精細的應用。當在ios7 iphone 5s上運行應用程序時,用戶界面仍然看起來像ios 6(黑色按鈕等),但我們對其中大部分都很好,除了我們發現了一個錯誤。我猜這是因爲ios7上API實現的改變。IOS 7模擬器不會回退用戶界面針對IOS 6.1 SDK

當我們的應用程序被編譯針對ios7-SDK的Xcode的5一切都分崩離析。因爲我們希望編譯我們的代碼對ios6.1 sdk,但在ios 7上運行它。

在Xcode 5上,我安裝了ios 6.1 sdk by copying it from Xcode 4.6.3 dmg as described on this post並更新了Base SDK到ios 6.1的構建設置,但是當在ios 7模擬器上運行應用程序時,用戶界面不會回退到ios 6.1。但是,如果應用程序針對運行ios 7的物理iphone進行測試,它確實會回退到ios 6.1。

如何在運行ios6-sdk編譯的應用程序時使ios 7模擬器退回用戶界面,以便重現錯誤在模擬器上?

+0

我不認爲這是仿真器模仿該功能的目的。我理解你的思維方式,我也爲此付出了努力,我希望我知道iOS 7在我去之前已經知道了那個後備功能,並且急於爲iOS 7分類我的代碼。但是我認爲如果你的應用程序仍然不支持iOS 7 ,請不要使用iOS 7模擬器,而應使用較舊的模擬器(6.1)。最後,模擬器是模擬器,而不是仿真器。它模擬iOS 7的應用程序,但它不模擬iOS 7操作系統。 –

回答

4

感謝所有的幫助,但到目前爲止最好的解決方法,讓我重現的錯誤是繼續使用xcode 4.6.3並將ios 7模擬器安裝到xcode 4.6.3。

我通過同時安裝的Xcode 5和4.6.3並排(副本xcode.app到xcode4.6.3.app然後從應用商店安裝的Xcode 5(將覆蓋xcode.app))這樣做,那麼符號鏈接

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk

/Applications/Xcode4.6.3.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk

使這個時候進行一定的Xcode不開。如果您已將4.6.3重寫爲5,則可以從https://developer.apple.com/downloads下載4.6.3的dmg。

然後我把:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iOS Simulator.app

(即:的Xcode 5.0版本的模擬器應用程序的)對我的碼頭

當測試應用程序,我不得不從被告席手動啓動模擬器首先選擇相應的設備版本(進入硬件 - >設備 - >選擇iphone 3.5「/ 4」 - ios6/7),因爲xcode 4.6.3無法自動做到這一點(大概是因爲版本差異/因爲我didn將xcode 5模擬器應用符號鏈接到4.6.3)

啓動時,請確保在xcode 4.6.3 Scheme上選擇了「iPhone 7.0 Simulator」。 ios6.1-sdk編譯的應用程序在ios 7上運行時會回落到ios 6.1 UI中,並且可以重現我的錯誤。

+0

啊 - gerrytan,你是男人......這對我有用! – steve

0

您所描述的外觀,我很害怕,適用於iOS 7.表視圖內容大小可能是正確的行爲是不同的計算,例如(這將改變很多元素的位置)以及許多其他變化。

如果您希望保留您的iOS 6的外觀,你需要的Xcode 4.6下進行編譯,不是5,您仍然可以運行它的iOS 7下,實際上你可以在iOS 7設備出現了通過發展授權它在Xcode 5中,然後切換回Xcode 4.6。

我建議你閱讀蘋果的iOS 7 Transition Guide,也爲有關設計的是iOS 7兼容的UI建議。

+0

是的,我的問題不是外觀仍然看起來老舊,而是物理設備的行爲與模擬器不同。在使用6.1 sdk編譯的物理設備應用程序中,在模擬器中顯示爲新外觀時會回到原來的外觀 – gerrytan

+0

這是XCode 5 AFAIK的屬性。如果你想要舊的外觀,你必須用舊的工具開發 - 如果你想要新的工具,你必須升級。對不起,可能不是你想要的答案 - 但它是沒有瘋狂的符號鏈接黑客攻擊的唯一答案。 編輯:我看到有人有詳細的! – tooluser

0

嘗試在模擬器中「重置內容和設置」,並確保在構建&運行時在XCode中爲您的方案使用正確的模擬器和SDK。如果您按照您的描述安裝了iOS 6.1 SDK,您應該首先看到在您的目標系統中可用的模擬器列表中出現的重複內容 - 其中之一會爲您提供所需的行爲(很可能是「iOS 7.0 | iOS 7.0 SDK「,但並不總是如此)。確保您的部署目標設置爲6.1或更低版本,並將基本SDK設置爲6.1(如您所描述的)

+0

謝謝我已經做了所有,但我仍然不能讓ios 7模擬器回落到ios 6的外觀和感覺 – gerrytan

4

如果我正確理解您的問題... 我一直在遇到與我們的應用程序相同的問題並需要保持內置於Xcode 5並在iOS7中運行的iOS6.1接口。我們的界面也搞亂了,錯位和工具欄丟失了按鈕。我們將在7以後修復它,但現在沒有時間,但需要它在iOS7上運行,並且仍然在Xcode 5中構建。

因此,這裏是我所做的: (我想發佈一些屏幕截圖,但沒有我的Mac得心應手,如果需要,將在以後得到)

  • 我不停的Xcode 4.6.3裝在Xcode 5.
  • 沿着予添加符號鏈接從6.1 SDK到的Xcode 5安裝。 (我發現了一個SO問題,會找到一個鏈接)或者你可以像你一樣安裝它。

(可能不需要這些未來2個選擇,但我們最終在測試中使用它們,和它的作品,甚至新的5S 64位電話)

  • 在生成設置我選擇的構建架構要使用標準的非64位armv7選項,請不要選擇「包括64位」選項。

  • 同一個地方,積極構建體系結構只爲Yes

則...

  • 也生成設置設置基準SDK到iOS 6.1。 (我相信這是使它工作的關鍵)

  • 應用目標的常規選項卡上,部署目標設定爲6.1(我們仍然是5.1,現在是)

  • 在我們的故事板,選擇文件檢查器在我選擇的界面構建器部分中,將在Xcode 4.6中打開,並在iOS 5.1和更高版本中打開,並在iOS 6.1和更早版本中查看。 (我的自動佈局未經檢查,我們不使用它)

有關最後一個選項「打開」的警告。如果您選擇「在Xcode 4.6中打開」,您將失去iOS7的Storyboard編輯。就我而言,我現在不在乎,因爲我希望它仍然保留在4.6視圖中。要時刻銘記在心。我認爲你可以切換回去,但還沒有測試過。

在6.1 SDK鏈接/安裝時,您應該可以在應用程序中運行時選擇所需的iOS版本以用於模擬器。您將在頂部工具欄的Active Schema下拉菜單中看到它。就我而言,例如,我可以選擇iPhone Retina(4英寸)及以下,我可以選擇iOS7或6.1。對於我來說有趣的部分是,使用上面的設置,我可以在模擬器中運行我的應用程序,即使我選擇iOS7作爲模擬器活動模式,它也看起來像iOS6。它甚至在64位模擬器中工作,在我的設置中,它只會顯示iOS7選擇。

至少我可以在Xcode 5中構建和工作,爲iOS7用戶專門分發應用程序,但保留iOS6樣式,位置和按鈕的完整性。現在,我可以花更多時間轉換到iOS7樣式,但仍然可以修復錯誤並更新應用,就像它是iOS6.1一樣。

我希望這是有道理的,我希望它能回答你的問題。我希望我記得我所做的一切!如果我想到一些東西,我會增加更多。

+0

這似乎並沒有爲我工作...我做的唯一不同的是複製6.1 SDK而不是符號鏈接。還有什麼你能想到的嗎? – steve

+0

現在還沒有考慮其他任何東西,但我會花一些時間用另一個尚未在Xcode 5中運行的項目。也許我會在這個過程中發現其他的東西。我會嘗試並獲得屏幕截圖。可能需要我花幾天的時間才能實現。 哦,有一件事情可能並不重要,但...在我的一個視圖控制器上,我有幾個控件,我在代碼中手動調整大小。由於IOS7大小的變化,它弄亂了我的代碼。我把所有這一切都拿出來,並在IB房產中做了更好的調整,然後那個特定的視圖運行良好 – gregthegeek