簡體   English   中英

如何使用iOS 5為armv6和armv7架構構建

[英]How to build for armv6 and armv7 architectures with iOS 5

iOS5中, Apple從ARCHS_STANDARD_32_BIT中刪除了armv6架構。

為了保持對iPhone3G的支持,即使在iOS5中,我仍然想在armv6中進行編譯。

有人找到解決方案了嗎?

我今天剛剛構建了一些東西,指定了iOS 4.0的部署目標。 在僅在Architectures中指定armv7的情況下,Xcode警告我,要支持iOS4.2以下的任何內容,我必須在Architectures中包括armv6。 只需編輯該字段,在對話框彈出時單擊“ +”按鈕,然后輸入文字“ armv6”。

就我而言,我們希望我們的應用程序可以在iOS4和iOS5下運行。 我們必須進行一些修改,才能在iOS5下正常工作,但是所有這些更改都是通過iOS4友好的代碼更改完成的。

我們還添加了一些特定於iOS5的功能,以使應用程序在iOS4下運行而不會崩潰的方式。 具體來說,我們在嘗試使用iOS5功能之前進行了測試,並將僅iOS5的庫鏈接為可選。

因此,在iOS5世界中支持iPhone3G可能很容易意味着“我們希望我們的應用程序在iOS4及更高版本上運行(無論使用任何iOS5功能)”,而不是“我們希望確保我們的應用程序在運行iOS5的舊設備上運行”。 這里有所不同; 考慮一下。 :-)

無論如何,重新添加armv6支持非常容易。 我想說的是:在某個時候,當沒有更多的armv6設備需要擔心時(無論出於何種原因),您都不必為此而構建。 蘋果公司認為,每個人都應盡快升級到最新的硬件。 因此,在那個世界上,除了最新和最強大的工具外,無需將工具默認為其他任何工具。 :-)幸運的是(或沒有),我們的開發人員生活在現實世界中,並且意識到您必須在一段時間內支持較舊的東西。 而且我猜Xcode開發團隊也知道這一點,這就是為什么您可以很簡單地添加armv6支持的原因。

簡單的答案是,您必須將當前設置從“標准(armv7)-$(ARCHS_STANDARD_32_BIT)”更改為“ armv6”和“ armv7”。 參見下圖。 您必須先刪除具有先前設置的行,然后才能使用它。

正確設置armv6和armv7

還請確保您在“項目和目標”中進行了設置...花了我一個小時才能弄清楚。 將它設置為一個,但沒有另一個。 希望這可以幫助。 GLTA

我認為Apple從標准設置中刪除armv6是有原因的。

我已經使用iOS5 SDK編譯了armv7 / armv6,但是armv6編譯器在發布模式下生成了錯誤的代碼。 經過數小時的解決方法(嘗試使用不同的優化級別嘗試llvm或gcc)后,我放棄了。

因此,只要支持較舊的armv6設備,我將返回iOS SDK4.x。

代碼示例:

// myView center=(160, 100)
CGPoint p=myView.center;  
// now p=(100,100) (what the heck?)
p.x=myView.center.x;
p.y=myView.center.y;
// now p=(160,100) 
p.y+=100;
// now p =(200,200) (what the heck?)

也許我有一些內存損壞,但是,在armv7編譯器和iOSSDK <5.0上,它的行為符合預期。

最好的祝福

不確定這是否真的是解決方案,但是我發現用“ armv6 armv7”替換“ architectures”中的已定義字符串($(ARCHS_STANDARD_32_BIT)),使我可以將iOS5作為基礎,將iOS4進行部署定位並通過驗證。

我沒有使用任何IOS5專有的庫或調用,但是打算在下一個版本中使用。

我不需要用armv7替換$(ARCHS_STANDARD_32_BIT)即可編譯應用程序並將其上傳到App Store。

正如MarkGranoff所建議的那樣,我只需將armv6添加為純文本,只需點擊加號並在第二行中鍵入它即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM