【iOS】 Build Active Architecture Only

前两天运营部门提出一个问题:为什么我们的APP不支持iPhone5s以下机型(我们APP最低支持系统版本8.0)?我也是一脸懵,平时都是不支持哪个系统版本的,我还是头一次听说不支持机型的呢!直觉告诉我问题出在armv64armv7等系统架构上面……

我在AppStore上搜索我们的APP发现兼容性描述限制了机型!!!

为什么会出现这样的问题呢?查看配置

  • DebugRelease属性设置为YES时,是为了debug的时候编译速度更快,它只编译当前连接手机的architecture版本;
  • 当而设置为NO时,会编译所有的版本;
  • 编译出的版本是向下兼容的,比如你设置值为YES,用iPhone4编译出来的是armv7版本的,iphone5也可以运行,但是armv6的设备就不能运行;
  • 所以,一般Debug模式可以选择设置为YESRelease的时候要改为NO,以适应不同设备。

目前为止Apple移动设备默认指令集:

  • armv6:iPhone2G/3G、iPod 1G/2G
  • armv7:iPhone 3GS/4/4s、iPod 3G/4G、iPad 1G/2G/3G、iPad mini
  • armv7s:iPhone5、iPhone5c、iPad4
  • arm64:iPhone5s及以后、iPad Air、iPad mini2

(Armv6、armv7、armv7s、arm64都是arm处理器的指令集,所有指令集原则上都是向下兼容的。需要注意的是iOS模拟器没有运行arm指令集,编译运行的是x86指令集,所以,只有在iOS设备上,才会执行设备对应的arm指令集。)

更改设置并发布版本后发现AppStore兼容性描述正常,iPhone5也可以正常下载