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
第二步:同步Flutter module依赖
进入到新生成的Flutter module目录下的.android目录下,命令是cd .android/
,然后执行gradlew flutter:assembleDebug
,mac下./gradlew flutter:assembleDebug
这过程根据网络情况,可能有点长。
结束之后在.android/Flutter/build/outputs/aar/
目录下会生成flutter-debug.aar
第三步:设置JDK版本
在app的build.gradle文件中加入:
compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 }
第四步:依赖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>
来源:https://juejin.cn/post/6844903848536981511
标签:Android,app,Flutter
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
autojs模仿QQ长按弹窗菜单实现示例详解二
2022-10-20 07:04:37
![](https://img.aspxhome.com/file/2023/6/94956_0s.png)
java多次嵌套循环查询数据库导致代码中数据处理慢的解决
2023-10-28 22:17:50
零基础写Java知乎爬虫之将抓取的内容存储到本地
2022-08-16 20:25:45
![](https://img.aspxhome.com/file/2023/9/70519_0s.png)
MyBatis中的properties配置(推荐)
2023-06-04 20:47:58
使用SpringBoot打jar包并部署到Tomcat详细步骤
2023-12-06 07:15:16
![](https://img.aspxhome.com/file/2023/2/73132_0s.png)
Java中list.contains()的用法及拓展
2022-11-06 21:04:59
![](https://img.aspxhome.com/file/2023/9/113199_0s.jpg)
ListView滑动隐藏显示ToolBar的实例
2022-09-15 23:15:52
C#中ArrayList的使用方法
2023-01-26 10:20:47
Java @Deprecated注解的作用及传递性
2023-08-11 12:55:05
![](https://img.aspxhome.com/file/2023/7/58097_0s.png)
springmvc处理模型数据ModelAndView过程详解
2022-01-27 05:50:22
![](https://img.aspxhome.com/file/2023/5/104015_0s.png)
Android compose气泡升起和水滴下坠动画实现示例
2023-04-09 01:52:22
![](https://img.aspxhome.com/file/2023/4/96764_0s.gif)
Java中比较运算符compareTo()、equals()与==的区别及应用总结
2023-11-28 20:08:28
![](https://img.aspxhome.com/file/2023/1/60801_0s.jpg)
C#从命令行读取参数的方法
2023-07-12 15:23:11
C# 遍历文件夹子目录下所有图片及遍历文件夹下的文件
2022-03-12 02:55:47
![](https://img.aspxhome.com/file/2023/8/108708_0s.jpg)
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
![](https://img.aspxhome.com/file/2023/5/102295_0s.jpg)
Java中Elasticsearch 实现分页方式(三种方式)
2022-03-04 06:19:08
java操作elasticsearch的案例解析
2021-06-27 19:17:13