in /Users/xxx/Desktop/svn/xxxx/Pods/YYKit/Vendor/WebP.framework/WebP(libwebpencode_la-config.o), building for iOS Simulator, but linking in object file built for iOS, for architecture arm64
第一种解决方法就是使用Rosetta方式打开Xcode,使用的还是x86的模拟器,发挥不出来M1的编译速度。
第二种:
1.在build settings里面先设置excluded archs, 只设置any iOS simulator sdk = arm64,只排除模拟器的arm64架构,如果在debug下面直接配置,会连真机也排除arm64架构,导致真机编译不过。(设置arm64时,碰到输入无效的,也不展示的,多输入几个在删除后正常。)
2.在user-defind下面设置EXLUDED_ARCHS,原理同上。
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
#排除模拟器用arm64 当在 M1 机型上,排除了模拟器的 arm64 架构后,模拟器还是会以 arm64 的方式运行,但是模拟器中的app是以 x86 的方式运行的
config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
end
end
end
拓展:
1.Architectures
Xcode 通过Architectures指定工程被编译成,可支持的哪些指令集类型。在这其中,支持的指令集如果越多,编译出的数据包也就会越大,对应的生成的二进制包ipa就会越大。
2.Valid Architectures
Xcode 通过Valid Architectures来限制可能被支持的指令集范围,Xcode 最终编译出来的二进制包类型也是从这些类型产生。对于编译出哪种指令集的包,是由Architectures和Valid Architectures的交集来确定的,所以不能为空
3.EXCLUDED_ARCHS
剔除的架构,最终支持的夹头需要这几个中合来来处理。
假如Architectures支持的arm指令集为armv7,armv7s,而对应的ValidArchitectures支持的指令集为armv7s,arm64,那么Xcode生成的二进制包指令集为armv7s。