【问题标题】:How to build a release version of an iOS framework in Xcode?如何在 Xcode 中构建 iOS 框架的发布版本?
【发布时间】:2016-04-11 04:09:48
【问题描述】:

假设我做了以下事情:

  1. 打开 Xcode 7
  2. 文件 |新 |项目 | Cocoa Touch 框架
  3. 使用 Swift 语言创建“TestFramework”
  4. 使用 public func hello() { print("Hello") } 创建一个文件 Hello.swift。

从这里,我可以构建框架的调试版本(在 Debug-iphoneos 文件夹中),但我不知道如何构建框架的发布版本(在 Release-iphoneos 中)。我认为存档可能会这样做,但事实并非如此。请指点?

【问题讨论】:

    标签: ios xcode frameworks release


    【解决方案1】:

    要获得发布版本,您需要更改方案设置:

    或者,为发布构建创建一个新方案。

    确保您已选择设备。不是模拟器。

    构建您的项目,您应该会看到它已添加到此位置: (单击箭头在查找器中导航)

    向下钻取后,您应该能够找到包含您的发布框架的发布文件夹。

    【讨论】:

    • 这似乎是构建库的发布版本的糟糕方法。你必须改变方案。这是因为错误还是预期用途?
    • 本应如此。能够在两者之间进行选择很有用。例如,也许您的调试版本具有连接到与您的发布版本不同的端点的网络调用。或者您的调试版本可能有非常详细的日志记录。我相信您还可以创建更多的标志,而不仅仅是“发布”和“调试”标志。任何你不想在发布版本中出现的代码,你都可以用“If Debug”语句包装,你所要做的就是切换方案。
    • 我同意@Ana,应该依靠存档功能而不是涉足运行方案。但是,存档后,我不知道最终产品在哪里。
    • 您可以在 Xcode 完成存档后出现的小窗口中右键单击存档,并且应该有一个选项可以在 finder 中打开该位置。
    • @niczm25 好吧,您总是可以编写一个构建脚本,将框架输出到一个易于访问的文件夹。然而,分发框架最常见的方法是使用可可豆荚设置您的项目,和/或将其放在 GitHub 上。然后其他开发人员可以在他们自己的机器上下载并编译您的框架。
    【解决方案2】:

    这对我有用:

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

    【讨论】:

    • 存档正在运行,但输出的框架不可用,并且出现错误“找不到框架”,知道吗?
    • 执行这些步骤会使集成框架的应用无法导出:stackoverflow.com/questions/47103464/…
    • 存档后打开生成的存档(右键单击查找器中的 xcarchive 并选择“显示内容”)。框架现在位于 Product -> Library-> Framework 文件夹中。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      通过 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 指定为项目或目标的构建设置的一部分。

      最后,如果您想将 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 的官方指南,请参阅 here

      【讨论】:

        猜你喜欢
        • 2011-08-08
        • 2016-09-28
        • 1970-01-01
        • 2015-08-18
        • 1970-01-01
        • 2020-10-06
        • 2013-12-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多