flutter可以和安卓原生混合开发吗

Flutter 是 Google 最近推出的全新跨平台移动应用框架,可以说是一个相当有前途的技术。然而像很多跨平台框架一样,Flutter也有其局限性,例如不便的兼容性,这也使得许多企业开发团队对 Flutter 持有一定的保留态度,特别是已经有了较成熟 Android 原生应用的时候。

但 Flutter 与 Android 原生应用之间并非完全不能兼容,而是可以实现混合开发。下面将以常见的实现方式来简要介绍 Flutter 与 Android 原生混合开发的实现原理:

Flutter 提供了一种叫做 FlutterView 的组件,这是一个继承自 View 的组件,可以在 Android 原生应用中嵌入一个 Flutter 页。FlutterView 的核心代码量较小,一般不需要修改,只需注入 Flutter 页即可。

Flutter 页是一个完整的独立应用,可以在 Flutter 中实现各种 UI 控件,数据处理和逻辑功能等。为了将 Flutter 页插入到 Android 应用中,Flutter提供了两种方式:Embedding V1 和 Embedding V2。

Embedding V1

Embedding V1 是一种最简单的嵌入方式,而且兼容 Android 4.1 以上版本,可以使用官方提供的库来实现。具体实现步骤如下:

1. 在 Android 原生应用的布局文件中添加 FlutterView 组件:

android:id="@+id/flutter_view"

android:layout_width="match_parent"

android:layout_height="match_parent" />

2. 在 Android 原生应用的 Activity 中添加 FlutterEngine:

FlutterEngine flutterEngine = new FlutterEngine(this);

flutterEngine.getDartExecutor().executeDartEntrypoint(

DartExecutor.DartEntrypoint.createDefault());

3. 将 FlutterEngine 与 FlutterView 组件关联起来:

flutterView = findViewById(R.id.flutter_view);

flutterView.attachToFlutterEngine(flutterEngine);

嵌入之后,就可以在 Android 原生应用中展示 Flutter 页了。

Embedding V2

Embedding V2 是新的嵌入方式,提供了更好的扩展性和稳定性,不过需要使用官方提供的插件,对原有代码侵入性较大。具体实现步骤如下:

1. 在 Android 原生应用的布局文件中添加 FlutterFragment 组件:

android:id="@+id/flutter_fragment"

android:name="io.flutter.embedding.android.FlutterFragment"

android:layout_width="match_parent"

android:layout_height="match_parent"

app:flutterEmbedding="2" />

2. 在 Android 原生应用的 Activity 中通过 FlutterFragment 获得 FlutterEngine 的实例:

FlutterFragment flutterFragment = getSupportFragmentManager()

.findFragmentById(R.id.flutter_fragment);

FlutterEngine flutterEngine = flutterFragment.getFlutterEngine();

3. 将 FlutterEngine 与 FlutterFragment 组件关联起来:

flutterFragment.attachToFlutterEngine(flutterEngine);

这样就可以在 Android 原生应用中展示 Flutter 页了。

综上所述,Flutter 与 Android 原生混合开发是完全可行的,同时开发者可以自由选择使用 Embedding V1 或 Embedding V2 实现嵌入。在混合开发过程中,开发者可以充分发挥 Flutter 的优势,如热重载、跨平台运行等,同时也可以保留原有的 Android 原生应用的特征,兼顾两者的长处。


相关知识:
安卓12开发版退回稳定版
如果你是安卓手机爱好者,你可能有听说安卓12的开发版发布了。然而,有些人不知道如何再次回到稳定版,或者他们不知道是否应该这样做。在本文中,我将详细介绍如何将安卓12开发版退回到稳定版。安卓12是Android操作系统的最新版本,于2021年5月19日发布了
2023-05-23
安卓11怎么退出开发者模式手机版
安卓11是2020年9月发布的最新安卓系统版本,为开发者提供了更丰富的功能和调试工具。开发者模式是其中一个非常重要的功能,它给予用户更多的控制权,包括允许用户调整进程优先级、启用A/B系统分区等。但当你完成开发工作后,退出开发者模式也是非常必要的,本文将详
2023-05-23
安卓11开发者选项怎么关闭
开发者选项是Android系统的一个隐藏功能,可以让开发人员在开发和测试时进行各种调试和设置,例如调试USB和网络,实时查看日志,设置窗口动画等等。但是对于普通用户来说,开启开发者选项可能会对手机造成潜在的风险和不必要的干扰,因此一般情况下我们建议关闭开发
2023-05-23
vpn加速的ios和安卓开发
VPN是一种将互联网上的数据以加密方式通过一个虚拟隧道传输的技术。通过VPN服务,我们可以在互联网上匿名浏览,保护我们的安全和隐私。但是,使用VPN服务时可能会出现延迟问题,而且在一些地区可能会影响VPN速度。那么,如何解决VPN延迟和速度问题呢?答案是V
2023-05-23
ios和安卓跨平台开发
跨平台开发,即在不同操作系统上使用同一份代码编写应用程序的技术。移动跨平台开发是移动应用程序开发的一种方式,其目的是将应用开发过程简化、加快开发和发布的速度,促进移动应用程序在多个平台上的部署和使用。目前,最流行的移动开发跨平台框架是React Nativ
2023-05-23
air安卓开发
Air是由Adobe公司推出的一款跨平台桌面应用程序运行环境,目的是将Adobe Flash技术向桌面应用程序领域扩展。Air主要应用于希望采用Adobe Flex、Flash、HTML、JavaScript等网页技术的开发者。Air可以运行于Window
2023-05-23
有人用易安卓开发app
易安卓(EzAndApp)是一款用于创建 Android 应用程序的在线平台,它的目标用户是那些没有编程经验或只具备有限编程技能的人。易安卓通过其可视化界面和可配置的组件库,使用户能够在不了解技术细节的情况下定制和创建自己的应用程序。在这篇文章中,我将介绍
2023-04-28
徐州安卓app开发价格
在本篇文章中,我们将探讨徐州安卓app开发的价格及影响因素。顺带一提,我们将简要概述安卓app开发的基本原理和详细流程。这篇文章将为您提供一个关于徐州安卓app开发成本的大致了解,并帮助您评估在这一领域的投资。一、徐州安卓app开发价格因素徐州市作为一个发
2023-04-28
开发ios和安卓app用什么语言
开发iOS和安卓App的语言和原理:详细介绍开发iOS和安卓应用程序时,需要使用不同的编程语言。本文将详细介绍用于开发iOS和安卓应用的编程语言以及开发原理。一、 iOS应用开发苹果公司提供了一系列强大的工具和指南来帮助开发者创建出色的iOS应用。开发iO
2023-04-28
安卓社区app开发多少钱
安卓社区APP的开发价格因开发公司、需求量以及功能复杂程度等多种因素而异。具体来说,以下几个因素可能会影响安卓社区APP开发的成本:1. 功能需求:APP的复杂程度在很大程度上影响着开发成本。添加各种复杂的功能需要大量的时间和开发人员的投入。通常来说,社区
2023-04-28
安卓app制作入门教程学习
安卓App制作入门教程通常可以分为以下几个步骤:1. 安装和设置开发环境用户可以下载Android Studio,它是一个专用于安卓开发的集成开发环境(IDE),它包括功能强大的调试工具、代码编辑器以及虚拟设备模拟器。同时,用户还需安装Java SE De
2023-04-28
visual studio开发安卓app
Visual Studio是一种综合型的IDE(集成开发环境),可以算是一种非常优秀的软件开发工具。使用Visual Studio进行Android开发时,主要需要用到以下部分:1. Java开发环境:Visual Studio需要Java SE SDK、
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1