我想创建一个通用的静态库,比如名为sampleStaticLib.a,它被包含在名为HelloWorld的应用程序中 . HelloWorld应用程序需要使用静态库中定义的API,并且需要在iOS模拟器和iOS设备上运行 . 我从互联网上的各个帖子中了解到,我可以通过使用lipo工具将模拟器和设备的静态库聚合到通用库中来实现这一点,然后在HelloWorld.xcodeproj中包含通用库 .
但是,如果我执行以下操作:
-
只需将静态库xcodeproject(sampleStaticLib.xcodeproj)中的有效体系结构设置为“armv7 armv7s arm64 i386 x86_64
-
生成sampleStaticLibrary.a
-
将它包含在HelloWorld.xcodeproj中
我的期望是,因为我将'sampleStaticLib'的有效架构设置为跨越x86和ARM的所有架构,所以库应该适用于模拟器和设备 . 但它在模拟器上不起作用 .
那么,在创建通用静态库时,无法设置广泛的“有效架构”取代使用“lipo工具”的需求吗?
2 回答
不,不幸的是,这不可能像你想的那样平凡 .
原因是当您构建项目时,它将使用所选SDK构建所有请求的体系结构 . iOS SDK支持ARM,iOS Simulator SDK支持Intel . 您需要针对iOS SDK和针对iOS模拟器SDK的Intel切片构建ARM切片,然后将它们组合成一个通用二进制文件 .
它应该工作 . 例如,这个静态库
https://github.com/cocos2d/cocos2d-x-3rd-party-libs-bin/blob/v3/png/prebuilt/ios/libpng.a
它有armv7,armv7s,arm64,i386和x86_64二进制文件 .
Xcode(Clang工具链)可以为iOS设备和iOS模拟器链接此静态库 . 并没有任何问题 .
你什么意思?我建议您更新有关详细信息的问题 .