Android如何在原生App中嵌入Flutter

作者:我是绿色大米啊 时间:2022-03-11 17:06:06 

本文参考文档Add Flutter to existing apps。

首先有一个可以运行的原生项目

第一步:新建Flutter module

Terminal进入到项目根目录,执行flutter create -t module ‘module名字'例如:flutter create -t module flutter-native

执行完毕,就会发现项目目录下生成了一个module

Android如何在原生App中嵌入Flutter

第二步:同步Flutter module依赖

进入到新生成的Flutter module目录下的.android目录下,命令是cd .android/,然后执行gradlew flutter:assembleDebug,mac下./gradlew flutter:assembleDebug

这过程根据网络情况,可能有点长。

结束之后在.android/Flutter/build/outputs/aar/目录下会生成flutter-debug.aar

Android如何在原生App中嵌入Flutter

第三步:设置JDK版本

在app的build.gradle文件中加入:

compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 }

Android如何在原生App中嵌入Flutter

第四步:依赖Flutter module

settings.gradle中加入


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

注意:最后一个参数最好写全路径!

在app/build.gradle中


dependencies {
……
implementation project(':flutter')
}

到此准备过程结束,写代码测试一下,我使用的是Fragment方式。当然也有View的方式。

MainActivity.kt ↓


class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
 super.onCreate(savedInstanceState)
 supportRequestWindowFeature(Window.FEATURE_NO_TITLE)
 setContentView(R.layout.activity_main)
 val tx = supportFragmentManager.beginTransaction()
 tx.replace(R.id.content, Flutter.createFragment("route"))
 tx.commit()
}
}

activity_main.xml ↓


<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<FrameLayout
 android:id="@+id/content"
 android:layout_width="match_parent"
 android:layout_height="match_parent"></FrameLayout>

</android.support.constraint.ConstraintLayout>

Android如何在原生App中嵌入Flutter

来源:https://juejin.cn/post/6844903848536981511

标签:Android,app,Flutter
0
投稿

猜你喜欢

  • autojs模仿QQ长按弹窗菜单实现示例详解二

    2022-10-20 07:04:37
  • java多次嵌套循环查询数据库导致代码中数据处理慢的解决

    2023-10-28 22:17:50
  • 零基础写Java知乎爬虫之将抓取的内容存储到本地

    2022-08-16 20:25:45
  • MyBatis中的properties配置(推荐)

    2023-06-04 20:47:58
  • 使用SpringBoot打jar包并部署到Tomcat详细步骤

    2023-12-06 07:15:16
  • Java中list.contains()的用法及拓展

    2022-11-06 21:04:59
  • ListView滑动隐藏显示ToolBar的实例

    2022-09-15 23:15:52
  • C#中ArrayList的使用方法

    2023-01-26 10:20:47
  • Java @Deprecated注解的作用及传递性

    2023-08-11 12:55:05
  • springmvc处理模型数据ModelAndView过程详解

    2022-01-27 05:50:22
  • Android compose气泡升起和水滴下坠动画实现示例

    2023-04-09 01:52:22
  • Java中比较运算符compareTo()、equals()与==的区别及应用总结

    2023-11-28 20:08:28
  • C#从命令行读取参数的方法

    2023-07-12 15:23:11
  • C# 遍历文件夹子目录下所有图片及遍历文件夹下的文件

    2022-03-12 02:55:47
  • hibernate-validator如何使用校验框架

    2023-05-25 07:26:29
  • 一文带你探究Spring中Bean的线程安全性问题

    2023-10-03 10:52:13
  • 使用Java将字符串在ISO-8859-1和UTF-8之间相互转换

    2022-09-15 15:05:16
  • Unity游戏开发之2048游戏的实现

    2023-04-19 00:11:33
  • Java中Elasticsearch 实现分页方式(三种方式)

    2022-03-04 06:19:08
  • java操作elasticsearch的案例解析

    2021-06-27 19:17:13
  • asp之家 软件编程 m.aspxhome.com