记得在flutter刚出来时,笔者就开始学习flutter。但由于当时嫌弃flutter复杂的层级组合且未推出稳定版,所以当时就放弃了深入学习,现如今随着flutter的蓬勃发展及大佬们的力推,就又入坑flutter。
虽说flutter能够跨平台,但由于现在几乎都是现成的项目,所以不可能用flutter来重头开发,所以目前几乎都是采用native+flutter的混合开发方案。那么该方案该如何实现尼?
1、flutter模块的导入
首先,切换到native项目的根目录的上一级目录。以笔者项目为例,路径为D:\FlutterHybrid\FlutterHybridAndroid
,然后通过命令cd ../
切换到上一级目录。再执行下面命令来创建一个flutter模块。
flutter create -t module flutter_module
上面的flutter_module
就是我们创建的flutter模块名称。
当flutter模块创建成功后,我们就需要通过以下步骤来导入该模块。
- 首先在在
settings.gradle
文件中添加如下代码。
添加完成后,就能够在Android Studio中看到flutter模块,如下图。setBinding(new Binding([gradle:this])) evaluate(new File( settingsDir.parentFile,'flutter_module/.android/include_flutter.groovy' ))
- 其次,在能够正确显示flutter模块后,我们就需要通过
implementation project(':flutter')
来导入该模块。添加成功后就开始编译项目,这时候就可能会遇到如下错误。
这就是我们需要注意的一点,native项目的minSdkVersion
不能小于Flutter模块的minSdkVersion
。解决方案就是把native项目的minSdkVersion
的值修改为大于flutter模块的minSdkVersion
的值。
经过上面两步后,native项目就成功导入了flutter模块,这时候就可以来运行native项目。但在运行native项目时却又可能出现如下错误。
该问题该怎么解决尼?其实在上图的最下面已经给出解决方案了,就是native项目必须使用Java 8,否则不让运行。所以我们需要在app
目录下的build.gradle
文件中添加如下代码。
android {
compileOptions {
sourceCompatibility 1.8