参考:
iOS和flutter交互
当某天我们的公司需要在原生项目的基础上集成flutter,那么这时候我们需要怎么办呢?
下面我给大家介绍通过cocoapods集成的方式,前提是安装了flutter的运行环境哦
iOS通过pod的方式接入Flutter项目
一、首先进入项目的根目录创建flutter模块

// 进入根目录
cd /Users/fly/Desktop/sf_swift_flutter
// 创建flutter模块 其中flutter_lib是flutter模块的名称,可以自己定义
flutter create -t module flutter_lib
二、创建完毕之后,通过cocoapods,在你的podfile中添加如下代码
# flutter相关的设置
#flutter模块的路径
flutter_application_path = '../flutter_lib'
load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')
# 引入三方
target 'iOS集成flutter' do
use_frameworks!
# oc 手写布局三方库
pod 'Masonry', '~> 1.1.0'
# 引入flutter
install_flutter_engine_pod
install_all_flutter_pods(flutter_application_path)
end
三、创建配置文件debug.xcconfig, release.xcconfig, flutter.xcconfig

在配置文件中,内容如下:
flutter.xcconfig内容如下:
// 具体路径根据自己项目所存放的位置而定
#include "../flutter_lib/.ios/Flutter/Generated.xcconfig"
ENABLE_BITCODE=NO
debug.xcconfig内容如下:
#include "Flutter.xcconfig"
// 如果使用了cocoapods,那么需要引入cocoapods的config文件,因为如果自定义了config,那么cocoapods的config就不会自动指定
// 为什么我下面注释掉了,因为下一步我在项目里指定了文件
//#include "Pods/Target Support Files/Pods-iOS集成flutter/Pods-iOS集成flutter.debug.xcconfig"
release.xcconfig内容如下:
#include "Flutter.xcconfig"
FLUTTER_BUILD_MODE=release
// 如果使用了cocoapods,那么需要引入cocoapods的config文件,因为如果自定义了config,那么cocoapods的config就不会自动指定
// 为什么我下面注释掉了,因为下一步我在项目里指定了文件
//#include "Pods/Target Support Files/Pods-iOS集成flutter/Pods-iOS集成flutter.release.xcconfig"
四、在项目中配置xcconfig文件

五、在原生项目中引入flutter的头文件就可以使用了
import Flutter
结语
下面我说一说我在使用原生加flutter的混合开发中总结的经验
1.使用xcode直接运行在模拟器上的项目当断开xcode的时候,模拟器上的项目依然可以跑flutter的内容
由于我们的电脑中安装了flutter的环境,所以断开了xcode之后,模拟器还可以从电脑上找到flutter的运行环境所以可以运行。
2.使用xcode直接运行在真机上的项目不断开xcode的时候,真机上的项目依然可以跑flutter的内容
由于没有断开xcode开发工具,它运行在电脑端,会去在电脑上找到flutter的运行环境,所以可以运行
3.使用xcode直接运行在真机上的项目断开xcode的时候,真机上的项目不可以跑flutter的内容
由于直接运行xcode打包在真机上的项目没有打包flutter的运行环境,所以不行
4.使用xcode打包成ipa文件,上传到fir.im上下载后的项目可以跑flutter的内容
由于打包成ipa文件的时候已经打包了flutter的运行环境,所以可以跑
网友评论