Flutter和Android原生有两种混合开发模式,一种是原生项目下集成moudle,一种是将Flutter项目打包为aar放入原生项目中。
问题:
以 aar 的模式集成好处是减少对原生的入侵,对于二者的开发人员,能有效的隔离。弊端是对于 flutter 依赖的第三方插件,需要手动的从 flutter SDK 中取出第三方插件的 aar,复制到原生项目下依赖,过程比较繁琐。
如何才能才能一键遍历打包依赖插件的aar,并上传到Maven仓库?这里给出解决问题的思路和方法。
思路:
- 我们的 flutter 项目在 pubspec.yaml 中声明依赖了第三方插件并且执行过 “ flutter package get ” 命令后,Flutter 会下载第三方插件项目并存到 Flutter 的 SDK 目录中 ,我们的 Flutter 项目根路径中有一个 .flutter-plugins 文件,该文件以 key-value 方式记录了 flutter 项目依赖的插件,和插件项目的位置路径。
- 我们拿到 .flutter-plugins 文件,就可以遍历 依赖的第三方插件 的项目。
- 遍历插件项目的时候,我们可以给遍历到的插件项目应用新的 gradle 脚本文件,新的脚本文件中添加了 uploadArchives 系列代码,uploadArchives 是 gradle 的语法,能够将打包的 产出上传到 maven 仓库。
- 在给每个遍历的插件项目应用新的 gradle 文件后,我们还需要依次调用改插件项目的 assembleDebug ,uploadArchives 命令,这两条命令分别执行打 aar 包和上传 aar 包的操作。
思路总结:
- 我们通过 .flutter-plugins 文件,遍历依赖的第三方插件项目。
- 遍历每个插件项目的时候,依次执行下面操作:
A. 给每个插件项目依赖我们的 gradle 文件(android_flutter_maven)。
B. 执行 插件项目的 assembleDebug 命令构建 aar 。
C. 执行插件项目的 uploadArchives 上传aar。 - 以上的操作均使用脚本实现。
使用方法: