使用flutter_boost实现iOS / Flutter 混合开发

本文主要作为混合的基础理解和应用。

1.创建项目Flutter Module;可以显示隐藏文件(Mac是command+shift+.),展开看到.ios目录结构

Flutter Module初始目录结构

2.flutter项目引入库flutter_boost Git地址

flutter_boost

2.1.将已有项目导入到.ios同级目录,.ios是隐藏文件,为什么放这只是因为路径简单而已

已有ios项目建议目录结构

3.关键:iOS运行flutter,可以理解为引入一个三方的sdk,只是这个sdk是flutter提供的,那就需要我们把sdk配置到我们的项目中。

模拟真正的项目,我的测试项目里面有一个自己建的库LXCategory;

在第一张目录结构里面找到这个文件Generated.xcconfig,这里面包含了一些宏,告诉了我们flutter的一些配置,我们可以找到一个Config的文件夹,里面有三个配置文件,拷贝进iOS项目中。

Config配置文件

我们以Debug.xcconfig为例看一下里面有什么:里面包含了Flutter.xcconfig和一个Pods-xxx.debug.xcconfig(这个就是图中可以找到的Pods库的配置文件,左下;所以将其改成跟项目中一致)

示例Debug.xcconfig


Flutter.xcconfig里面只有两行代码,第一行就是引用了Generated.xcconfig,当然就是为了拿到这些配置,第二行将bitcode属性设置成NO。这个目录是拷贝过来的,路径肯定是错的,改一下路径:#include "../.ios/Flutter/Generated.xcconfig"

上面操作就是为了引用Generated.xcconfig,可以在xcode创建配置文件操作。(当然也可以看下这个配置里面的东西然后自己写一个配置到项目中)

现在配置一下引用路径,其实做了这些只是拿到了这些路径并配置:

配置引用宏路径

这时候我们去Build Phases -> + New Run Script Phase,然后添加

/bin/sh "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" build

执行Flutter库下的脚本 xcode-backend.sh。

运行一下项目,再看一下目录结构:多了两个framework:App.framework就是我们的flutter项目执行出来的东西,相当于里面运行起来就是我们的flutter项目,flutter项目代码产物;Flutter.framework是我们的flutter库。

执行Flutter库下的脚本 xcode-backend.sh之后目录结构

上面的步骤已经实现绑定关系了,但是对于flutter项目引用库还不够,下面是flutter_boost操作;

4.运行flutter项目,可以看到.symlinks目录下链接的库,这是在iOS项目中要用到的

flutter项目引用库至iOS路径

最简便的操作是拷贝.ios路径下的Podfile里面的代码,放到iOS项目中的Podfile里面去(拷代码要改路径)。但是不知道有没有人跟我一样执行后出错了,那么就按路径引入吧。

不拷代码,就相当于没有执行podhelper.rb。这时候我们还要多引入两个库支持Flutter和FlutterPluginRegistrant。

flutter_boost 还要求add libc++ into "Linked Frameworks and Libraries"。

引入flutter支持的iOS本地库

!!注意!!:#use_frameworks!//注释掉,导致不能生成pods headers

第四步目的:导入关联库。

5.接下来就是运行了,pod install 之后。库和头文件都能使用运用了。这时候要把App.framework拖进iOS项目中来,再打开Build Phases -> + New Copy Files Phase,选择Frameworks,添加App.framework。(这样就要去每次flutter项目写完之后,打开iOS项目运行,再拷贝App.framework过来使用运行,让我想到了另一个操作:在flutter项目同级目录下建立podspec,将App.framework模拟成本地库去使用,就变成每次运行,pod,再运行,可能说法上没什么区别,但是项目管理上会好很多,见下)

5+.今天试了一下建立podspec,证明是可以的。今天拿的是一个很早以前玩的项目,也就是是真的一个flutter正式项目和一个iOS正式项目。

podspec示例1
App.podspec
podspec示例2

5+的步骤可以完全替代5,使用本地库的方法引入资源;

6.正式项目中,在flutter正式项目中因为没有podhelper.rb,但是第4步可以不用那么复杂,可以直接从ios中的Podfile拷贝代码过来用,反正都是引入关联库而已,不过要注意路径!正式项目中还缺少第四步中的一个东西FlutterPluginRegistrant,这是绑定关联库的联系文件,同样看上图(图:podspec示例2),我对它也建立了一个podspec。本地podspec里面的内容的只有那么一两行是有用的,所以其他随便写。

GeneratedPluginRegistrant.podspec

完整flutter项目:Flutter下的rss_readneed

完整ios项目:readneed

上面的关联关系是FlutterSome和RssReadNeed在同一级目录(主要就是涉及到一些路径问题,相对路径)

注意事项:

a.Flutter的库的路径在Generated.xcconfig里面,这个按本机的来配;默认创建Flutter项目时这个就是对的,当然前提是电脑里面要有库;

b.导入config路径配置上,执行Flutter库下的脚本 xcode-backend.sh,核心;

c.导入关联库,特别是Flutter和FlutterPluginRegistrant必须要有,核心;千万不要使用use_frameworks!

d.产物App.framework必须进入项目中,可以建立podspec引入。如果是手动需要添加:Build Phases -> + New Copy Files Phase,选择Frameworks,添加App.framework。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,340评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,762评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,329评论 0 329
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,678评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,583评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,995评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,493评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,145评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,293评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,250评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,267评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,973评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,556评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,648评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,873评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,257评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,809评论 2 339

推荐阅读更多精彩内容