为了积极拥抱新技术并优化RN的性能问题,所以决定在新业务需求中引入Flutter技术栈
Flutter混合栈开发大致可以分为一下两种模式
native工程直接依赖开发
具体接入方式为,先在setting.gradle 中加入如下代码:
setBinding(new Binding([gradle: this]))
evaluate(new File(
settingsDir,
'../../Flutter Module工程根目录/.android/include_flutter.groovy'
))
其次在App的build.gradle 中加入如下代码:
implementation project(':flutter')
最后在主工程的build.gradle 中加入如下代码即可:
repositories {
buildscript {
maven {
url 'http://download.flutter.io'
}
}
}
allprojects {
repositories {
maven {
url 'http://download.flutter.io'
}
}
}
native工程接入aar
新建Flutter module工程
flutter create -t module xx_module
目录结构如下
xx_modlue
- .android // Android测试工程
- .ios // iOS测试工程
- lib // Flutter主工程
- main.dart // Flutter入口文件
- pubspec.yaml // Flutter三方包配置文件
Flutter中提供了将module打包成aar的命令,生成的aar文件路径为 xx_modlue/build/host/outputs/repo
flutter build aar
将生成的aar文件引入Android开发工程即可完成aar的引用
到目前为止整个aar的引入基本是可以正常开发的,但是存在问题,那就是在每次开发都需要手动的将生成的aar包复制到主工程中进行依赖,不仅操作麻烦而且会出错,所以讲Flutter打包及引入流程变成日常开发常用的模式是最佳实践
flutter 打包上传流程分析:
为符合日常开发流程,需要将Flutter打成的aar文件上传至maven,因此首要任务就是解决将aar上传至maven问题
查看生成的aar目录下面的pom文件会发现主工程依赖的第三方aar包也会被下载至xx_modlue/build/host/outputs/repo路径下,pom文件如下:
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxx.flutter</groupId>
<artifactId>xxx</artifactId>
<version>release-0.0.7</version>
<packaging>aar</packaging>
<dependencies>
<dependency>
<groupId>io.flutter</groupId>
<artifactId>flutter_embedding_release</artifactId>
<version>1.0.0-af51afceb8886cc11e25047523c4e0c7e1f5d408</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.flut