Flutter与iOS混编

方案一

1.创建flutter module
flutter create --template module my_flutter

2.配置Podfile文件,引入flutter module
flutter_application_path = '../my_flutter'
load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')

3.执行pod install

4.引用Flutter头文件
#import <Flutter/Flutter.h>
#import <FlutterPluginRegistrant/GeneratedPluginRegistrant.h>

5.示例


图片.png

6.效果


图片.png

7.注意
1)报错找不到podhelper.rb文件
需要通过vscode或者其他编译器运行flutter项目,会生产podhelper.rb文件

方案二

将flutter以framework的形式通过Cocoapods引入iOS工程

1.创建外层文件夹,包含ios工程 & pod工程


图片.png

2.在pod工程中导入flutter工程


图片.png

3.在flutter工程中即flutter_module_for_ios,创建move_file.sh,此脚本为了自动生成build产物,然后将所有的framework汇总到ios_frameworks中

4.配置spec文件


图片.png
 s.static_framework = true
  p = Dir::open("ios_frameworks")
  arr = Array.new
  arr.push('ios_frameworks/*.framework')
  s.ios.vendored_frameworks = arr

5.iOS工程可以通过引入本地Pod的方式,进行使用
配置Podfile文件

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'FlutterProject' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!

  # Pods for FlutterProject
  pod 'MyFlutterPod', :path => '../MyFlutterPod'

  target 'FlutterProjectTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'FlutterProjectUITests' do
    # Pods for testing
  end

end

6.执行pod install

知识点总结

1.flutter工程使用插件(三方库)
需要配置pubspec.yaml文件
例如:

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^0.1.2
  #添加 数据持久化插件  https://pub.flutter-io.cn/packages/shared_preferences
  shared_preferences: ^0.5.4+3

配好后,执行命令安装flutter pub get

2.编译flutter生成debug环境编译产物
flutter build ios --debug // 编译debug产物
或者
flutter build ios --release --no-codesign // 编译release产物

3.创建pod模版
pod lib create xxx

参考文献

http://www.cocoachina.com/articles/464387