前言
Flutter 以 aar 的方式接入 native 项目的优点是侵入性低,不影响业务组其他成员。 最开始的时候在网上看了一下关于 aar 导入 android 的博客感觉稍乱,所以在此整理一下,防止大家浪费时间重复趟坑。
Flutter 编译产物
首先需要先了解一下 flutter 的编译产物有哪些,然后才能更好地理解如何编译 aar。
以一个嵌入 flutter aar 的 release 版本为例看一下里面的内容:
可以很明显的看到三个和 Flutter 先关的文件:libflutter.so: flutter engin
libapp.so:dart 源码相关
flutter_assets:flutter 资源文件
其实还有一个文件:classes.dex: native 代码,比如 java 我们使用 dex2jar 工具看一下 classes.dex 的内容:
可以看到里面有关于 Flutter 的 native 代码,其实可以称它为: flutter_embedding.jar,里面包含了 FlutterActivity,FlutterView 等,它提供了 native 项目嵌入 flutter 的能力,比如我们 natvie 要创建一个 Flutter 页面肯定要继承 FlutterActivity/FlutterFragment。
总结一下 android release 下 flutter 的编译产物包含 4 部分:libflutter.so: flutter engin</