Android项目引入flutter aar

1,857 阅读2分钟

重点首先看demo:

这种方式插入flutter,适合团队开发,其他开发人员不需要研究flutter和引入flutter sdk的安装,节省开发人员成本,适合模块化和组建化的开发模式。可以让原生项目的其中一个模块功能用flutter开发,同时也不会影响到其他开发人员的开发功能业务。 2023-01-10 16.07.47.gif


一、首先建立一个flutter module 库,该库也可以独立运行。

WX20230713-140633.png

图片.png

如下就得到了一个可以独立运行的 shdr-flutter-base-lib module :

WX20230713-140942.png


二、将shdr-flutter-base-lib 打包aar

a.打包两种方式:

  1. 使用命令 flutter build aar;
  2. 使用可视化工具,如下图;

WX20230713-141221.png

b.打好的aar包位置目录:

1.如果是使用命令flutter build aar 打包方式,则打包成功后会输出aar文件位置:

图片.png

2.如果是通过可视化工具打aar包,则直接在shdr-flutter-base-lib 下的build文件下面,如下图:

WX20230713-142522.png

三、Android 原生项目引入flutter aar包

1.将flutter_release-1.0.aar 包拷贝到原生项目libs目录下,如下图:

2.在app/build.gradle 文件里进行依赖 ,如下图:

图片.png

//⚠️注意: 'io.flutter:flutter_embedding_release:1.0.0-8f2221fbef28b478debb78dd233f5250b220ca99' "1.0.0-8f2221fbef28b478debb78dd233f5250b220ca99"该串号来源于 flutter_release-1.0.pom 文件如下图:

WX20230713-143021.png

3.还需要配置maven库:

maven { url 'https://storage.googleapis.com/download.flutter.io' }

图片.png

4.在将shdr-flutter-base-lib module打包出apk,将apk解压后需要拿到arm64_v7a、arm64-v8a、x86_64文件下so库(看情况使用,如果需要三者的so库,则都拷贝到原生项目,我这里只需要2种)。

注意:将打包好.apk文件后缀改为.zip,后解压则在解压后的目录里得到so库,如下图:

WX20230713-143337.png

5.将libflutter.so库拷贝到原生项目的jniLibs文件夹下,如下图所示:

a:

图片.png

b:在app的build.gradle中添加如下配置

defaultConfig { 
    ......
    ndk { abiFilters "arm64-v8a", "armeabi-v7a" } 
}

到此处flutter aar 包就引入成功了。

四、最后就是跳转flutter页面

1.首先在清单文件下配置:

<activity 
    android:name="io.flutter.embedding.android.FlutterActivity"
    android:exported="true" 
    android:hardwareAccelerated="true"
    android:windowSoftInputMode="adjustResize" />

2.跳转flutter页面了

startActivity(FlutterActivity.createDefaultIntent(this));


至此结束,创作不宜,顶一下吧!👍