Flutter 混合开发实战问题记录(三)打包并上传flutter aar 到maven

栏目: Java · 发布时间: 6年前

内容简介:对于Android老项目来说接入flutter的最佳方式就是添加 flutter module,让主module通过模块依赖方式来依赖flutter。回顾下小步骤,因为网上资料很多,不详细描述了。在当前project下 运行命令

对于Android老项目来说接入flutter的最佳方式就是添加 flutter module,让主module通过模块依赖方式来依赖flutter。

回顾下小步骤,因为网上资料很多,不详细描述了。

1 创建 flutter module

在当前project下 运行命令

flutter create -t module my_fluttermy_flutter为生成的flutter module名称)
复制代码

2增加配置代码

在工程的settings.gradle增加以下配置

setBinding(new Binding([gradle: this]))                                 // new
evaluate(new File(                                                      // new
        settingsDir.parentFile,                                               // new
        'yq_flutter/.android/include_flutter.groovy'                          // new
))
复制代码

在app 的gradle里添加

implementation project(':my_flutter')
复制代码

这样就可以边开发,边编译看效果了。

不过随之而来的问题是:现在flutter毕竟属于小众开发,团队内部只有几个人来做,而其他人不需要关注flutter的东西,上边的依赖方式需要安装flutter 环境,下载sdk等,否则无法编译项目,所以还需要以依赖jar/aar的方式来集成。

下边具体描述一下。 你新建的flutter module可以用另一个Android studio 窗口独立打开,基本的目录结构是

Flutter 混合开发实战问题记录(三)打包并上传flutter aar 到maven

在as终端里输入

flutter build apk
复制代码

可以生成一个release的apk,同时在rootProj/.android/Flutter/build/outputs/aar/目录下生成aar,把这个aar拷出来直接放到你原生项目里取依赖便可以摆脱依赖module的麻烦。 不过要规范点的话还需要在你们公司的自建nexus maven(或jcenter)上上传aar,通过地址依赖。参考普通aar的打包上传方式会发现能生成aar,但是运行会失败,因为aar中没有打包进Flutter的编译产物。 正常生成的aar中结构图

Flutter 混合开发实战问题记录(三)打包并上传flutter aar 到maven

assets 文件夹中的 isolate_snapshot_instr , isolate_snapshot_data, vm_snapshot_data , vm_snapshot_instr 为Flutter编译中间产物,flutter_assets 内为资源文件,包含字体,图片,此外还有需要的插件部分原生代码和sdk的jar等。

普通的gradle构建无法打包进中间产物和资源文件,所以参考flutter 项目中的gradle 文件内容,可以看到,是在普通的gradle构建过程中加入了flutter gradle脚本

Flutter 混合开发实战问题记录(三)打包并上传flutter aar 到maven

具体内容可以进入sdk目录去查看,它的工作其实就是copy那些产物进你的apk文件,所以我们可以先本地构建apk,然后解压它,取出产物,复制到你的项目中,然后重新构建然后上传到maven,参考网上的一些资料,修改了一个脚本供使用。其中你可能需要修改的部分就是你们公司自用的uploadArchives脚本了。

构建脚本

然后在你的项目中依赖,甚至增加配置开关控制是aar依赖还是module依赖

gradle.properties 开关

FLUTTER_DEBUG = true
复制代码

原生module中依赖

if(FLUTTER_DEBUG.equals("true")){
        implementation project(':flutter')
    }else {
        implementation 'com.xxx.xxx:my-flutter:1.0.0.@aar'
    }
复制代码

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

秩序之美

秩序之美

Vinh / 人民邮电 / 2011-5 / 35.00元

怎样才能设计出简洁大方而不落于俗套的超人气网站?纽约时报网站的资深设计师Khoi Vinh在这《秩序之美——网页中的网格设计》一书中将为你揭示其中的奥秘。   《秩序之美——网页中的网格设计》将源自传统平面设计、被众多平面设计大师推崇的网格设计方法应用于网页设计,向读者详细介绍了网格设计成熟而经典的设计模式,并以整个网站的设计为例,对工作流程、设计工具和方法进行了系统而全面的介绍,手把手教读......一起来看看 《秩序之美》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具