flutter踩坑记录目录
flutter踩坑记录(二)--基本使用及原生flutter交互篇 https://blog.csdn.net/hjr365708064/article/details/95459151
flutter踩坑记录(三)-- 项目打包 https://blog.csdn.net/hjr365708064/article/details/95473183
写此贴为原生Android项目集成flutter工程各种踩坑点及目前解决办法记录所用,如若不适用,请参考网络其他帖子(谨慎接入,做好踩准备)。
一.创建并依赖flutter的module工程。
1.有一个Android原生工程(如若没有可新建一个原生工程)
比如工程名MyApplication
2.创建Flutter Module
在cd到当前project下运行命令:(一定通过命令行进入项目工程目录下再进行执行创建命令)
flutter create -t module flutter_MyApplication
(MyApplication
是用户自定义名称,可取flutter_MyApplication
)
3.增加原生集成moudle配置代码
在工程setttings.gradle
中增加配置:
在include模块语句下方或者说代码最下面
-
setBinding(new Binding([gradle: this]))
2.evaluate(new File(settingsDir, 'my_flutter/.android/include_flutter.groovy'))
接下来在app的build.gradle
增加依赖:(在app下依赖,是为后续正式打包做准备,因为目前的情况来看,正式打包时依赖压缩的aar文件比直接依赖module工程兼容性会更好,而aar文件在模块化项目工程中是不能使用api依赖放在library库中逐级依赖的,顾考虑aar情况参考网上其他帖子,做一个isDebug变量区分debug与正式打包,debug依赖module,正式依赖aar是目前来看兼容性最好的方法)(若原生打包使用的微信的andResguard打包方式,module方式依赖不成功,aar方式可以,亲测)
implementation project(':flutter')
此时可能会报错:
Error: Invoke-customs are only supported starting with Android O (--min-api 26)
(错误原因是因为原生项目中没有使用jdk1.8配置,需要增加)
在app的build.gradle
的android
标签下增加:
compileOptions{
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
4.(一般文章到此步就说flutter集成已结束,但如果你的原生项目使用的AndroidX做依赖包,还需要下面一些配置)
1.修改flutter_MyApplication
(自定义的flutter的module文件名,上面有提到)目录下的.android下面的flutter文件目录下面的build.gradle文件,修改supportV7依赖为Androidx下的v7依赖
implementation 'androidx.appcompat:appcompat:1.0.2'
此时右上角提示syn now同步完成后,会发现Flutter和flutterFragment文件会报错,是因为AndroidSupport包依赖找不到所致,
此时把缺少爆红的依赖项改为AndroidX下面
flutter文件下:
import androidx.annotation.NonNull;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent;
flutterFragment文件下:
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
到此时就可发现引入的flutter模块已不报错
最后生成的目录结构:
经过上面4步就已经集成Flutter了
参考原文链接 https://blog.csdn.net/weixin_33943347/article/details/91430352