簡體   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