如何在Xcode中构建iOS框架的发布版本?

39
假设我执行以下操作:
  1. 打开Xcode 7
  2. 文件|新建|项目|Cocoa Touch Framework
  3. 使用Swift语言创建“TestFramework”
  4. 创建一个名为Hello.swift的文件,其中包含公共函数hello() { print("Hello") }
从这里开始,我可以构建框架的调试版本(位于Debug-iphoneos文件夹中),但是我无法弄清楚如何构建框架的发布版本(位于Release-iphoneos中)。我以为“存档”可以做到这一点,但事实并非如此。请指点迷津?
4个回答

69
要获取发布版本,您需要更改方案设置: 在此输入图片描述 或者,为发布版本创建一个新的方案。
确保已选择设备,而不是模拟器。

enter image description here

构建您的项目,您应该看到它被添加到这个位置: (点击箭头在finder中导航到该位置) 输入图像描述

然后深入挖掘,您应该能够找到包含发布框架的发布文件夹。 输入图像描述


5
这似乎是一种不好的构建库发布版本的方式。你需要更改方案。这是因为存在错误还是这是预期使用的方式? - user1002430
1
这就是应该的方式。能够在两者之间进行选择非常有用。例如,也许您的调试版本具有连接到不同端点的网络调用,而不是您的发布版本。或者可能您的调试版本具有非常详细的日志记录。我相信您还可以创建更多的标志,而不仅仅是“发布”和“调试”标志。您不想出现在发布版本中的任何代码,都可以包装在一个“如果调试”语句中,而您所要做的就是切换方案。 - Beau Nouvelle
4
我同意@Ana的观点,应该依靠存档功能而不是尝试运行方案。但是,在存档后,我不知道最终产品在哪里。 - Mazyod
一旦 Xcode 完成归档,您可以右键单击小窗口中的存档,然后应该会有一个在查找器中打开该位置的选项。 - Beau Nouvelle
1
@niczm25 嗯,你可以编写一个构建脚本,将框架输出到一个易于访问的文件夹中。然而,最常见的分发框架的方式是通过使用 CocoaPods 设置项目,或者将其放在 GitHub 上。其他开发人员可以在自己的机器上下载并编译你的框架。 - Beau Nouvelle
显示剩余2条评论

27

以下方法适用于我:

选择您的框架目标,然后单击“产品” -> “归档”。如果构建框架成功后未弹出组织者窗口,则转到您的框架目标的“构建设置”,查找选项“跳过安装”,并将其更改为“否”(然后再次进行归档)。


归档工作正常,但输出的框架不可用,并出现“找不到框架”的错误,有什么想法吗? - Goppinath
按照以下步骤操作,可以使应用程序集成框架后无法导出:https://dev59.com/rFYN5IYBdhLWcg3wqpmH - TomTasche
归档后打开生成的存档文件(在Finder中右键单击xcarchive并选择“显示内容”)。现在,该框架位于Product->Library->Framework文件夹中。 - Jochen Holzer

5

除了通过 Xcode IDE 构建框架之外,另一种方法是通过命令行进行构建。

您可以使用以下命令生成面向 iphoneos 设备的发布版本的框架:

xcodebuild -workspace TestSDK.xcworkspace -scheme TestSDK -configuration Release -sdk iphoneos

你可以更改-configuration参数的值从ReleaseDebug,以生成调试构建。或者将-sdk参数的值从iphoneos更改为iphonesimulator,以生成适用于模拟器设备的构建。
请注意,如果您的目标只是Xcode项目的一部分而不是Xcode工作区的一部分,则可能需要提供-project参数而不是-workspace。运行xcodebuild -help命令获取完整的xcodebuild选项列表。
如果你喜欢档案,请按如下方式在命令行中进行:
xcodebuild archive -workspace TestSDK.xcworkspace -scheme TestSDK -configuration Release -sdk iphoneos -archivePath "TestSDK_Release_iphoneos.xcarchive" SKIP_INSTALL=NO

请注意,如果您喜欢,可以将SKIP_INSTALL=NO作为项目或目标的“Build Settings”的一部分进行指定。

最后,如果您想将您的iphoneosiphonesimulator构建合并为一个单一的二进制文件,您可以使用以下xcodebuild -create-xcframework命令完成:

xcodebuild -create-xcframework \
    -framework "TestSDK_Release_iphoneos.xcarchive/Products/Library/Frameworks/TestSDK.framework" \
    -framework "TestSDK_Release_iphonesimulator.xcarchive/Products/Library/Frameworks/TestSDK.framework" \
    -output "TestSDK.xcframework"

请查看这里,获取创建XCFramework的官方指南。


0

当您将框架添加到其他Xcode项目中时,您必须将"$(BUILT_PRODUCTS_DIR)"添加到构建设置->框架搜索路径中。 这将在运行项目(使用Debug)时创建Debug版本,并在归档项目时创建Release版本。 归档不会在Products目录下创建Release版本,而是会在"Intermediates.noindex"文件夹中创建。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接