Flutter 与 iOS 混编的三种方式

1,445 阅读1分钟

最近单位项目涉及到了flutter混编,就去官方文档学习了一下,这里做一下简单记录,顺便翻译翻译。方便大家互相学习。

开始

首先必须有的条件 一个文件夹里包含iOS项目、Flutter项目 没有Flutter项目,请自行执行以下命令行

cd 项目路径
flutter create --template module my_flutter

如下图所示 image.png

Plan A

  1. 在iOS工程Podfile头部中添加
flutter_application_path = '../my_flutter'
load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')
  1. 然后在添加
target 'MyApp' do
  install_all_flutter_pods(flutter_application_path)
end
  1. 如图所示 image.png

  2. pod install

Plan B 生成Framework 手动导入

  1. cd 路径/my_flutter
  2. flutter build ios-framework --output=这里拼接你想要输出framework的路径
  3. 此时在这个路径下会生成三个文件夹,分别是DebugProfileRelease
  4. 手动引入其中一个文件夹的App.frameworkFlutter.framework,并且BuildSetting -> Framework Search Paths中,要有刚刚输出framework的路径,比如:"$(SRCROOT)/../Debug"其实把文件夹拖进去也行,但是你要确定后续不会出现路径问题。 image.png

Plan C 类似 Plan B,用cocoapods

  1. cd 路径/my_flutter

  2. flutter build ios-framework --cocoapods --output=这里拼接你想要输出framework的路径

  3. 这时候也会生成三个文件夹,分别是DebugProfileRelease,但是内容跟Plan B 不太一样

  4. 然后在PodFile中添加这么一行,`pod 'Flutter', :podspec => 'some/path/MyApp/Flutter/[build mode]/Flutter.podspec'。如图所示,当然这里只是做演示,暂时没有考虑相对路径的问题!!请注意。image.png

  5. 收到引入对应文件夹中的App.framework并且同Plan B中的第4、5步,做好确保image.png

end