原生工程集成Flutter

背景

随着Flutter的不断完善,逐渐有更多的功能可以考虑使用Flutter 来实现,开发的过程就会发现,我们肯定不能抛弃原有的APP的所有功能进行重写,一般都是针对一些新的业务场景使用Flutter 来实现,这就不可避免的会遇到如果使用Flutter与Android 和iOS进行混合开发的问题。本文会介绍一下Android端开发Flutter的整个流程。

创建Flutter Module

混合开发的模式,我们首先需要创建一个Flutter Module,Flutter Module的创建有两种方式:

  1. AS直接创建

File–>New Module,选择FlutterModule,Module的存放位置可以根据你自己的需求进行存放。这里在app 同一层级,创建了一个叫android_module的来存放。
在这里插入图片描述

依赖引入

  1. 修改setting.gradle 文件,进行依赖引入
setBinding(new Binding([gradle: this]))
evaluate(new File(
       settingsDir,
       '/android_module/flutter_module/.android/include_flutter.groovy'
))
rootProject.name='FlutterMix'

include ':flutter_module'
project(':flutter_module').projectDir = new File('/android_module/flutter_module') 

其中,setBinding与evaluate表示允许Flutter模块包括它自己在内的任何Flutter插件,在settings.gradle中以类似 :flutter、package_info的方式存在。sync 之后,会在如下路径,会有一个Flutter 文件夹生成。
在这里插入图片描述

  1. 修改build.gradle进行依赖

在dependencies下面增加如下配置:implementation project(path: ':flutter')这里介绍一下,之所以要叫flutter,是因为跟上面第二步生成的Flutter 文件夹保持一致。另外,在android 标签增加使用java8来进行编译compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }

进行flutter 调用

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        FlutterView flutterView = Flutter.createView(this, getLifecycle(), "initialRoute");
        setContentView(flutterView);
    }
}

在这里插入图片描述

进行Flutter 代码开发调试

使用AS打开module 工程。退出引用程序,然后点击Flutter attach,打开你的应用程序,等待连接上即可。就能够像正常开发一样调试flutter代码了。在这里插入图片描述

遇到的问题

如果你也是通过AS新创建的Demo工作来实践,可以会遇到相关依赖包找不到的问题,这个是因为你之前已经选择过工程支持androidx,新创建的默认都使用androidx的方式来进行相关的support支持。但是创建的Flutter 工程,还是使用的是普通的导入,删除其相关的导入,换成androidx的即可。
在这里插入图片描述

参考链接

1、https://developer.android.com/jetpack/androidx/releases/lifecycle
2、https://flutter.dev/docs/development/add-to-app/android/project-setup

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值