Flutter 即学即用系列博客——03 在旧有项目引入 Flutter

本文详细介绍了如何在已有Android项目中引入Flutter,包括创建Flutter模块、解决依赖冲突、热重载与调试,以及推荐的集成管理方式。通过实例展示了在Android Studio中配置Flutter Module的过程,同时提供了遇到问题的解决方案,如使用git subtree管理子仓库。
摘要由CSDN通过智能技术生成

前言

其实如果打算在实际项目中引入 Flutter,完全将旧有项目改造成纯 Flutter 项目的可能性比较小,更多的是在旧有项目引入 Flutter。

因此本篇我们就说一说如何在旧有项目引入 Flutter。

官方 WIKI 有说明,但是里面坑还是不少的,变化也是存在的。

因此就让我们来看一看。

目录

1. 按照官网实现基本引入

Add Flutter to existing apps

上面为GitHub WIKI 的引入方式,通过 Module 的形式进行引入。

可以看出文档还是在不断更新的。

下面我们说下具体的步骤:

第一步:创建 Flutter Module

假设已经存在的 Android 项目路径为 /Users/nesger/Desktop/nesger_folder/project/studio/MyApp,那么我们在同级目录下面创建 Flutter Module。在终端执行如下命令:

cd /Users/nesger/Desktop/nesger_folder/project/studio/ 
flutter create -t module my_flutter

执行命令之后,就创建了一个带有 dart 代码的 Flutter Module,并且能够看到一个隐藏的文件夹 .android。

第二步:让主 APP 依赖 Flutter Module

这里,主 APP 指的就是 Android 项目 MyApp

在 MyApp 的 settings.gradle 添加下面代码:

setBinding(new Binding([gradle: this]))          
evaluate(new File(                                          
  settingsDir.parentFile,                                 
  'my_flutter/.android/include_flutter.groovy'   
))                                                                     

在需要使用 Flutter Module 的 MyApp 的对应 Module 添加依赖,比如本例子中就是到 MyApp 中的 app 的 build.gradle 添加

dependencies {
  implementation project(':flutter')
}

添加完之后有个报错如下:

Manifest merger failed : uses-sdk:minSdkVersion 15 cannot be smaller than version 16 declared in library [:flutter] /Users/nesger/Desktop/nesger_folder/project/studio/my_flutter/.android/Flutter/build/intermediates/merged_manifests/debug/processDebugManifest/merged/AndroidManifest.xml as the library might be using APIs not available in 15
	Suggestion: use a compatible library with a minSdk of at most 15,
		or increase this project's minSdk version to at least 16,
		or use tools:overrideLibrary="com.nesger.myflutter" to force usage (may lead to runtime failures)

从这里可以看到是由于我们 MyApp 的 uses-sdk:minSdkVersion 与 Flutter Module 的不一致。

控制台也给出了解决方法,我们这里简单的升下我们 MyApp 的 uses-sdk:minSdkVersion 即可。

改完编译就没问题了。

第三步:使用 Flutter Module 提供的 API 在主 APP 中创建 FlutterView

我们的主界面布局如下,就是有一个按钮而已。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <Button
        android:onClick="onClick"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="create flutter view"
        />

</RelativeLa
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值