android混合开发最优的方案,Android&Flutter混合开发组件化方案

背景:

基于原生项目开发把Flutter当作一个组件接入项目做到:

原生开发即使不配置Flutter环境依旧不影响原生业务开发

不希望修改Flutter依赖的第三方插件,以及将这些插件上传maven

当使用源码依赖的时候dart侧可以通flutter attach的方式debug调试,native侧同时也支持断点

基于以上考虑设计探索出一套基于AAR依赖的Flutter混合组件化开发.

Flutter源码依赖:

2f1638ace16f

源码依赖

FlutterAAR依赖:

2f1638ace16f

aar依赖

细节说明

Flutter版本: v1.9.1+hotfix.6

从dart侧看flutter项目:

Flutter build commands.

Usage: flutter build [arguments]

-h, --help Print this usage information.

Available subcommands:

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).

Run "flutter help" to see global options.

符合当前项目组件化思想的AAR方式无疑是个不错的选择

按照正常思路

把这些aar上传到maven仓库

把项目的适配层flutterlib打成aar上传至maven仓库

完成

这时我就面临这样一个问题:

能不能像使用maven的gradle插件来完成这个事情?

这就导致我需要在flutter 的插件的gradle文件中添加代码自己开发也还好,但是如果是团队开发,你对这个插件项目本身进行了修改如果别人没有这个插件的源码,就显得不合理,所以就需要在git上再增加一个flutter插件的仓库来管理,可是插件很有可能会升级,这就导致你需要把之前的工作重复操作一遍.而且对一个原则上不修改的第三方库进行这样复杂的操作,显然是资源上的浪费.

原则上不对第三方插件进行修改

我的思路是,将这些产物放在宿主项目的libs下 通过

Implementation fileTree(dir: 'libs', include: ['*.aar'])

方式将flutter相关产物以aar的方式合并入安卓工程

然而使用当使用aar模式下flutterlib(native侧支持flutter运行和为flutter提供系统能力的适配层组件)时,flutterlib会默认从Maven仓库获取flutter产物和flutter插件产物

原因在Flutter官方提供的源码依赖方式:

implementation project(':flutter')

implementation project(':flutter_boost')

这就会导致最终flutterlib生成的aar多了:

com.idlefish.flutterboost

flutter_boost

1.0-SNAPSHOT

compile

这样的maven依赖

之前已经说了这些依赖已经放入了本地libs目录下,怎么让项目不从Maven仓库而是从libs获取?

//debug模式下源码依赖

debugImplementation project(':flutter')

debugImplementation project(':flutter_boost')

//只在编译时有效,不会参与打包

compileOnly project(':flutter')

compileOnly project(':flutter_boost')

再看pom.xml已经没有这个依赖了

操作步骤

使用Flutter命令 flutter build aar

执行native工程的适配层组件flutterlib的gradle脚本 从FlutterHost中获取aar

通过gradle命令将适配层组件flutterlib上传至用来放置组件的maven仓库

宿主项目使用aar方式依赖flutterlib -> 完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值