简体   繁体   中英

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

In a Flutter plugin , I would like to use an Objective-C framework in my iOS part written in swift , and after that using it in a Flutter project that uses Swift as iOS language. After some research about it (I'm not an iOS developer) I find out that what I would like to do is possible by importing the header in the file that act as Bridging header between swift and Objective-C, but the bridging header in the flutter plugin is created automatically if use_frameworks! is defined in the Podfile (as far as I know), and I didn't understand how actually import the header from the Objective-C (I think by defining something in the podspec but I don't know) pod in that. In fact, if I try to import something from the Objective-C pod, XCode complains (and the compiler too) about it by saying that it "doesn't find the module with name <framework name>" or that it can't build Objective-C code. If I try to use the framework in an Objective-C plugin I'm able to use it but only if I comment out use_frameworks! from the project Podfile

At the end, I was wondering if it's possible to use Objective-c external framework in Swift plugin for developing a flutter plugin.

I suggest you check out starflut package https://pub.dev/packages/starflut . But most likely what you are trying to accomplish has been done more simply for you in another package but if you are totally bent on doing it yourself I think you should try the package

If it's still actual issue for some of developers, here's the possible solution.

In the .podspec file of your plugin paste this string for remote frameworks

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

    s.dependency 'GoogleWebRTC'
end

Or, for local frameworks, paste these

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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