问题标签 [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 回答
89 浏览

ios - 不能在 Objective-C 中使用 Swift 生成的共享框架

这是旧的“dyld:未加载库:@rpath/libswiftCore.dylib”问题的变体。我很确定我知道问题是什么,但我对如何解决它没有任何想法。

我将参考我正在从事的项目,所以我不会用大量代码来混淆这个问题。

该项目生成一个可以扔到另一个项目中的dylib,并为开发人员抽象出一大块编码(客户端/服务器系统的通信层)。

我希望框架尽可能简单易用;即使这意味着让它变成一只大肥猪。我只是希望人们能够将它扔到他们的项目(Swift 或 ObjC)中,而不必担心使用不同的变体来玩模拟器和设备之类的东西。

我使用旧 Wenderlich 脚本的一个变体将x86 和 ARM 的可执行文件合并在一起。

注意注释掉的部分。有龙。

效果很好。在斯威夫特。

Objective-C,不是很好。这是因为需要将各种 Swift 框架引入到 Objective-C 程序中。

我打开了嵌入框架设置,目标尽职尽责地给了我所有的框架。

问题是每个架构都有仅适用于该架构的框架。它们不是“胖”框架,所以我手工构建的“胖”框架确实有点瘦,因为它只适用于某些架构。

我的问题是,是否有办法确保我嵌入的 Swift 框架可以变得“胖”,或者我是否必须放弃,为 Objective-C 程序员打包框架的不同变体。

有任何想法吗?

0 投票
3 回答
14240 浏览

ios - CocoaPods“目标具有传递依赖项,包括静态二进制文件”

我正在尝试将我在 GitHub 上找到的 swift 框架与 GoogleMaps、GooglePlaces 一起安装到我的 Xcode 项目中,但是由于某种原因,当我尝试安装 pod 文件时,它会给出以下错误

[!] 'Pods-project1' 目标具有传递依赖项,包括静态二进制文件: (/Users/user1/Desktop/project1/Pods/GoogleMaps/Base/Frameworks/GoogleMapsBase.framework, /Users/user1/Desktop/project1/Pods /GoogleMaps/Maps/Frameworks/GoogleMaps.framework 和 /Users/user1/Desktop/project1/Pods/GoogleMaps/Maps/Frameworks/GoogleMapsCore.framework)

这是我正在尝试安装的 Pod 文件:

这里也是我试图安装的 swift 框架的链接: https ://github.com/Orderella/PopupDialog

我不知道该怎么做,我尝试了多种方法,但似乎都不起作用。任何帮助,将不胜感激。

0 投票
0 回答
2830 浏览

ios - 在 Objective C 项目中使用 Swift 框架

我有一个 Swift 框架,可以在 Swift 项目中完美运行。现在我正在尝试在 Objective-C 项目中使用它。

Iv'e 将类更改为如下所示:

我将框架导入到 Objective-C 项目中,将其添加到Embedded BinariesLinked Frameworks and Libraries中。

在 ViewController.m 中,我像这样导入了框架:

我尝试创建类型为 Test 的实例:

测试是公认的,但是当我尝试将它构建到 iPhone 时它​​失败了,原因是:

如果我将它构建到模拟器上,它会失败,原因是:

我尝试将i386arm64添加到Valid Architectures

我试图将Build Active Architecture Only更改为No

我找到了很多没有帮助我解决问题的解决方案。

我会很感激任何帮助,谢谢。

解决了:

构建设置 -> 构建设置 -> 始终嵌入 Swift 标准库 -> 是

我更新了框架和 Objective-C 项目。

0 投票
1 回答
38 浏览

swift3 - 可以创建一个返回带有数据的 PickerView 的函数吗?

我正在尝试创建一个执行 API 调用并使用来自 API 调用的填充数据创建 PickerView 的框架。iOS 客户端将导入此框架并调用一个公开的函数,该函数应返回包含已加载数据的 PickerView。

我设法创建了一个创建 PickerView 的函数,但不知道如何在 PickerView 中插入数据。

0 投票
1 回答
6051 浏览

ios - 分发时在swift框架中隐藏源代码

我创建了一个用于分发给私人客户的快速框架,这是我第一次创建 iOS 框架,所以我对很多事情一无所知。我的源代码是否有可能被隐藏。我到处搜索,但找不到正确的答案。我不确定我是否彻底解释它,但为了简化,我不希望开发人员能够修改或查看我框架中的代码。开发人员不能直接去编辑他们嵌入到他们自己的应用程序中的代码吗?有没有办法禁止这样做。谢谢你。

0 投票
1 回答
469 浏览

swift - Carthage 静态框架 dSYM

根据迦太基文档

它还确保xcodebuild不会尝试dSYM为静态框架生成文件,否则会导致构建失败

这是否意味着最终的动态框架将具有所有静态链接依赖项的 dSYM,或者我根本没有这样的 dSYM?

0 投票
1 回答
1284 浏览

ios - 如何使用 Objectivec 文件和 Swift 文件创建框架

我有一个带有 Obiective-c 文件和 swift 文件的 Xcode 项目,现在我想创建一个包含这两个类的框架,这可能吗?

0 投票
1 回答
447 浏览

ios - 框架中的 IBDesignable 不适用于嵌入式项目

我创建了一个具有自定义 IBDesignable UIView 的框架。当我在项目中仅包含框架时,IBInspectable 属性不会显示在属性检查器中,但我可以以编程方式使用视图属性。

我检查了几篇关于堆栈溢出的帖子以及类似问题的解决方案,发现这个回复很有用https://stackoverflow.com/a/39999914/5548640。当我在 swift 中开发框架时,我通过创建扩展而不是类别来尝试此解决方案(因为 swift 中没有类别)。此解决方案无法按预期工作。

我不希望我的框架用户看到我的代码,但应该能够使用 @IBDesignable @IBInspectable 功能。此外,我不希望框架用户子类化以使用 IBInspectable 属性。

0 投票
0 回答
739 浏览

ios - 无法在 Swift 动态框架中加载模块映射

我正在开发一个 Swift 动态框架,其中包含一些 Objective-C 代码。我需要使用一些遗留的 Objective-C 代码而不将代码暴露给它。我开始知道我可以使用模块映射来避免在框架中将标题添加为公共。我一直在使用这个关于如何创建模块映射的链接。我创建的模块图看起来像这样。

之后,我尝试在 Swift 文件中导入模块,但没有自动完成。无论如何,我写了模块名称并尝试构建它。我在 Swift 文件中遇到错误,提示“无法构建 Objective-C 模块”。在模块映射文件中,我看到错误为“无法找到标头”。这是错误

在此处输入图像描述

所以我尝试添加构建设置的$(SRCROOT)/ProjectName/路径Include Path。之后它无法找到伞头。

在此处输入图像描述

我搜索了 StackOverflow 和 Google 的大部分内容,但找不到任何对我有帮助的东西。这是我第一次使用模块映射,我被困在这里不知道如何进一步解决这个问题。如果有人能指出我错过了什么,或者你能建议一些其他可以帮助我的资源,那就太好了。谢谢!

0 投票
2 回答
1810 浏览

xcode - 添加从 IPA 中提取的 swift 框架

我正在尝试运行由另一个开发人员创建的 IOS 应用程序,该应用程序使用我无法访问的私有存储库中的 cocoapod。我设法从 IPA 中提取 .framework 包并将其添加到 xcode 项目中,但它未被识别(我得到“没有这样的模块”)。

有可能做我想要实现的目标吗?

到目前为止,我已经尝试过:

  • 在发布中构建它,因为我猜 IPA 中的框架正在发布中
  • 将 .framework 添加为嵌入式二进制文件
  • 将 .framework 添加为链接框架和库
  • 将 .framework 复制到 ~/System/Library/Framework
  • 更新框架搜索路径,包括 $(SRCROOT)、递归、硬编码路径等。
  • 将 .framework 位置更改为“相对于构建产品”

谢谢!