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了。


    模拟器忽略arm64.jpg
针对这个问题,详细说明一下:

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

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

文件路径见图:


framework工程位置.jpg

framework在Finder位置.jpg

但是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即可。

添加x86_64.jpg

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

补充目前为止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 -> "+" :
user-defined.jpg

你可能感兴趣的:(Xcode 12打包framework 报错:have the same architectures (arm64) and can't be in the same fat output file)