Bob*_*Bob 6 xcode xcodebuild ios ios-frameworks lipo
xcodebuild可以建立与SDK中设定了一个项目,无论是iphoneos或iphonesimulator,但不能同时,所以为了生成包含框架armv7 arm64和i386 x86_64体系,我必须跑xcodebuild两次,然后用lipo所有的架构合并为1个通用二进制.我看到这样做的商业框架,但它导致了一个不正确的info.plist文件,因为它有一个字段,CFBundleSupportedPlatforms并且所有符号都指向它只包含1个值,例如CFBundleSupportedPlatforms = ( "iPhoneSimulator" ).
似乎lipo不应该以这种方式使用,因为它没有得到官方的支持xcodebuld.是否有更好的方法来构建包含所有体系结构的框架?
我关注了这个问题,但我想我有点困惑,为什么您要.framework使用仅与您的开发版本相关的仅限模拟器的 i386 和 x84_64 切片不必要地膨胀单个切片。您是否希望将框架分发给其他开发人员并希望使其在模拟器和设备上都能运行?
如果是这样,您在使用lipo将设备的瘦二进制文件连接在一起或将模拟器的瘦二进制文件连接在一起时走在正确的轨道上,但不应该尝试生成单个设备和模拟器框架。Apple 自己对 SDK 和框架的使用作为此处的指南。在 Xcode 中,有两个不同的平台 SDK——iPhoneOS.platform 和 iPhoneSimulator.platform,它们包含仅包含相关目标架构切片的 SDK:
您可以深入查看这些文件夹中的每一个,并发现 UIKit 框架确实遵循每个平台的想法,并且基于正在使用的 SDK 有条件地链接:
我进一步猜测您希望拥有一个通用的、全架构的框架,这样消费开发人员就不必记住根据他们编译应用程序的方式将一个 .framework 文件替换为另一个文件。好消息是,您可以使用条件链接标志来影响这一点,而无需进行文件系统交换!
当人们采用你的库时,设置的一部分应该是使用条件链接——在这个OTHER_LINKER_FLAGS选项中,你可以有每个配置(调试、发布、Ad-Hoc 等)构建设置,也可以有每个架构或每个-SDK 特定设置太:
要访问这些特定于 SDK 的设置,您需要单击要自定义定制框架链接的每个构建配置旁边的 +。然后,您可以从下拉列表中选择适当的 SDK,并为两个目标框架中的每一个添加链接器标志。
| 归档时间: |
|
| 查看次数: |
3705 次 |
| 最近记录: |