Xcode 12打包framework 报错:have the same architectures (arm64) and can‘t be in the same fat output file

解决此问题的时候走了很多弯路,在这就不多说了。

解决方案:

Target->BuildSetting->Architectures->Excluded Architectures

  • 点击箭头展开
  • 点击右侧加号,添加Any iOS Simulator SDK
  • 在Any iOS Simulator SDK 后面添加arm64

这样编译出来的包中就不会包含arm64了。
在这里插入图片描述
针对这个问题,详细说明一下:

正常我们打包framework都会需要支持i386、armv7、x86_64、arm64等,因为需要同时满足真机和模拟器的运行。所以我们正常都用将编译后的framework进行合并,命令行如下:

lipo -create 真机文件路径 模拟器文件路径 -output 真机文件路径

文件路径见图:
在这里插入图片描述
在这里插入图片描述

但是Xcode 12以后模拟器编译生成的framework中也会包含arm64,因此在合并的时候就会出现have the same architectures (arm64) and can't be in the same fat output file的报错,而我们一开始的方式就能解决这个问题。
此处补充一个查看framework包含内容的命令:

lipo -info framework路径

说到这里就会有别的问题了(可能是跟我换电脑有关),换了个M1的Mac之后编译的模拟器framework只有arm64了,x86_64的没有了。

此时需要用到另一个设置了,依然在Target->BuildSetting中,搜索VALID_ARCHS,在这里是描述你编译时需要包含哪些架构的,在后面添加上x86_64即可。

在这里插入图片描述

写的可能不是太条理,大致的问题就是这么回事,有不明白的可以留言。

补充目前为止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

问题点:

Xcode 13 新增User-Defined 设置(如下图)Build Setting -> “+” :
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值