今天拉了公司一个新项目的代码,使用模拟器运行的时候,编译报错,提示项目中的一个动态库缺少x86_64架构
warning: ignoring file /Pods/EZOpenSDK/dist/EZOpenSDK/dynamicSDK/EZOpenSDKFramework.framework/EZOpenSDKFramework, missing required architecture x86_64
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我第一个想到的原因是framework打包的时候没有把模拟器对应的架构给合并进去,导致项目只能在真机上运行,但是当时不能进行真机测试进行验证。
- 定位到报错信息是项目中的一个动态库。想到一个方法就是利用命令查看该动态库支持的架构类型。我cd到报错的动态库然后利用命令 lipo -info XXXframework去查看。发现确实没有支持x86_64架构
- 解决方式:1,重新生成支持x86_64架构的动态库。2,使用真机测试。
- 查看动态库或者静态库支持架构的命令
lipo -info xxxxx.a // 查看.a形式的或者
lipo -info xxxxframework // framework形式的
- 各种架构对应的模拟器或者测试机类型
armv7,armv7s,arm64都是真机的架构,其中armv7是iPhone4和4s。armv7s是iPhone5和5c,arm64是iPhone5s以及以上的设备。
模拟器32位处理器测试需要i386架构,模拟器64位处理器测试需要x86_64架构。