iOS原生项目中引入Flutter模块攻略

        Flutter作为新一代的混合开发框架,凭借其优越的性能和简单的操作已逐渐进入广大移动端coder的视野,本文就来告诉大家怎样在已有的项目中加入Flutter模块。

1.首先创建一个空的文件夹(这里是Hybrid),然后在终端执行下面的命令:

$ cd Hybrid

$ flutter create -t module my_flutter

执行完之后把你原生的iOS项目移动到Hybrid文件下,此时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)

添加完后应如下图所示:

Podfile

接下来执行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文件,基本就差不多了。按下面的图配置即可:

AppDeleagte.h


AppDelegate.m

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

原生代码
flutter代码

其中[flutterViewControllersetInitialRoute:@"helloPage"];是配置路由的,可以任意跳转到想要的页面。

flutter代码中要使用window.defaultRouteName需引入‘dart:ui’。

嗯。。。。。。接下来就可以开始愉快的混编之旅啦!!!

官方英文文档链接如下:

Add Flutter to existing apps · flutter/flutter Wiki · GitHub

如本文档对您有所帮助,请点个赞,支持一下,谢谢。

你可能感兴趣的:(iOS原生项目中引入Flutter模块攻略)