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 原生应用的特征,兼顾两者的长处。


相关知识:
安卓 原生app 开发
Android原生应用开发是指使用Android SDK提供的开发工具和API直接编写Android应用程序。这种开发方法能够最大限度地利用Android系统的各种功能,同时相比于使用跨平台开发技术,原生应用具有更好的运行效率和更稳定的用户体验。Andro
2023-05-23
voip安卓开发
VOIP(Voice over Internet Protocol)即基于互联网协议的语音通信技术,可以让用户通过互联网传输音频和视频,实现语音和视频通话的功能。而在移动领域,VOIP领域迎来了安卓开发的大量应用。一、VOIP技术原理VOIP技术基于IP协
2023-05-23
tcl安卓开发
Tcl(Tool Command Language),是一种解释性的、高层次、脚本语言,它具有简单的语法、易于学习和使用等特点。Tcl逐渐被应用到各个领域,包括Web开发、服务器管理、数据库开发等等,同时在移动设备领域也有一定的应用。本文将介绍Tcl在安卓
2023-05-23
sdk安卓开发岗位
Android SDK是针对Android系统的软件开发工具包,它包含了Android系统开发所需的各种工具和资源,可以帮助开发者构建优秀的Android应用程序。在Android开发者中,SDK是很常见的的词汇,经常被提及,但对于新手来说可能会感觉有些含
2023-05-23
oppor17开发者选项在哪里安卓10
在安卓10版本中,OPPO R17手机的开发者选项默认是隐藏的,需要进行一些简单的操作才可以打开。开发者选项是一个非常重要的配置选项,它可以使用户获取更高权限,对手机进行深度优化和调试,例如USB调试、ADB等。下面详细介绍OPPO R17打开开发者选项的
2023-05-23
miui安卓7
MIUI是小米公司基于Android操作系统开发的一套自主UI,其诞生于2010年,至今已经发展成为全球用户超过2亿的最受欢迎的Android UI之一。MIUI最初起源于小米手机,现在已经拓展到多个品牌的手机上。MIUI的开发版相对于稳定版,更加注重新功
2023-05-23
4k安卓主板开发
4k安卓主板是一种基于安卓系统的高清晰度主板,它可以与各种显示器或电视机等设备相连,实现高质量的图像和音频输出。下面将对4k安卓主板开发的原理和详细介绍进行阐述。一、原理4k安卓主板的原理主要是基于安卓操作系统的开发。它是由基于ARM架构的芯片和一些其他的
2023-05-23
安卓网站打包app软件
安卓网站打包app软件通常是指将一个网站通过软件打包成一个安卓应用程序,以便用户可以将这个网站像使用一般应用程序一样在安卓设备上使用。以下是一个基本的打包过程:1.安装打包软件:需要安装安卓应用程序打包软件,常用的有Cordova、PhoneGap、Ion
2023-04-28
安卓手机app开发需要什么软件
安卓手机app开发需要以下软件:1. Android Studio:它是谷歌官方的开发工具,用于开发安卓应用程序。它提供了一个完整的集成开发环境,包含了编码、调试和打包发布。2. JDK:Java开发工具包是开发和编译Java程序的基本要素。Android
2023-04-28
安卓app开发和iosapp开发的区别
安卓App开发和iOS App开发在技术实现上有很大的区别,主要体现在以下几个方面:1. 开发语言:安卓App开发采用Java或Kotlin作为主要开发语言,而iOS App开发则使用Objective-C或Swift作为主要开发语言。2. 开发环境:安卓
2023-04-28
写给安卓app开发小白
安卓APP开发是指使用安卓操作系统来开发软件,其中安卓操作系统为主要的支持系统。它可以帮助开发人员开发应用程序,添加和利用安卓设备的各种功能和特性,比如GPS、SQLite数据库、调用相机、蓝牙和Wi-Fi等。安卓系统是一种基于Linux的开放源代码系统,
2023-04-28
idea开发安卓app配置
标题:使用IntelliJ IDEA进行Android应用开发:配置和详细介绍摘要:本教程将引导初学者如何使用IntelliJ IDEA这个强大的IDE进行Android应用开发配置,并为您提供详细的过程,让你轻松入门。内容:一、IntelliJ IDEA
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1