iOS 原生代码集成Flutter小记

近期有一个原生的项目,有一个模块使用flutter开发的,上手搞了一波集成工作,大概小记一下

首先是配置flutter环境,在网上找到一个链接,里面说的比较详细,此处不赘述,直接附上链接

https://www.jianshu.com/p/963735d2a1f2(mac系统下配置flutter环境)

本博文主要讲解通过Cocoapods导入的方式集成

1、初始化flutter代码

首先我们拿到flutter部分代码,先依次执行以下代码后会在flutter文件目录下生成一个隐藏的文件夹

flutter clean

flutter packages pub run build_runner build

flutter pub get

2、podfile中引入如下代码(导入flutter相关代码文件)

flutter_application_path = '../dy_wyc'

load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')

target 'HitchingDemo' do 

   # 安装Flutter模块

    install_all_flutter_pods(flutter_application_path)

注:其中flutter_application_path后为引入的flutter项目文件路径,在该例子中,我的flutter模块名称叫dy_wyc,原生项目模块名称HitchingDemo,目录结构跟原生工程平级(官方建议是跟原生目录平级)

通过以上引入完成flutter的引入

3、Appdelegate中导入#import <Flutter/Flutter.h>,并且继承FlutterAppDelegate,截图如下

接着.m中引入,初始化

#import <FlutterPluginRegistrant/GeneratedPluginRegistrant.h> // Used to connect plugins.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

    //flutter集成

     self.flutterEngine = [[FlutterEngine alloc] initWithName:@"myFlutterEngine"];

     [self.flutterEngine run];

     [GeneratedPluginRegistrant registerWithRegistry:self.flutterEngine];

    return YES;

}

4、原生页面与flutter的跳转(在需要实现跳转flutter的地方引入如下代码完成跳转)

FlutterEngine *flutterEngine =

        ((AppDelegate *)UIApplication.sharedApplication.delegate).flutterEngine;

        FlutterViewController *flutterViewController =

        [[FlutterViewController alloc] initWithEngine:flutterEngine nibName:nil bundle:nil];

        flutterViewController.modalPresentationStyle = UIModalPresentationFullScreen;

        [self presentViewController:flutterViewController animated:YES completion:nil];

注意:项目中集成了flutter, 使用iOS14系统真机在断开调试后,点击App图标启动闪退。

原因:deug模式下,flutter为了实现热重载,默认编译方式为JIT。而iOS14系统对这种编译模式做了限制,导致无法启动。

解决方案:

1.更改XCode编译模式:使用release模式编译,这个时候flutter编译方式为AOT,可正常启动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晨枫阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值