flutter与原生混编(iOS)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flutter与原生混编(iOS)相关的知识,希望对你有一定的参考价值。
参考技术A 一、创建项目及配置1,创建ios项目,同时在同一个根目录下创建flutter项目
flutter项目使用命令flutter create -t module xxxflutter项目名
如图
2,将flutter项目以pod的形式加入ios项目
2.1,如果项目之前没有用过pod,则pod init创建podfile
如果使用过,直接进行步骤2.2。
2.2,podfile中添加
flutter_application_path是flutter项目的路径
2.3,target中加入(一次性将flutter的编译产物由此依赖进入iOS项目中,可跳过步骤3)
3,配置脚本(已完成步骤2.3可进行步骤4)
打开ios项目,在Build Phases中左上角添加Run Script
4,设置bitcode
Flutter 目前还不支持 BitCode,需要设置为No
二、混编使以后添加的每个模块都以package形式,在module中pubspec.yaml文件中引用(基于内存消耗考虑)
1,页面跳转
原生处理:
flutter在iOS中的使用,主要是以FlutterViewController为载体,并在其内部采用FlutterEngine对视图进行渲染。
导入头文件:
flutter处理:
在module项目的main里
定义channel,名字与原生保持一致
2,数据传递
二者之间的数据传递iOS使用FlutterBasicMessageChannel类,flutter使用BasicMessageChannel类,用法与MethodChannel类似
原生处理:
接收数据:
发送数据:
flutter处理:
问题:
网上搜的方法,在podfile最前边加eval(File.read(File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')), binding)句话
执行pod install失败
于是又搜了下别的文章,添加的第二句话为load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb'),试了下成功了
以上是关于flutter与原生混编(iOS)的主要内容,如果未能解决你的问题,请参考以下文章