下一篇:flutter_boost学习2:iOS集成flutter_boost
环境:MacOS、Xcode、cocoapods、flutter
练习GitHub:DayDayUp
前言
从flutter发布以来,flutter相关使用文章和第三方框架package如雨>后春笋不断涌现,我跟着其中一些文章也写了几个demo。
但是在使用flutter和iOS原生项目混合使用时发现一个比较痛的问题,那就是由于FlutterViewController没法销毁,每调用一次内存就会对应增大一次,这导致很难讲flutter真正用于项目中。
然后查询资料,很多人都遇到这种情况,一派是修改flutter源代码,这种方式太过于侵入,而另一派则是以阿里咸鱼团队的flutter_boost为代表,将所有flutter页面的跳转都转换为原生的跳转,在不修改任何源码的情况下解决这个痛点,
但网上大部分集成flutter_boost的文章都是说的Android的,iOS集成的文章很少,而且在集成flutter_boost的过程中遇到不少坑,特记录之
一、安装flutter环境
二、下载flutter_boost https://github.com/alibaba/flutter_boost.git
下载好后结构如下:
运行demo
1.1、
由于是使用cocoapods
管理的Native,所以需要先运行pod
,步骤如下:
打开terminal
并进入podfile
所在的cd /Users/xxx/xxx/flutter_boost-master/example/ios
文件夹
1.2、
运行命令pod install --verbose --no-repo-update
1.3 点击Runner.xcworkspace
遇到问题1:
/bin/sh: /packages/flutter_tools/bin/xcode_backend.sh: No such file or directory
原因:由于缺少
FLUTTER_ROOT
配置
解决方案:在Build Settings
里添加配置
FLUTTER_ROOT
,flutter安装的位置,可以使用$FLUTTER_PATH
查看
遇到问题2:
/Users/xxx/Downloads/flutter_boost-master/example/ios/Runner/DemoRouter.h:11:9: 'flutter_boost/FLBPlatform.h' file not found
原因:由于flutter大依赖包里还没有包含
flutter_bost
,导致编译出来的App.framework
也就不包含flutter_bost
了,
解决方案:
1、terminal
进入pubspec.yaml
所在的文件夹/Users/xxx/Downloads/flutter_boost-master/example
,
然后运行flutter packages get
2、terminal
进入Podfile
所在的文件夹/Users/xxx/Downloads/flutter_boost-master/example/ios
,
然后运行pod install --verbose --no-repo-update
遇到问题3:
error: /Users/xxx/Downloads/flutter_boost-master/example/ios/Flutter/flutter_assets: No such file or directory
原因:由于现在使用的
flutter
版本生成的flutter_assets
是放到App.framework
里的,把flutter_assets
从App.framework
里拷贝出来放到Flutter
文件夹里就可以了
补充问题:
据ctw_native遇到过的问题
dyld: Library not loaded
把App.framework加进Embedded Binaries
完美运行: