3

我对如何使用最新的 Xcode 6 和 iOS 8 环境创建通用框架的信息感到有些困惑。例如,此答案包括以下内容:

If you need to create universal static library that runs on both simulator and devices, then general steps are:

 1. Build library for simulator  
 2. Build library for device  
 3. Combine them using lipo

lipo -create -output "framework-test-01-universal" "Debug-iphonesimulator/framework-test-01.framework/framework-test-01" "Debug-iphoneos/framework-test-01.framework/framework-test-01"  Note that framework-test-01 is my framework project name.

我的一位同事按照这些说明构建了一个可执行文件。好吧,我不认为那是我要找的。它包含一个如下所示的结构:

在此处输入图像描述

稍后,这里的另一个答案谈到了使用构建阶段运行脚本创建聚合目标,这是我在以前版本的 Xcode 中所熟悉的。当我使用该过程时,我会收到我所期望的。文件夹结构如下:

在此处输入图像描述

有人可以帮我们解决这个困惑吗?

两者有什么区别?

我的意思是,第一个过程是创建一个可以在模拟器和设备上运行的应用程序,而第二个过程是创建一个胖静态

4

2 回答 2

3

重要的区别在于框架之间。该框架只是一个包含您的库和标题的特定文件夹结构。

lipo 结合了。因此,这些指令有一个示例执行,它引用了您已经构建的框架内的库(一次用于 iphoneos,一次用于模拟器)。框架之间的唯一区别是库,因此通过使用 lipo 将库组合起来,您可以获得一个包含所有支持的框架的胖(或胖)库。

第一个链接的答案告诉您如何创建框架和应用程序。只担心框架部分。使用不同的目标(iOS 设备和模拟器)构建框架两次。确保将“仅构建活动架构”设置为“否”。您可能希望为发布而不是调试而构建,但这取决于您的特定需求。

于 2014-11-25T21:29:10.063 回答
1

你离正确答案太近了。你唯一需要做的就是

  1. 将“framework-test-01-universal”重命名为“framework-test-01”(原名无后缀)——这很重要!

  2. 进入 *.frameworks 之一(Debug-ios例如在文件夹中)并用新的“framework-test-01”库替换库。

而已! ./Debug-ios/framework-test-01.framework-是现成的胖二进制文件!您可以将其导入您的项目!

在这里查看我的答案以获取更多详细信息:如何导出“胖”可可触摸框架(用于模拟器和设备)?

于 2015-04-15T13:59:24.593 回答