目前官方已经提供了flutter module的集成到iOS项目的文档;
适用:flutter create -t module my_flutter创建的项目
优点:
1.这种方式可以热重载UI调试
2.可以iOS原生和flutter一起开发
缺点:
1.每个人都需要配置Flutter环境;
2.每个人都要拉取Flutter项目代码;
3暂时只能集成flutter module的项目,无法集成flutter app项目
参考文档:https://github.com/flutter/flutter/wiki/Add-Flutter-to-existing-apps#experiment-integrate-flutterviewcontroller
本文介绍另一种iOS项目集成Flutter的方式
优点:
01可以把Flutter和ios项目完全隔离开来,
02.iOS小组不再需要 搭建Flutter环境;
缺点:
是只能flutter开发调试完成,然后发给iOS原生项目使用
适用:
flutter create my_flutter_app创建的项目
1 flutter小组导出.framework/.a和资源文件;
build_for_ios.sh 文件会在下面贴出来
01把build_for_ios.sh复制到flutter项目根目录,
02在终端cd到flutter根目录,输入"bash build_for_ios.sh"回车
03稍等片刻,所有产物都copy到build_for_ios文件夹
build_for_ios.sh
#前提flutter一定要是app项目: pubspec.yaml里 不要加
#module:
# androidPackage: com.example.myflutter
# iosBundleIdentifier: com.example.myFlutter
echo "Clean old build"
find . -d -name "build" | xargs rm -rf
flutter clean
rm -rf build
rm -rf build_for_ios
echo "开始获取 packages 插件资源"
flutter packages get
echo "开始构建 release for ios"
flutter build ios --release --no-codesign
echo "构建 release 已完成"
echo "开始 处理framework和资源文件"
mkdir build_for_ios
#######分割线######
cp -r build/ios/Release-iphoneos/*/*.framework build_for_ios
cp -r .ios/Flutter/App.framework build_for_ios
#注意注意:flutter 1.2版本后flutter_assets的位置变了, (直接build到app.framework里面了,不必手动处理它了)
cp -r .ios/Flutter/engine/Flutter.framework build_for_ios
cp -r .ios/Flutter/FlutterPluginRegistrant/Classes/GeneratedPluginRegistrant.* build_for_ios
#******特***别***注***意***
#如果flutter生成的ios项目在.ios目录 则需要把上方脚本里的ios改为.ios
#******特***别***注***意***
如果生成的是.a而不是.framework 这里说一下怎么处理
1.找到flutter模块中自动生成的iOS项目
(可能存在.ios文件夹中, 也可能存在ios文件夹中)
2.找到podfile文件(没有的话可以新建一个)
添加"use_frameworks!" 例如下方示例:
platform :ios, '8.0'
use_frameworks!
target 'Runner' do
flutter_application_path = '../'
eval(File.read(File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')), binding)
end
再次执行打包脚本 即可正常生成.framework文件

ios小组直接在项目中导入.framework/.a和资源文件

ios项目的targets选择当前target ->Build Phases ->加号 ->Copy Files ->把从build_for_ios文件夹拉进项目的framework都添加上

至此集成完毕
虽然这样也是可以的, 但感觉还是有些麻烦,
最好是把build_for_ios文件夹所有的文件pod到远端,
这样iOS项目通过pod的方式集成flutter, 更简洁些~
瘦身:
集成Flutter后,ipa包会+15M,安装后占用+44M;
使用下面链接的方法可以使ipa包缩减至+5.4M,安装后占用缩减至+14.5M;
https://www.jianshu.com/p/b16ff23363c0
网友评论