Flutter作为新一代的混合开发框架,凭借其优越的性能和简单的操作已逐渐进入广大移动端coder的视野,本文就来告诉大家怎样在已有的项目中加入Flutter模块。
1.首先创建一个空的文件夹(这里是Hybrid),然后在终端执行下面的命令:
$ cd Hybrid
$ flutter create -t module my_flutter
执行完之后把你原生的iOS项目移动到Hybrid文件下,此时Hybrid的结构是这样的(尽量保持一致),如下图:

2.把以下代码加到原生项目的Podfile中:
flutter_application_path = 'path/my_flutter'
load File.join(flutter_application_path,'.ios','Flutter','podhelper.rb')
install_all_flutter_pods(flutter_application_path)
添加完后应如下图所示:

接下来执行pod install。
再按照如下步骤关闭原生项目的Enable Bitcode:Build Settings->Build Options->Enable Bitcode。
到现在为止,你的原生项目应该可以编译成功。
如果编译出现Flutter.framework: Permission denied错误,不用紧张,这是Flutter自身的问题。解决方法如下:
第一种方法:把Flutter升级到1.10就好了。
第二种方法:不升级的情况下,可以改Flutter SDK 的一个文件,flutter/packages/flutter_tools/bin/xcode_backend.sh
144行
RunCommand find "${derived_dir}/engine/Flutter.framework" -type f -exec chmod a-w "{}" \;
改为
RunCommand find "${derived_dir}/engine/Flutter.framework" -type f -iname '.h' -exec chmod a-w "{}" \;
到此你的原生项目就可以编译成功了。
3.接下来配置一下AppDeleagte文件,基本就差不多了。按下面的图配置即可:


按照上面配置完成就ok了。接下来我们测试一下,代码如下:


其中[flutterViewControllersetInitialRoute:@"helloPage"];是配置路由的,可以任意跳转到想要的页面。
flutter代码中要使用window.defaultRouteName需引入‘dart:ui’。
嗯。。。。。。接下来就可以开始愉快的混编之旅啦!!!
官方英文文档链接如下:
Add Flutter to existing apps · flutter/flutter Wiki · GitHub
如本文档对您有所帮助,请点个赞,支持一下,谢谢。
网友评论