一、前言
随着各种跨平台框架的不断涌现,很多时候我们会选择混合开发模式作为脚手架 ,因为企业一般不会把业务都压在一个框架上,同时除非是全新项目,不然出于对原有业务重构的 成本和风险 考虑,都会选择混合开发去尝试入坑。
但是混合开发会对 打包、构建和启动等流程熟悉度要求较高 ,同时遇到的问题也更多,以前我在 React Native
也写过类似的文章 :《从Android到React Native开发(四、打包流程解析和发布为Maven库)》 ,而这方面是有很多经验可以通用的,所以适当的混开模式有利于避免一些问题,同时只有了解 Flutter
整体项目的构建思路,才有可能更舒适的躺坑。
额外唠叨一句,跨平台的意义更多在于解决多端逻辑的统一 ,至少避免了逻辑重复实现,所以企业刚开始,一般会选择一些轻量级业务进行尝试。
官方未来将有
Flutter build aar
的方法可提供使用。
二、打包
一般跨平台混合开发会有两种选择:
- 1、将
Flutter
整体框架依赖和打包脚本都集成到主项目中。 - 2、以
aar
的完整库集成形式添加到主项目。
两种实现方法各有利弊:
-
第一种方式可以更方便运行时修改问题,但是对主项目“污染”会比较高,同时改动会大一些。
-
第二种方式 需要单独调试后,更新
aar
文件再集成到项目中调试,但是这类集成方式更干净,同时Flutter
相关代码可独立运行测试,且改动较小。
一般而言,对于普通项目我是建议以 第二种方式集成到项目中的 ,通过新建一个 Flutter
工程,然后对工程进行组件化脚本处理,让它 既能以 apk形式单独运行调试,又能打包为aar形式对外提供支持。
相信对于原生平台熟悉的应该知道,我们可以通过简单修改项目gradle
脚本,让它快速支持这个能力,如下图片所示,图片中为省略的部分脚本代码,完整版可见 flutter_app_lib 。