最近封装一个iOS的framework,编译的时候发现报:
“no matching architecture in universal wrapper”错误。
应该是framework没有合并的问题。
打开控制台,使用lipo -info就能看到 framework的信息,例如:
lipo -info /Users/compass/RealmSwift/RealmSwift.framework/RealmSwift
Architectures in the fat file: /Users/compass/RealmSwift/RealmSwift.framework/RealmSwift are: x86_64
这里的RealmSwift framework是模拟器上的x86_64,我需要把armv7 arm64 也合并进去,假设这两个framework分别在Device和Simulator下,使用:
lipo -create Device路径 Simulator路径 -output Output最终路径
例如
lipo -create /Users/compass/Device/RealmSwift/RealmSwift.framework/RealmSwift /Users/compass/Simulator/RealmSwift/RealmSwift.framework/RealmSwift -output /Users/compass/Output/RealmSwift/RealmSwift.framework/RealmSwift
查看合并之后的信息:
lipo -info /Users/compass/Output/RealmSwift/RealmSwift.framework/RealmSwift
Architectures in the fat file: /Users/compass/Output/RealmSwift/RealmSwift.framework/RealmSwift are: x86_64 armv7 arm64
即为最终需要的合并的framework。将其加入工程里的Embedded Binaries即可。
网友评论