问题标签 [swift-framework]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1047 浏览

ios - 如何正确构建 iOS Swift 框架

我的目标是构建一个快速的 iOS 框架,它使用另外两个框架(包括在单独的项目中)并且在构建后不应该泄露源代码。

是否有一些文本/指南/文档可以解释和引导我正确和正确地构建这样一个框架的过程?

我使用此处所示的运行脚本构建了具有聚合目标添加和链接框架的框架,我的自定义框架依赖于这些框架。我能够将构建的自定义框架与其他两个依赖项(再次作为单独的项目)一起添加到我的自定义应用程序中,并在设备上运行它。但是,我不相信我构建的自定义框架的正确性。

此外,由于“Unsupported architectures...”、“CFBundleIdentifier Collision...”、“Invalid Bundle...”、“Invalid Binary”等各种错误,我无法将存档上传到 Appstore . 根据各种 stackoverflow 答案整理这些错误并从 TestFlight 安装应用程序后,应用程序在启动后崩溃并且根本无法运行。

我正在查看各种博客文章、stackoverflow 问题/答案和 Apple 框架编程指南,但没有任何东西能让我全面了解在上述条件下构建自定义框架。

我所做的一切只是按照分步教程进行,而没有解释这些步骤的目的。我确定我缺少基础知识。你能帮助我并给我一些指导吗?

0 投票
1 回答
284 浏览

swift - 在开发时调试框架

我正在创建一个统计计算器应用程序。它具有各种功能。我正在 cocoapod 框架中创建函数。我们如何在开发库框架时对其进行测试或调试?这意味着每次都无需将其复制到演示/测试项目中。

0 投票
1 回答
194 浏览

ios - 如何更新 Swift 版本的动态 Coca Touch 框架

我在 Swift 3.2 和 Xcode 9.0 上创建了一个动态框架,并在我的项目中使用它运行良好,今天,我更新到 Xcode 9.2 和 Swift 4.0,所以在 Swift 4.0 上编译了框架,并在项目中myFramework.framework添加了它。embedded Binaries当使用 Swift 4.0 添加新框架无法解析任何框架类并出现错误时,这是​​一个奇怪的问题:

使用未解析的标识符“MyClassName”

我厌倦了更多的解决方案,但没有解决我的问题。

注意:所有类框架都具有开放访问权限。

我的框架问题在哪里?

有没有一种简单的方法来更新框架 swift 版本?

0 投票
2 回答
1434 浏览

swift - 如何从 SwiftPM 生成的 XCode 项目中生成框架?

我使用 SwiftPM 为框架设置了 XCode 项目;基于

我跑了swift package generate-xcodeproj,然后pod install(基于内容无关紧要的 Podfile)。我得到MyThing.xcworkspace.

现在我想通了

应该创建.framework-- 但它没有,只出现一个二进制文件。我怀疑这里有些自动化,因为源文件夹包含一个名为 的文件main.swift,等等。

我必须做什么才能构建框架?
我需要编写整个过程的脚本,以避免手动解决方法。

0 投票
1 回答
31 浏览

ios - Xcode 9.2:“文件-> 新建”菜单中没有“新框架”

Xcode 9.2:“文件-> 新建”菜单中没有“新框架”

重现步骤:

  1. 创建新项目
  2. 转到文件->新建
  3. 没有可见的“框架”项目。

这是一个错误,还是 Apple 改变了在 Xcode v 9.2 中创建框架的方式?

在此处输入图像描述

0 投票
1 回答
52 浏览

swift - 框架内的UITapGesture不起作用

我正在尝试创建我的第一个 Cocoapod 框架,并且需要将一个简单的视图附加UITapGestureRecognizer到一个视图中,但是我无法action从我的框架中调用点击手势。我有:

我使用创建了一个框架pod lib create Foo,里面是

我可以说视图已正确传递到框架中,因为构建应用程序会给我一个蓝屏。

将手势识别器和selected功能ViewController也按预期工作。点击视图打印Gesture Recognized到控制台,所以我不理解框架发生了一些事情。

我已经尝试将-ObjC链接器标志添加到框架中,但这似乎没有做任何事情。我错过了什么吗?

0 投票
0 回答
712 浏览

ios - 使用 Carthage 或 CocoaPods 创建 Umbrella 框架

我通过手动添加子框架创建了 Umbrella 框架。

我想知道如何使用 Carthage 或 Cocoapods 管理这个子框架的依赖关系。

我知道 Apple 非常不鼓励创建 Umbrella 框架。

我还想让第三方框架安装可选,让应用程序开发人员了解框架内的所有依赖项并使框架大小最小化。

请建议我管理子框架依赖项(Carthage 或 Cocoapods)的最佳方法是什么?

提前致谢。

0 投票
0 回答
873 浏览

swift - 具有向后 xcode 版本兼容性的 Swift 私有框架

这是我第一个使用 Swift 语言的框架,它是私有框架。在新的 Xcode 9.3 发布之前,它按预期工作。升级更新后Xcode遇到这样的问题Module compiled with Swift 4.0.3 cannot be imported in Swift 4.1

在那之后,我才意识到框架不支持自动版本(Xcode/Swift)升级,是否有一些搜索发现有一个Universal or Fat Binary Framework单独的构建,而不是我之前错过的真实设备和模拟器的单独构建。

Edit Scheme-> Archive-> Post-Action->Run Script

这次我习惯了Swift Compiler - Language->Swift 3.3

这次我也得到了预期的Xcode 9.3输出Swift 4.1

当我尝试使用此框架运行项目时,Xcode 9.2会显示如下错误 Module compiled with Swift 4.1 cannot be imported in Swift 3.2.3:

尝试通过向后兼容性解决,但我没有找到。我怎样才能运行这个框架Xcode 9.2

框架支持:SwiftObjective C,Min OSiOS 8.0

**更新**

也得到了类似这个错误的东西 并在我的项目中compiled with newer version of Swift language (unknown ABI version 0x06) than previous files (4.0) file 'MAC location' for architecture armv7 尝试了这个

0 投票
1 回答
2167 浏览

ios - 混合语言(ObjC+Swift)动态框架中的公共 swift 类导入“私有”模块

我有一个动态框架MyFramwork.framework,在框架的项目中,Swift 代码和 ObjC 标头标记为受保护(在 MyFramwork.framework 内部使用)和公共(由应用程序外部使用)。MyFramwork.framework 也是 App 中的嵌入式框架

按照此处提到的步骤http://nsomar.com/project-and-private-headers-in-a-swift-and-objective-c-framework/,我创建了一个

带有所有受保护的标头(SWIFT_INCLUDE_PATHS= module.modulemap 文件所在目录的路径)

和一个PublicHeaders.h(我在我的伞形标题中导入MyFramwork.h)和所有公共标题

如何制作一个使用 App 中可用的 MyFramwork 私有代码的公共 Swift 类/结构?

如果我import MyFramwork_Private在来自 MyFramwork 的 swift 文件中,应用程序在构建 MyFramwork.framework 时,将尝试访问定义的私有头文件module MyFramwork_Private并且构建失败,因为应用程序看不到受保护的头文件

0 投票
2 回答
704 浏览

ios - 无法使用 swift 4.1 创建自定义框架

我一直在努力解决这个问题。所以我想在 swift 4.1 上创建一个新的简单的新框架。

我的代码是这样的:

然而,即使是这一小段代码也不适合我。公共类及其变量不会出现在头文件中。

我已经在 GitHub 上的链接上上传了这个项目。

谁能帮我弄清楚我在这里做错了什么?