armv 是指令集的意思,偏硬體。目前iphone5支援armv7s。
The iPhone 5 will ship with and only run iOS 6.0. To coincide with the launch of iOS 6.0, Apple has seeded developers with a newer version of its development tools. Xcode 4.5 makes two major changes: it drops support for the ARMv6 ISA (used by
the ARM11 core in the iPhone 2G and iPhone 3G), keeps support for ARMv7 (used by modern ARM cores) and it adds support for a new architecture target designed to support the new A6 SoC: armv7s.
Iphone5使用了armv7s晶片,他是armv7的超集,只是更新了浮點運算單元,增加了一些指令,而通常在ios6之前編譯的通用庫檔案是包涵,armv6和armv7的fat包,是沒有armv7s的庫檔案的。而大多數情況下,我們又沒有庫檔案的源檔案,因此想要編譯一個支援armv7s的版本也是無法實現了,一個簡易的實現方式就是刪除支援armv7s的配置。
還有一種方式,就是拷貝一份armv7的庫檔案將其複製標記成為armv7s的庫檔案。不過這個庫檔案裡包涵的.o檔案就是實現函數方法的對象集合。在.o檔案裡有一個頭來表明這個包是為哪個系列的cpu製作的,在該頭裡(Mach-O header,有一個用於描述cpu的類型和子類型的欄位。ARM類型是12,armv7子類型是9,armv7s子類型是11,所以我們只需要將標記為9的子類型改為11即可,說起來容易,不過實現起來還是很煩的。
1.OpenGL ES版本支援
iPhone:iPhone 3G以下(包括iPhone 3G)版本裝置只支援OpenGL ES1.1,iPhone 3GS以上(包括iPhone 3GS)版本裝置既支援OpenGL ES1.1,也支援OpenGL ES2.0。
iPad:iPad所有版本裝置既支援OpenGL ES1.1,也支援OpenGL ES2.0。
iPod Touch:iPod Touch2代以下(包括iPod Touch2代)版本裝置只支援OpenGL ES1.1,iPod Touch3代以上(包括iPod Touch3代)版本裝置既支援OpenGL ES1.1,也支援OpenGL ES2.0,但8GB版的iPod Touch3代不支援OpenGL ES2.0。
2.armv6和armv7,armv7s
armv6:iPhone 2G/3G,iPod 1G/2G
armv7:iPhone 3GS/4/4s,iPod 3G/4G,iPad 1G/2G/3G
armv7s:iPhone5
參考:http://stackoverflow.com/questions/12569339/what-is-armv7s; http://www.augcg.com/ios/armv7sconvert