如何在 Xcode 中构建 iOS 框架的发布版本?
How to build a release version of an iOS framework in Xcode?
假设我做了以下事情:
- 打开Xcode7
- 文件 |新 |项目 | Cocoa 触控框架
- 使用 Swift 语言创建 "TestFramework"
- 使用 public 创建文件 Hello.swift func hello() { print("Hello") }.
从这里,我可以构建框架的调试版本(在 Debug-iphoneos 文件夹中),但我不知道如何构建框架的发布版本(在 Release-iphoneos 中)。我认为 Archive 可能会这样做,但事实并非如此。请指点一下?
要获取发布版本,您需要更改方案设置:
或者,为发布版本创建一个新方案。
确保您选择了设备。不是模拟器。
构建您的项目,您应该会看到它已添加到此位置:
(点击箭头在取景器中导航)
深入了解后,您应该能够找到包含您的发布框架的发布文件夹。
这对我有用:
Select 您的框架目标,然后单击产品 -> 存档。如果组织者 window 在成功构建框架后没有弹出,则转到框架目标的“构建设置”,查找选项“跳过安装”并将其更改为“否”(然后再次存档).
当您将框架添加到其他 Xcode 项目时,您必须将“$(BUILT_PRODUCTS_DIR)”添加到构建设置 -> 框架搜索路径。
这将在您 运行 项目(使用调试)时创建调试,并在您存档项目时创建发布版本。
存档不会在 Products 目录下创建发布版本,但会在 "Intermediates.noindex" 文件夹中创建发布版本。
通过 Xcode IDE 构建框架的替代方法是从命令行构建它。
您可以使用以下命令为 iphoneos
设备生成框架的发布版本:
xcodebuild -workspace TestSDK.xcworkspace -scheme TestSDK -configuration Release -sdk iphoneos
您可以将 -configuration
参数的值从 Release
更改为 Debug
以生成调试版本,或者更改 -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
指定为项目或目标构建设置的一部分。
最后,如果您想将 iphoneos
和 iphonesimulator
构建成一个二进制文件,您可以使用 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 的官方指南,请参阅 here。
假设我做了以下事情:
- 打开Xcode7
- 文件 |新 |项目 | Cocoa 触控框架
- 使用 Swift 语言创建 "TestFramework"
- 使用 public 创建文件 Hello.swift func hello() { print("Hello") }.
从这里,我可以构建框架的调试版本(在 Debug-iphoneos 文件夹中),但我不知道如何构建框架的发布版本(在 Release-iphoneos 中)。我认为 Archive 可能会这样做,但事实并非如此。请指点一下?
要获取发布版本,您需要更改方案设置:
确保您选择了设备。不是模拟器。
构建您的项目,您应该会看到它已添加到此位置:
(点击箭头在取景器中导航)
深入了解后,您应该能够找到包含您的发布框架的发布文件夹。
这对我有用:
Select 您的框架目标,然后单击产品 -> 存档。如果组织者 window 在成功构建框架后没有弹出,则转到框架目标的“构建设置”,查找选项“跳过安装”并将其更改为“否”(然后再次存档).
当您将框架添加到其他 Xcode 项目时,您必须将“$(BUILT_PRODUCTS_DIR)”添加到构建设置 -> 框架搜索路径。 这将在您 运行 项目(使用调试)时创建调试,并在您存档项目时创建发布版本。 存档不会在 Products 目录下创建发布版本,但会在 "Intermediates.noindex" 文件夹中创建发布版本。
通过 Xcode IDE 构建框架的替代方法是从命令行构建它。
您可以使用以下命令为 iphoneos
设备生成框架的发布版本:
xcodebuild -workspace TestSDK.xcworkspace -scheme TestSDK -configuration Release -sdk iphoneos
您可以将 -configuration
参数的值从 Release
更改为 Debug
以生成调试版本,或者更改 -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
指定为项目或目标构建设置的一部分。
最后,如果您想将 iphoneos
和 iphonesimulator
构建成一个二进制文件,您可以使用 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 的官方指南,请参阅 here。