Xcode Unable to install "xx" 解决办

2021-03-26  本文已影响0人  Icy_Summer

Details:应用不支持当前设备的CPU类型。

This application does not support this device’s CPU type.
Domain: com.apple.dt.MobileDeviceErrorDomain
Code: -402653049

思路:

真机
  1. Architectures 是否设置正确,Xcode12以上,设置为 $(ARCHS_STANDARD),即 arm64,armv7。
  2. VALID_ARCHS 是否包含当前设备的指令集。正确设置为 armv7 armv7s arm64
  3. Build Active Architecture Only 设置为常用模式。
模拟器

真机 1 2 两条设置添加上模拟器的指令集 i386 x86_64 即可。

拓展

一、iOS设备对应的CPU的指令集
指令集 设备类型
arm64 iPhone5S、iPad Air、 iPad mini2(iPad mini with Retina Display) 及以上
armv7s iPhone5、iPhone5C、iPad4(iPad with Retina Display)
armv7 iPhone3GS、iPhone4、iPhone4S、iPad、iPad2、iPad3(The New iPad)、iPad mini、iPod Touch 3G、iPod Touch4
armv6 iPhone、iPhone2、 iPhone3G、 第一代、第二代 iPod Touch
i386 模拟器32位处理器,iPhone5及之前模拟器
x86_64 模拟器64位处理器,iPhone5s及之后模拟器
注:1.armv6 现在基本不用支持。2. 从低到高排列,armv6 armv7 armv7s arm64,高版本指令集向下兼容,只是在低版本中无法体现其相关的性能优化。

二、Xcode中指令集设置选项含义(Build Setting 中设置)
  1. Architectures:

指定所选 target 编译生成的二进制包 可支持 哪些指令集类型。
支持的指令集越多,对应生成的二进制包就越大,也就是ipa包会越大。

  1. Valid Architectures:

限制支持的指令集的范围。指定本次 build 可包含哪些指令集。
通俗说,Architectures 可理解为工程就支持这么多架构,Valid Architectures 可理解为本次 build 就想要这么多架构。
所以最终 XCode 编译出的二进制包包含哪几种指令集,是有 ArchitecturesValid Architectures 两个选项的交集来确定的,这个交集不可以为空。

举个例子:

Architectures Valid Architectures 二进制包
armv7 armv7s armv7 arm64 armv7
armv7 armv7s arm64 armv7 armv7s armv7 armv7s
armv7 armv7s arm64 armv7 armv7s arm64 armv7 armv7s arm64
armv7s arm7 armv64 null

  1. Build Active Architecture Only:

指定是否只编译当前连接设备所支持的指令集
这个属性设置为 YES,只编译当前设备支持的architecture版本,可以让编译速度更快;设置为 NO 时,则会编译所有的版本。
一般 debug 的时候设置为 YES,release 的时候要设为 NO,以适应不同设备。

上一篇下一篇

猜你喜欢

热点阅读