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开发版内测。一、原理安卓1
2023-05-23
安卓11开发人员功能在哪里设置
安卓11是Google在2020年推出的最新版本的操作系统,相较于之前的版本,安卓11带来了很多新的功能和改进。对于开发人员而言,安卓11的开发环境也做了不少变化和优化,本文将从原理和详细介绍两个方面对安卓11开发人员功能进行讲解。一、原理安卓11的开发人
2023-05-23
flutter开发安卓有什么用
Flutter是一个由谷歌开发的开源移动应用程序开发框架,使用Dart语言编写,可以用于Android和iOS的移动应用程序开发。与传统的原生开发不同,Flutter采用的是构建UI的方式,因此可以快速地开发应用程序。Flutter有很多优点,比如:1.
2023-05-23
eclipse怎么用于安卓的开发
Eclipse是一款基于Java语言开发的开放源代码集成开发环境(IDE),常用于开发Java程序、Web应用程序和Android应用程序。在Android应用开发中,Eclipse是最常用的开发工具之一。使用Eclipse可以方便地编写代码、编译、调试和
2023-05-23
漯河家政安卓app定制开发
漯河家政安卓App定制开发,简单来说就是根据用户的需求,定制一款专为漯河家政服务的安卓App应用程序。该应用程序需要包含以下主要模块:1. 首页模块:提供漯河市家政服务的简要介绍,展示最新家政服务内容,包括推荐的家政服务、热门的家政服务等等。2. 分类模块
2023-04-28
温州安卓app开发周期
安卓APP开发周期,一般分为以下几个阶段:1. 需求分析在开发APP之前,需要先根据客户需求,对APP进行需求调研和分析,明确开发的功能和特点,以及目标用户。根据调研结果,制定开发方案和产品规划。2. 原型设计根据需求分析的结果,开始进行原型设计,主要包括
2023-04-28
杭州安卓app开发价位
杭州安卓app开发价位详细介绍当今时代,移动应用已经成为了人们日常生活中不可或缺的一部分,尤其是安卓APP,因为安卓设备市场占有率较高。许多企业和个人都在寻求开发自己的安卓应用,但如何确定开发费用是他们面临的一大难题。本文将为您详细介绍杭州安卓APP开发价
2023-04-28
安卓和苹果开发app
安卓和苹果开发App的原理和方式是不同的,下面分别介绍:## 安卓应用开发### 原理安卓是一种基于Linux 的开源终端操作系统,由Google推出,该操作系统以Java语言编写,核心库由C/C++库提供,允许开发者通过Java语言编写应用程序,并使开发
2023-04-28
安卓app获得用户数据开发者哪里看
安卓应用程序获取用户数据的方法很多,一些比较常见的途径包括:1. 权限申请:开发者在应用程序中申请获取用户的一些敏感权限,如设备识别号、位置信息等。用户在安装应用程序时需要授权,开发者通过这些权限可以获取到用户的一些敏感数据。2. 数据收集工具/SDK:开
2023-04-28
安卓app开发5个优势
Android App 开发是当今移动应用程序开发领域中非常流行的一种开发方式。Android 是由 Google 开发的一种开源操作系统,主要用于触摸屏智能手机和平板电脑。以下是 Android App 开发的五个优势:1. 开放源代码及生态系统:And
2023-04-28
安卓app封装和分发
安卓App封装和分发是将安卓应用程序打包成安装包,然后发布到应用商店或其他渠道供用户下载和安装的过程。下面将详细介绍安卓App封装和分发的流程和原理。一、App封装流程1.应用程序代码编写:开发人员根据需求编写安卓应用程序的代码。2.打包:将源代码和资源文
2023-04-28
安卓app封装ios
安卓App和iOS App在很多方面都有许多不同。安卓App通常是使用Java或Kotlin编写的,而iOS App则是使用Swift或Objective-C编写的。因此,如果要将安卓App封装成iOS App,需要进行一些额外的工作。以下是一些可能使用的
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1