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

ios - 将框架和应用程序扩展目标添加到 IOS 应用程序项目中,我做对了吗?

我正在研究 IOS/Swift 开发,我想构建一个 IOS 应用程序,将来会有自己的 Today Extension。我读过最好将应用程序及其扩展之间的通用逻辑(例如访问 Internet 资源、对结果执行某些工作等的逻辑)放入自定义框架中。因为我认为我需要在开发应用程序期间更改框架和应用程序代码,我想避免在单独的项目中构建框架,而不是使用 Show In Finder 功能来定位框架包,然后将其拖放到应用程序中项目..所以我想知道这是否是使用应用程序设置工作区的正确方法,它使用的框架和应用程序的今日扩展:

  1. 使用 IOS App 目标创建一个新项目
  2. 在 Project Navigator 中选择项目,然后选择Editor->Add Target...并指定一个Cocoa Touch Framework
  3. Editor->Add Target...并指定Today Extension
  4. 在链接框架和库中添加框架

通过这种方式,我看到对框架源的更改不需要重新编译框架目标,可能是因为即使我只构建和运行使用该框架的 IOS App 目标,项目也知道需要重新编译框架源?我做对了吗?我已经看到,以这种方式创建的 Today Extension 没有在 IOS App 的Build Phases -> Target Dependencies中列出框架,但是当我更新它时,它们都正确地使用了框架的更新代码。

然后,我在编译项目时注意到以下警告,但我不知道它是否与我设置项目的方式有关:

顺便说一句,产品文件夹中的条目总是红色是否正常?是不是因为我没有为 IOS 设备构建的付费开发者帐户,所以我只为 IOS 模拟器构建?这是否会阻止我构建一个可以为其他项目导出的框架,因为我无法通过右键单击框架产品并选择在 Finder 中显示来找到框架包(因此我无法拖放它到另一个项目)?

我希望我已经足够清楚了,你会指出我正确的方向,以了解开始我的新项目的建议方式是什么:)

0 投票
0 回答
109 浏览

ios - 创建自定义框架ios时如何删除警告?

我创建了自定义框架,它工作得也很好,但在日志中显示警告。我在自定义框架类中导入了 GoogleMobileAds 框架。

GAD_GTMStringEncoding 类在 /Users/vivek/Library/Developer/CoreSimulator/Devices/535B731F-791C-465A-BC4D-AF9473F73FAD/data/Containers/Bundle/Application/27D53836-5514-49BA-8DDE-4B26A4C64D25/LinTestApp.app 中实现/Frameworks/LinOneSDK.framework/LinOneSDK 和 /Users/vivek/Library/Developer/CoreSimulator/Devices/535B731F-791C-465A-BC4D-AF9473F73FAD/data/Containers/Bundle/Application/27D53836-5514-49BA-8DDE-4B26A4C64D25/ LinTestApp.app/LinTestApp。将使用两者之一。哪一个是未定义的。

GADSKStoreProductViewControllerDelegate 类在 /Users/vivek/Library/Developer/CoreSimulator/Devices/535B731F-791C-465A-BC4D-AF9473F73FAD/data/Containers/Bundle/Application/27D53836-5514-49BA-8DDE-4B26A4C64D25/LinTestApp.app 中实现/Frameworks/LinOneSDK.framework/LinOneSDK 和 /Users/vivek/Library/Developer/CoreSimulator/Devices/535B731F-791C-465A-BC4D-AF9473F73FAD/data/Containers/Bundle/Application/27D53836-5514-49BA-8DDE-4B26A4C64D25/ LinTestApp.app/LinTestApp。将使用两者之一。哪一个是未定义的。

GADProductsRequestDelegate 类在 /Users/vivek/Library/Developer/CoreSimulator/Devices/535B731F-791C-465A-BC4D-AF9473F73FAD/data/Containers/Bundle/Application/27D53836-5514-49BA-8DDE-4B26A4C64D25/LinTestApp.app 中实现/Frameworks/LinOneSDK.framework/LinOneSDK 和 /Users/vivek/Library/Developer/CoreSimulator/Devices/535B731F-791C-465A-BC4D-AF9473F73FAD/data/Containers/Bundle/Application/27D53836-5514-49BA-8DDE-4B26A4C64D25/ LinTestApp.app/LinTestApp。将使用两者之一。哪一个是未定义的。

GADActiveViewMonitor 类在 /Users/vivek/Library/Developer/CoreSimulator/Devices/535B731F-791C-465A-BC4D-AF9473F73FAD/data/Containers/Bundle/Application/27D53836-5514-49BA-8DDE-4B26A4C64D25/LinTestApp.app 中实现/Frameworks/LinOneSDK.framework/LinOneSDK 和 /Users/vivek/Library/Developer/CoreSimulator/Devices/535B731F-791C-465A-BC4D-AF9473F73FAD/data/Containers/Bundle/Application/27D53836-5514-49BA-8DDE-4B26A4C64D25/ LinTestApp.app/LinTestApp。将使用两者之一。哪一个是未定义的。

GADActiveViewGMSGHandler 类在 /Users/vivek/Library/Developer/CoreSimulator/Devices/535B731F-791C-465A-BC4D-AF9473F73FAD/data/Containers/Bundle/Application/27D53836-5514-49BA-8DDE-4B26A4C64D25/LinTestApp.app 中实现/Frameworks/LinOneSDK.framework/LinOneSDK 和 /Users/vivek/Library/Developer/CoreSimulator/Devices/535B731F-791C-465A-BC4D-AF9473F73FAD/data/Containers/Bundle/Application/27D53836-5514-49BA-8DDE-4B26A4C64D25/ LinTestApp.app/LinTestApp。将使用两者之一。哪一个是未定义的。

GADCachedFile 类在 /Users/vivek/Library/Developer/CoreSimulator/Devices/535B731F-791C-465A-BC4D-AF9473F73FAD/data/Containers/Bundle/Application/27D53836-5514-49BA-8DDE-4B26A4C64D25/LinTestApp.app 中实现/Frameworks/LinOneSDK.framework/LinOneSDK 和 /Users/vivek/Library/Developer/CoreSimulator/Devices/535B731F-791C-465A-BC4D-AF9473F73FAD/data/Containers/Bundle/Application/27D53836-5514-49BA-8DDE-4B26A4C64D25/ LinTestApp.app/LinTestApp。将使用两者之一。哪一个是未定义的。

GADMAdNetworkAdapter 类在 /Users/vivek/Library/Developer/CoreSimulator/Devices/535B731F-791C-465A-BC4D-AF9473F73FAD/data/Containers/Bundle/Application/27D53836-5514-49BA-8DDE-4B26A4C64D25/LinTestApp.app 中实现/Frameworks/LinOneSDK.framework/LinOneSDK 和 /Users/vivek/Library/Developer/CoreSimulator/Devices/535B731F-791C-465A-BC4D-AF9473F73FAD/data/Containers/Bundle/Application/27D53836-5514-49BA-8DDE-4B26A4C64D25/ LinTestApp.app/LinTestApp。将使用两者之一。哪一个是未定义的。

GADTiming 类在 /Users/vivek/Library/Developer/CoreSimulator/Devices/535B731F-791C-465A-BC4D-AF9473F73FAD/data/Containers/Bundle/Application/27D53836-5514-49BA-8DDE-4B26A4C64D25/LinTestApp.app 中实现/Frameworks/LinOneSDK.framework/LinOneSDK 和 /Users/vivek/Library/Developer/CoreSimulator/Devices/535B731F-791C-465A-BC4D-AF9473F73FAD/data/Containers/Bundle/Application/27D53836-5514-49BA-8DDE-4B26A4C64D25/ LinTestApp.app/LinTestApp。将使用两者之一。哪一个是未定义的。

GADTimingManager 类在 /Users/vivek/Library/Developer/CoreSimulator/Devices/535B731F-791C-465A-BC4D-AF9473F73FAD/data/Containers/Bundle/Application/27D53836-5514-49BA-8DDE-4B26A4C64D25/LinTestApp.app 中实现/Frameworks/LinOneSDK.framework/LinOneSDK 和 /Users/vivek/Library/Developer/CoreSimulator/Devices/535B731F-791C-465A-BC4D-AF9473F73FAD/data/Containers/Bundle/Application/27D53836-5514-49BA-8DDE-4B26A4C64D25/ LinTestApp.app/LinTestApp。将使用两者之一。哪一个是未定义的。

0 投票
1 回答
326 浏览

ios - 是否可以在 ios 的自定义框架中使用 NSStreamDelegate 方法?

我正在尝试创建一个将与外部附件对话的自定义框架工作

我试过这样,streamDelegate 只会崩溃。没有此代码 _session?.inputStream?.delegate = self 它工作正常。

我怀疑是否可以在创建自定义框架时使用 ios 委托方法。如果不是,使用什么程序??

谢谢

0 投票
1 回答
87 浏览

swift - 使用 Swift 和 SpriteKit 的自定义框架:无法访问自定义类

我创建了我的自定义框架swift,让我们说MyCustomFramework

在这个项目中,我添加了一个新的swift 文件XYZCustomClass它看起来像这样:

我将我的项目构建为iOS Generic Device并获取我的MyCustomFramework.framework位置。

然后我MyCustomFramework.framework在个人项目中导入,并将其导入到好的文件中:

我终于得到以下错误:

“路径”/MyProject/GameScene.swift:44:20: XYZCustomClass' 不可用:找不到此类的 Swift 声明

作为附加信息,该项目已使用SpriteKit语言swift构建。

先感谢您,

0 投票
1 回答
154 浏览

ios - 使用 swift 创建 iOS 框架

我正在尝试使用 swift 创建一个 iOS 框架。我关注这个博客以及其他一些博客,但输出不是我想要的方式。

下面是我的原始源文件

将框架添加到我的项目中后,它会创建一个TestFramwork-Swift.h

在此处输入图像描述 在此处输入图像描述

你可以看到它不包含我的描述。我想要像 Apple 这样的框架头文件。

在此处输入图像描述

谁能帮我弄清楚这一点。我无法理解我在哪里做错了。我也无法在我的框架中添加更多 swift 文件。

0 投票
0 回答
68 浏览

ios - 自定义 ios 框架(静态框架)会在另一个线程中运行还是在 UI 线程中运行?

我对在 ios 中创建自定义框架非常陌生。我想在新的自定义线程中运行自定义框架,我该怎么做?

0 投票
0 回答
925 浏览

ios - 如何在 ios/swift 的自定义框架中使用 struct?

我需要在我的自定义框架中使用 struct,如何执行以下操作?

这是我的框架:

MyFramework.framework

这是我的应用程序:

我想要的是我的应用程序将数据发送到结构和我的框架以填充结构并完成功能。

如何做到这一点?

0 投票
2 回答
17766 浏览

ios - 错误 ITMS-90206 无效的捆绑包包含不允许的文件“框架”

我通过 Xcode 将我的应用程序上传到商店时遇到问题,尤其是这个。

无效的 Bundle 包含不允许的文件框架

我看到很多关于这个错误的帖子,但都在谈论Extension App,我不使用。

我正在使用Custom frameworkCocoapods

你可以在这里看到我的树:

树 Xcode 项目自定义框架

  • XXX是我的项目应用名称
  • SharedXXX是我的custom framework
  • Pods是由创建的项目cocoa pods

这是我的可可podFile

custom framework( SharedXXX )的构建设置:

自定义框架构建设置

我将 Embedded 属性设置为Yes

custom framework( SharedXXX )的常规设置:

自定义框架常规设置

Cocoapods 提供的框架是链接的。

最后,

主项目的常规设置(应用程序项目:在树上称为XXX )

主要项目

任何想法 ?

0 投票
0 回答
94 浏览

ios - 未加载库(Dyld 消息)。仅在 32 位设备上

我在 iPhone 5C 上遇到了问题。我的应用程序在启动时直接崩溃,并显示以下消息:

我尝试使用 iPhone 5S、6 和 6S 并且它可以工作,但是当我尝试在 4S、5 和 5C 设备上运行它时出现问题。

基于这些测试,我认为问题与架构有关。

我知道这类问题,但从未在少数型号上遇到过。

--

这是我在SharedFitback.plist上的配置

  • 架构 自定义库 plist 有效架构 - Dyld 消息:未加载库

  • 链接 自定义库 plist 链接 - Dyld 消息:未加载库

--

这是我在Patient.app - General 部分的配置

自定义框架 - Dyld 消息:未加载库

听起来 SharedFitback 只兼容 64 位设备

有人知道这个问题吗?

0 投票
1 回答
52 浏览

ios - iOS 框架互操作性

我目前正在重构一个包含大量类的 iOS 应用程序,并且根据要求,我制作了一些 CocoaTouch 框架(同样,根据要求,不是静态库)来根据它们的目的(模型、请求等)包含这些类. 但是,框架 A包含我需要在框架 B中使用的类,我想问是否有人知道如何“连接”这两个框架?像某种链接,也许?