IOS

如何进行Flutter混合开发

2018-10-30  本文已影响3075人  Flutter编程指南

Why Flutter ?

older_crossed_platform.png

Flutter框架与应用

框架与Source Code

整体框架
flutter_struct_base.jpg
Source Code
flutter_struct_function.png

所以从上面的分析可以看出,为了实现Flutter的平台无差异性,Google主要在 PlatForm Integration和Dart:UI部分做了适配工作。

APK(Android应用)结构

我们通过解压一个release的混合开发APK包,来探索一下加入了Flutter之后的包到底发生了哪些变化以及这些变化对应的作用是什么。

flutter._apk_change_graffle.png

从上图的标记中可以清楚的看出变化点

​ Flutter Engine层的代码

Flutter混合模式

相信对于绝大多数应用来说,从零开始重新做一个App的成本是相当高的,所以混合开发成了它们尝试Flutter的首选。

闲鱼模式

双Branch共存(Flutter模式 && Standalone模式)

Standalone模式:纯Native开发或者是平台打包下的模式

Flutter模式:进行flutter相关功能的开发,库生成,编译和调试走的都是Flutter定义的流程。

在Standalone模式下,纯Native开发者和打包平台,对Flutter是无感知的。在这种情况下,Flutter相关的代码可以认为是一个常规的第三方库文件。

Google模式

对与方便的进行Flutter的混合模式开发呼声有多高,Google专门为了这个问题建立了Wiki并且进行了持续4个月42个版本的更新。

创建Flutter Module模式
1.1.1 切换flutter分支

假如直接使用

$ cd some/path/
$ flutter create -t module my_flutter

会出现无法识别 command module的错误,查找其原因发现我们默认clone的分支是flutter的beta版本并不支持module命令所以首先需要

flutter channel
flutter channel master
flutter upgrade

将分支切换到master并且进行upgrade操作。

1.1.2 创建Flutter module模版
flutter create -t module flutter_module

这个时候会看到project中新增加了一个flutter_module,其中包含了.android,.ios和关键的include_flutter.groovy文件

1.1.3 将Flutter添加到现有工程中
1.1.4 总而言之

简单的说,Google在兼顾维护成本和开发成本的前提下,为了Insert flutter module ,建立了一个逻辑依赖链

flutter_module/.android/include_flutter.groovy ->
flutter_module/.android/Flutter/build.gradle ->
$flutterRoot/packages/flutter_tools/gradle/flutter.gradle 

利用 $flutterRoot/packages/flutter_tools/lib/中的flutter command &&

$AndroidRoot/build-tools/buildToolsVersion/中的android command

完成混合开发模式下的打包操作。

上一篇 下一篇

猜你喜欢

热点阅读