Flutter 三天搞定混合开发持续化集成平台

Flutter 三天搞定混合开发持续化集成平台(一)

前言: Flutter目前在客户端的生态中以一个快速大面积覆盖的情况下,如何做到能快速稳定的集成到我们现有的工程,这一系列的文章就以这个命题为大家做一些分享。

目录:

(一)Flutter编译产物,Native如何集成

(二)plugin 快速集成篇

(三)版本控制篇

Flutter编译产物,Native如何集成

我们新建一个Flutter工程,执行 flutter build 命令。

aar Build a repository containing an AAR and a POM file.

aot Build an ahead-of-time compiled snapshot of your app's Dart code.

apk Build an Android APK file from your app.

appbundle Build an Android App Bundle file from your app.

bundle Build the Flutter assets directory from your app.

ios Build an iOS application bundle (Mac OS X host only).

-iOS

flutter build ios

demo_job/build/ios/Release-iphoneos/Runner.app/Frameworks/App.framework
下会生成对应的编译framework产物

App.framework 是我们需要的对应的Flutter 业务代码产物部分,当然我们还需要引入Flutter engine部分,Flutter.framework.

image.png

获取这两个编译产物后就能正常引入至我们的iOS工程,届时iOS混入Flutter功能

-Andriod

flutter build apk

在对应的文件夹下面会生成对应的lib.jar文件,但此时还缺少Flutter engine对应产物,我们需要到对应版本内dart tool 文件内获取对应的flutter.jar部分。

"flutter/bin/cache/artifacts/engine/android-arm-release/flutter.jar"

image.png

Android项目再引入对应的资源部分(images这些资源文件)

到这个一步我们Android项目也能正常使用Flutter功能。

优化改进

如果作为一个程序员能接受这种【人工智能】方式接入Flutter的部分的话,我们可能要招两个小伙伴(iOS、Android)单独负责打包接入,比较繁琐移植性差

改进点:

  1. 自动持续化集成
  2. 远端发布编译产物部分

1.1 针对如何进行自动化持续化集成,CI框架/jenkins+webhook 方式都可以很好的解决自动持续集成
1.2 使用脚本代码代替【人工智能】方式

目前完成上诉部分后我们可能可以比较优雅的接入Flutter至Native工程之中,我们解决了繁琐部分的问题但是并没有解决了可移植性的问题。

对于移植性这个问题我们该如何解决?这个问题其实一直在客户端开发中存在,功能模块如何做到复用,不通工程移植性好。当然是组件化了~

-iOS

远端发布选择Cocoapods方式引入,产物pod库


image.png
image.png

iOS 工程 pod 直接依赖这个工程pod库,但是这样子缺少版本控制,我们需要对不通的版本功能开发迭代进行把控,因此我们还需要将这个pod发布到我们的对应的组件pod库

-Android

同理对应Android项目我们也是希望直接一句代码配置接入Flutter。选择maven作为远端发布的工具,上传我们对应的aar包,项目直接依赖 flt-business.aar 。

但是我们发现目前我们能获取到的Android的产物是 libs.jar 文件而不是aar。所以我们要做到如何生成aar文件(包含lib.so flutter.so 资源文件),通过gradle uploadArchive方式上传到我们自己的maven库。

  1. 新建packageflutter library module 来生成aar
  2. gradle buildFlutterPlugin 进行dependency flutter jar ,资源文件的依赖
  3. 执行uploadArchive 上传至我们的maven 库
image.png
image.png

总结

该文章是记录自己从接触Flutter后一步一步接入到native的历程,一步一步踩坑总结出的经验,当然只是完成这些步奏我们在快速开发flutter项目的时候还是不能完全完成 自动 持续 混合等概念,因为flutter项目还有个plugin概念,native 插件部分,这些也是要完成持续集成部分,在后面的文章我会带来如何完成这一部分的持续集成部分。

Q&A

1.为什么iOS不需要引入资源文件buAndroid需要,可以观察发现App.framework中我们已经有资源文件部分了,而lib.jar中并不存在对应的资源文件,因此我们需要自己再引入一次

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