关注【搜狐技术产品】公众号,第一时间获取技术干货
导读
Flutter又双叒叕来了!本周推送是我们Flutter系列文章的最终篇!《Flutter移动端实战手册》回归实际应用场景,详细讲述Flutter在移动端的应用实践。话不多说,让我们一起来阅读这篇Flutter系列文章的收官之作吧~
Flutter系列文章一共分为三篇:
1.《十分钟带你入坑Flutter》:详细介绍了Flutter整体架构及未来发展前景,并且对Flutter的特性和Dart语言进行了详细介绍。
2.《深入理解Flutter多线程》:深入讲解了Flutter的多线程,以及底层的系统Runner,并且将Flutter的协程、Isolate、iOS的GCD进行了对比。
3.《Flutter移动端实战手册》:详细讲述Flutter跨平台实现方案,以及DevTools调试工具集。
iOS接入Flutter
在进行iOS
和Flutter
的混编时,iOS
比Android
的接入方式略复杂,但也还好。现在市面上有不少接入Flutter
的方案,但大多数都是千篇一律相互抄的,没什么意义。
进行Flutter
混编之前,有一些必要的文件:
xcode_backend.sh
文件,在配置flutter
环境的时候由Flutter
工具包提供;xcconfig
环境变量文件,在Flutter
工程中自动生成,每个工程都不一样。
xcconfig文件
xcconfig
是Xcode
的配置文件,Flutter
在里面配置了一些基本信息和路径,接入Flutter
前需要先将xcconfig
接入进来,否则一些路径和信息将会出错或找不到。
Flutter
的xcconfig
包含三个文件,Debug.xcconfig
、Release.xcconfig
、Generated.xcconfig
,需要将这些文件配置在下面的位置,并且按照不同环境配置不同的文件。
1Project -> Info -> Development Target -> Configurations
有些比较大的工程已经在Configurations
中设置了xcconfig
文件,由于每个Target
的一种环境只能配置一个xcconfig
文件,所以可以在已有的xcconfig
文件中import
引入Generated.xcconfig
文件,并且不需要区分环境。
脚本文件
xcode_backend.sh
脚本文件用来构建和导出Flutter
产物,这是Flutter
开发包为我们默认提供的,需要在工程Target
的Build Phases
加入一个Run Script
文件,并将下面的脚本代码粘贴进去。需要注意的是,不要忘记前面的/bin/sh
操作,否则会导致权限错误。
1/bin/sh "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" build
2/bin/sh "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" embed
在xcode_backend.sh
中有三个参数类型,build
、thin
、embed
,thin
没有太大意义,其他两个则负责构建和导出。
混合开发
随后可以对Xcode
工程进行编译,这时候肯定会报错的,但是不要慌张,报错后我们在工程主目录下会发现一个名为Flutter
的文件夹,其中会包含两个framework
,这个文件夹就是Flutter
的编译产物,我们将这个文件夹整体拖入项目中即可。
这时候就可以在iOS
工程中添加Flutter
代码了,下面是详细步骤:
1.将AppDelegate
的集成改为FlutterAppDelegate
,并且需要遵循FlutterAppLifeCycleProvider
代理;
1#import <Flutter/Flutter.h>
2#import <UIKit/UIKit.h>
3
4@interface AppDelegate : FlutterAppDelegate <FlutterAppLifeCycleProvider>
5
6@end
2.创建一个FlutterPluginAppLifeCycleDelegate
的实例对象,这个对象负责管理Flutter
的生命周期,并从Platform
侧接收AppDelegate
的事件。我直接将其声明为一个属性,在AppDelegate
的各个方法中,调用其方法进行中转操作&