繁体   English   中英

如何在 Flutter 插件的 Swift 编写的 iOS 部分中使用 Objective-C 框架

[英]How to use Objective-C framework in a Swift written iOS part of a flutter plugin

Flutter 插件中,我想在我用 swift 编写的 iOS 部分中使用Objective-C框架,然后在使用 Swift作为 iOS 语言的Flutter 项目中使用它。 经过对它的一些研究(我不是 iOS 开发人员)我发现我想要做的事情是通过在文件中导入头文件作为swift 和 Objective-C 之间的桥接头文件来实现的,但是桥接头文件在如果use_frameworks! ,flutter 插件会自动创建use_frameworks! 是在 Podfile 中定义的(据我所知),我不明白实际上是如何从 Objective-C(我认为是通过在 podspec 中定义一些东西,但我不知道)pod 中导入标头的。 事实上,如果我尝试从 Objective-C pod 中导入一些东西, XCode 会抱怨(以及编译器),说它"doesn't find the module with name <framework name>"或者它不能构建 Objective-C 代码。 如果我尝试在 Objective-C 插件中使用该框架,我可以使用它,但use_frameworks!是我注释掉use_frameworks! 来自项目 Podfile

最后,我想知道是否可以在Swift插件中使用Objective-c外部框架来开发flutter插件。

我建议您查看starfluthttps://pub.dev/packages/starflut 但很可能你想要完成的事情已经在另一个包中更简单地为你完成,但如果你完全一心想要自己做,我认为你应该尝试这个包

如果对于某些开发人员来说这仍然是实际问题,这里是可能的解决方案。

在插件的.podspec文件中,为远程框架粘贴此字符串

Pod::Spec.new do |s|
    ...

    s.dependency 'GoogleWebRTC'
end

或者,对于本地框架,粘贴这些

Pod::Spec.new do |s|
    ...

    s.preserve_paths = 'WebRTC.framework'
    s.xcconfig = { 'OTHER_LDFLAGS' => '-framework WebRTC', 'ENABLE_BITCODE' => 'NO' }
    s.vendored_frameworks = 'WebRTC.framework'
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM