gpt4 book ai didi

ios - 如何在 iOS 中创建包含 Swift 的开发框架?

转载 作者:搜寻专家 更新时间:2023-10-30 22:34:40 25 4
gpt4 key购买 nike

我的目标是创建一个 iOS 框架,其中包含我可以在我的开发项目中使用的 Swift 和 Objective-C。这个框架的本质是框架本身在发展。因此,重要的是每次我使用这个框架构建项目时(我将使用框架的项目称为“使用”项目,因为没有更好的术语),我想确保框架本身被重新构建。我希望它成为一个框架,因为我有一些正在使用的应用程序,我想在这些应用程序中使用相同的框架代码。今天我一直在为此苦苦挣扎,并且浪费了很多时间在至少在我看来应该更容易的事情上。所以,我将分享我的过程。

最佳答案

首先要观察的事情(这当然不是我的第一次观察!)是您不能在 iOS 下使用静态库执行此操作。 Xcode 不会让你在静态框架中使用 Swift 试试吧。 Xcode 会拒绝你的愿望!

这是我完成的过程。我必须处理的两个主要问题是:(i) 使 Xcode 正确链接到使用项目中的框架,以及 (ii) 访问使用项目中框架的 header 。在 Apple 的开明观点中,这两个问题是分开的。注意讽刺。 ;).

1) 使用 Xcode 创建一个 Cocoa Touch Framework。我相信这适用于 Xcode6 和 Xcode7。使用:

File > New > Project > iOS > Framework & Library > Cocoa Touch Framework

我恰好在使用 Xcode7。 (不要创建Cocoa Touch 静态库——就像我上面说的,Xcode 不会让您将 Swift 合并到静态库中)。

2) 对于你的 Swift 类,确保成员和函数是公共(public)的。我没有对此进行试验,但似乎 public 属性对于框架用户可见的成员和函数来说是必需的。

3) 将您想要的任何 Swift 类(和 Objective-C)添加到您的框架中。

4) 关闭该框架项目。 (同一个项目不能在Xcode中打开两次,接下来你需要将框架合并到你使用的项目中)。

5) 在 Xcode 中打开您正在使用的项目。对我来说,这是一个现有的通用应用程序项目。您可能正在创建一个新的使用项目。在任何情况下,将 Finder 中框架项目​​的 .xcodeproj 文件拖到您的使用项目中。

6) 在您使用的项目中,打开您的框架项目。并将框架文件拖到 Build Phases 的 Embed Frameworks 中(当我第一次开始实验时,Embed Frameworks 部分不存在于 Build Phases 中,我还不知道是什么魔法让它出现了!)。

enter image description here

到目前为止,这些步骤应该使您能够构建和链接,而无需实际集成您的库代码的使用。(我使用 https://github.com/RadiusNetworks/swift-framework-example 进行一些测试)。

7) 现在是致命一击:在 Build Settings 下,搜索 Framework Search Paths。并添加:

${TARGET_BUILD_DIR}/YourFrameworkName.framework

(看来您不必必须将此标记为递归)。

8) 在使用该框架的 Swift 代码文件中,您需要在每个文件的顶部添加一个导入:

import YourFrameworkName

您现在应该能够使用您的新库构建和链接!

9) 还有一个问题:确保框架的 Deployment Target 与目标项目匹配。例如,如果您使用的项目是为 iOS7 构建的,请确保您的框架是为 iOS7 或更早版本构建的。

10) 第二个问题 (10/23/15):我刚刚了解到我的框架有必要将“App-Swift.h”(我为此使用的名称)作为 Objective-C 生成的接口(interface) header build设置中的名称。当我取出这个(Objective-C 生成的接口(interface) header )(试图解决另一个问题)时,我在 App-Swift.h 中遇到了一些有趣的问题。这些问题看起来像: "Cannot find interface declaration for NSObject"?

11) 第三个问题 (10/29/15):当我尝试将我的第一个应用程序上传到使用此框架的 iTunes Connect 时,出现上传错误。错误如下:

ERROR ITMS-90206: "Invalid Bundle. The bundle at 'Your.app/Frameworks/YourFramework.framework' contains disallowed file 'Frameworks'."

各种 SO 和其他帖子都遇到过这种错误,对我来说,技巧是,对于 Framework 目标,在build设置中,将“嵌入的内容包含 Swift 代码”设置为 NO。 (我的应用build设置已将此标志设置为 NO)。

已完成大部分步骤的示例项目在 https://github.com/crspybits/CocoaTouchFramework.git

关于ios - 如何在 iOS 中创建包含 Swift 的开发框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32816507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com