如何在flutter插件中导入外部iOS框架?

Posted

技术标签:

【中文标题】如何在flutter插件中导入外部iOS框架?【英文标题】:How to import external iOS framework in flutter plugin? 【发布时间】:2019-06-17 03:33:45 【问题描述】:

我正在使用 RTSP 协议为流视频制作 flutter 插件。我为android开发它没有问题,但在ios中事情更复杂。我必须使用外部库 (SGPlayer) 来让播放器工作。我还下载了使用这个库的演示,似乎可以工作。这个库不在 Cocoapods 上,我需要将它从我的文件系统中直接导入到插件项目中。我想使用的插件的下载和编译文件结构如下所示:

我的问题是将“.framework”扩展文件正确添加到 iOS 项目中,以便我可以使用它来开发 Flutter 插件(iOS 部分)。

更新: 我使用此链接中的说明使用框架构建了项目:https://github.com/flutter/flutter/issues/17978

现在的问题是,在编译框架时它会更改伞头,因为我认为它没有使用框架 module.modulemap 而是另一个。结果是只导入了一些标头和实现,而不是全部。

【问题讨论】:

您好,有什么解决办法吗? 对不起伙计,我把所有部分都移到了主项目中,放弃了创建插件的想法。我没有时间在工作中找到解决这个问题的方法。 【参考方案1】:

1.将myFramework.framework放到iOS插件文件夹/ios ex: myPlugin/ios

2.更新iOS插件文件:myPlugin/ios/myPlugin.podspec 在文件底部的“end”上方添加以下行

s.vendored_frameworks = 'myFramework.framework'

在终端:cd to myPlugin/example/ios 运行命令

pod install

pod update

现在我们可以通过在XCode中打开iOS项目(example/ios/Runner.xcworkspace)找到iOS插件代码并进入

【讨论】:

【参考方案2】:

@Lorenzo 你可以打包你的插件并制作私有的 CocoaPod 或 Carthage repo。 Here is好文章howtos

【讨论】:

首先感谢您的回答!目前,我有一个新问题,为了让事情正常进行,我必须使用我在答案更新中提到的 Github 页面中找到的脚本来导入本地框架。问题是我必须从 Podfile 中删除 use_frameworks!,如果我愿意,现在我不可能使用 Swift Pod,但是如果我离开它,然后我尝试运行应用程序,我会遇到很多错误。在这一点上,我的问题是:是否可以在 Swift 插件中使用 Objective-c pod? .podspec 和 Podfile 设置如何? 嘿,但是创建私有 CocoaPod 存储库的 IDEA 是什么?我应该创建私有 CocoaPod,然后如何将我的本地 .framework 与该 CocoaPod 存储库连接起来?

以上是关于如何在flutter插件中导入外部iOS框架?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在 Flutter WebView 中导入外部脚本

如何在下一个 js 中从节点模块外部的文件夹中导入模块

如何在 Dart/Flutter 上的测试中导入测试实用程序文件

在 Swift 框架中导入 CommonCrypto

如何在 Vue 组件中导入外部函数?

Flutter插件开发未解决参考:io