Android笔记:在原生App中嵌入Flutter

flutter 专题 六十四 在原生项目中集成Flutter 使用Flutter从零开始开发App是一件轻松惬意的事情,但对于一些成熟的产品来说,完全摒弃原有App的历史沉淀,全面转向Flutter是不现实的。因此使用Flutter去统一Android、iOS技术栈,把它作为已有原生App的扩展能力,通过有序推进来提升移动终端的开发效率。目前,想要在已有的原生App里嵌入一些Flutter页面主要有两种方案。一种是将原生工程作为Flutter工程的子工程,由Flutter进行统一管理,这种模式称为统一管理模式。 阅读详情

本文参考文档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>

部分安卓学习思维大纲:

再推荐一篇文章,具体的架构视频,面试专题,学习笔记都在这篇文章中:“寒冬未过”,阿里P9架构分享Android必备技术点,让你offer拿到手软!

Flutter与Android原生项目混合开发 工作中,遇到了需要flutter与原生android项目混合开发的情况,结合网络中别人的经验,在此记录我的整合过程。 阅读详情

相关推荐

原生安卓项目中集成Flutter模块

第一步,在与项目文件夹的同级目录下,创建一个Flutter Module,使用命令行创建 flutter create -t module flutter_module 第二步,打开安卓项目的build.gradle,使用java8编译 android { ............. compileOptions { sourceCompatibility Java...

Eridike的博客 1221

Flutter开发之——Android-Flutter添加到Fragment

一 概述 Android原生开发中,Fragment可以作为Activity页面的一部分(Activity的一部分或者ViewPager的一个页面) Flutter可以作为FlutterFragment集成到原生页面中呈现 二 FlutterFragment开发的一般步骤 初始化Flutter路由 设置Dart执行入口 背景是否透明 使用是否FlutterEngine或者带缓存的FlutterEngine 三 界面布局(activity与Fragment的关系) 3.1 界面(TextView+R

我的博客 1440

android嵌入flutter module实现

android嵌入flutter module实现方法

晨风的小窝 1718

Flutter 嵌入到原生项目 几种实现方式

环境:Mac + Flutter 1.20.0 一、在原来Android Module基础上添加 1. 点击File---->New Module--->Flutter Module 添加完成Flutter Module之后会自动添加对Flutter的依赖 至此就完成了对Flutter 部分的依赖可以进行调试 FlutterMain.startInitialization(this); Intent intent1 = new Intent(MainActivity.t

jia635的专栏 3068

Flutter混合开发之FlutterFragment

我们知道,原生Android集成Flutter主要有两种方式,一种是创建flutter module,然后以原生module那样依赖;另一种方式是将flutter module打包成aar,然后在原生工程中依赖aar包,官方推荐aar的方式接入。 如何在原生Android工程中以aar的方式接入Flutter,大家可以参考我之前文章的介绍:原生Android工程接入Flutter aar。今天想给大家分享的是FlutterFragment。 一、Android原生工程 在Android原生开发中,实现底部T

xiangzhihong8的专栏 2464

MicroPython 开发ESP32应用教程 之 WIFI配网 Web页面配网 softAP 配网 web页面控制WS2812灯珠

MicroPython 开发ESP32应用教程 之 WIFI配网 Web页面配网 softAP 配网 web页面控制WS2812灯珠

weald2000的专栏 2080

手把手教你在Android项目中接入Flutter,在Flutter中使用Android布局

如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记》,帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。

yihanss的博客 5516

告别单一查询!MultiQueryRetriever在LangChain中的高级用法解析

本文深入解析了LangChain中的MultiQueryRetriever高级用法,该工具通过大语言模型自动生成多样化查询,显著提升文档检索的召回率和准确性。文章详细介绍了其核心机制、高级配置调优策略以及在多语言和专业领域中的实际应用,为开发者提供了优化知识库问答系统的实用方案。

weixin_28730927的博客 271

Flutter混合开发

来源 |https://segmentfault.com/a/1190000021634067混合开发简介使用Flutter从零开始开发App是一件轻松惬意的事情,但对于某些成熟的产品...

web前端开发 1236

pwscf与wannier90 Hands-On实战训练(一)——费米面计算为例

系列文章目录 Quantum Espresso Hands-On实战训练(三)——DOS计算 文章目录系列文章目录计算过程pwscf直接得到等能面pwscf和wannier90得到等能面pwscf直接得到等能面1. scf2. nscf3. 后处理pwscf和wannier90得到等能面1. Kpoints2. scf3. nscf4. pw2wan及wannier90.x5. XCrySDen可视化 计算过程 pwscf直接得到等能面 pwscf和wannier90得到等能面 pwscf直接得到等能面

weixin_45973682的博客 5070

cJSON库用完后内存泄漏?手把手教你正确使用cJSON_Delete和free释放资源

本文深入解析cJSON库的内存管理机制,重点解决使用后的内存泄漏问题。通过详细讲解cJSON_Delete和free的正确使用方法,帮助开发者在处理JSON数据时有效释放资源,避免内存泄漏。特别适用于嵌入式系统和资源受限环境,提升开发效率和系统稳定性。

weixin_30808693的博客 418

Android笔记:在原生App中嵌入Flutter,逆袭面经分享

都说三年是程序员的一个坎,能否晋升或者提高自己的核心竞争力,这几年就十分关键。技术发展的这么快,从哪些方面开始学习,才能达到高级工程师水平,最后进阶到Android架构师/技术专家?我总结了这 5大块;我搜集整理过这几年阿里,以及腾讯,字节跳动,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。

2401_84103216的博客 1261

3D Slicer:从入门到精通——数据模块之DICOM

该模块允许导入、导出和网络传输DICOM数据。Slicer支持DICOM功能的常用子集,其特定功能由临床研究的需求驱动:从磁盘读取和写入数据集,并通过DIMSE和DICOMweb网络协议进行网络传输——查询检索发送和接收数据集。医学数字成像和通信(DICOM)是信息交换数字放射学的广泛使用标准。在大多数情况下,医院使用的成像设备(CT和MR扫描仪)将生成保存为DICOM对象的图像。DICOM按以下层次结构组织数据患者… 可以有1个或多个研究(单次成像检查) … 可以有1个或多个系列。

walt3433的博客 6065

在已有的原生 App 里嵌入 Flutter 页面的方法

在原生 App 中嵌入 Flutter 页面,通常使用 Flutter 提供的平台通道(Platform Channels)来实现原生代码与 Flutter 之间的交互。具体实现方式依赖于原生 App 的平台(如 Android 或 iOS)

Chloeeeeeeee的博客 1654

抓包工具:Fiddler下载、安装、使用 教程

文章目录抓包工具:Fiddler下载、安装、使用 教程一、Fiddler 下载二、Fiddler 安装三、Fiddler 使用3、Statistics 请求的性能数据分析4、Inspectors 查看数据内容5、AutoResponder 允许拦截指定规则的请求6、Composer 自定义请求发送服务器7、Filters 请求过滤规则8、Timeline 请求响应时间9、Fiddler 设置解密HTTPS的网络数据10、Fiddler 内置命令与断点 抓包工具:Fiddler下载、安装、使用 教程 Fidd

Sumarua的博客 17万+

华为OD机试 - 最快到达医院的方法(Python/JS/C/C++ 2024 E卷 100分)

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、发现新题目,随时更新,全天优快云在线答疑。

学Java,找哪吒 2169

【Flutter 混合开发】嵌入原生View-Android

Flutter 混合开发系列 包含如下: 嵌入原生View-Android 嵌入原生View-IOS 与原生通信-MethodChannel 与原生通信-BasicMessageChannel 与原生通信-EventChannel 添加 Flutter 到 Android Activity 添加 Flutter 到 Android Fragment 添加 Flutter 到 iOS 每个工作日分享一篇,欢迎关注、点赞及转发。 AndroidView 建议使用 Android Studio 进行开发..

老孟Flutter 4076

VTK 显示大量点云数据及交互(点云拾取、着色、测量等)功能

VTK (Visualization Toolkit) 是一个强大的开源可视化库,非常适合处理点云数据。下面将介绍如何使用 VTK 显示大量点云数据,并实现点云拾取、着色、测量等功能。

深之JohnChen的专栏 1996

Android原生嵌入Flutter模块

读这篇文章的前提是,你对Flutter已经有一定了解,或者已经达到会开发Flutter的程度,并且Flutter相关环境已经配置OK! 本文所展示项目的运行环境: FlutterSDK版本:flutter_windows_2.10.1-stable AndroidStudio版本:Bumblebee | 2021.1 AndroidSDK版本:31 Gradle版本:7.2 第一步:在你的安卓原生项目父级目录下),执行命令: flutter create -t module --org com.exampl

白玉梁的专栏 5252

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

android 嵌入脚本,Android如何在原生App中嵌入Flutter

首先有一个可以运行的原生项目第一步:新建Flutter moduleTerminal进入到项目根目录,执行flutter create -t module ‘module名字'例如:flutter create -t module flutter-native执行完毕,就会发现项目目录下生成了一个module第二步:同步Flutter module依赖进入到新生成的Flutter module目录...

weixin_29245767的博客 490

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Flutter混编:在Android原生中混编Flutter

目前《闲鱼》客户端已经在商品详情页使用纯Flutter编写了,单页面纯Flutter写是没有问题的,在这里顺便提一下怎么简单辨认一个页面是Flutter还是原生(不严谨,在你知道它是有Flutter的情况下,因为RN也会这样的): 打开手机的“开发者模式” 打开“显示布局边界” 切回APP 以《闲鱼》商品列表页和商品详情页为例: 商品列表页和商品详情页 接下来我们打开布局边界显示,可...

宝爷的专栏 4766

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

在原生App中嵌入Flutter

本文参考文档Add Flutter to existing apps。 首先有一个可以运行的原生项目 第一步:新建Flutter module Terminal进入到项目根目录,执行flutter create -t module ‘module名字’例如:flutter create -t module flutter-native 执行完毕,就会发现项目目录下生成了一个module 第二步:...

Android 开发架构 1638

Flutter对原生app接入Flutter进行了优化和升级

概述 使用Flutter从零开始开发App是一件轻松惬意的事情,但对于一些成熟的产品来说,完全摒弃原有App的历史沉淀,全面转向Flutter是不现实的。因此使用Flutter去统一Android、iOS技术栈,把它作为已有原生App的扩展能力,通过有序推进来提升移动终端的开发效率。 目前,想要在已有的原生App里嵌入一些Flutter页面主要有两种方案。一种是将原生工程作为Flutter工程的子工程,由Flutter进行统一管理,这种模式称为统一管理模式。另一种是将Flutter工程作为原生工程的子模块

Android格调小窝 1037

flutter中嵌入原生Android View

一、创建Android原生View 1、选中android目录下任意文件,点击右上角出现的“Open for Editing in Android Studio” 2、在新打开的窗口里,app项目下创建继承PlatformView 的AndroidView /** * messenger flutter与原生通讯需要该参数 * viewId 控件唯一标识 * args 初始化参数 */ class AndroidView(context: Context?, me

yufumatou的博客 1121

Flutter Application 转 Module 嵌入原生 App

将Flutter Application 转 Module 嵌入原生 App: 现有的 Flutter 是一个 Applicaiton 项目; 现在想他把嵌入 原生应用中: 首先需要将现有 Flutter 工程转成 Module 工程; 在flutter 工程中: pubspec.yaml 文件中 flutter 节点下添加如下配置:然后 pug get 跑一下 module: androidX: true androidPackage: com.john.flutter..

唐僧的专栏 3244
上一篇: Android端的短视频开发,我们该如何快速实现移动端短视频功能?
下一篇: 腾讯T3大牛带你了解 2019 Android开发趋势及必备技术点!
普通网友
博客等级 码龄11年 461粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值