温馨提示  2024年 6月我们已经停止开发者板块文章内容更新,谢谢来访。存档数据
知识 2024-01-14 35 次阅读

Flutter能否与安卓原生混合开发?

当然可以!Flutter 是一款跨平台的开发框架,它允许开发者使用相同的代码库构建 iOS、安卓 和 Web 应用程序。通过 Flutter,你可以使用 Dart 语言和 Flutter 插件系统来与 安卓 原生应用程序进行混合开发。这代表着你可以利用 Flutter 的高性能渲染引擎和跨平台优势,同时利用 安卓 原生组件和功能来实现更丰富的应用程序体验。快来尝试 Flutter 混合开发吧!

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

但 Flutter 与 安卓 原生应用之间并非完全不能兼容,而是能实现混合开发。下面将以常常出现在大家视野里的实现方法来简要介绍 Flutter 与 安卓 原生混合开发的实现原理

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

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

Embedding V1

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

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

安卓:id=@+id/flutter,view

安卓:layout,width=match,parent

安卓:layout,height=match,parent />

2. 在 安卓 原生应用的 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);

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

Embedding V2

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

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

安卓:id=@+id/flutter,fragment

安卓:name=io.flutter.embedding.安卓.FlutterFragment

安卓:layout,width=match,parent

安卓:layout,height=match,parent

app:flutterEmbedding=2 />

2. 在 安卓 原生应用的 Activity 中通过 FlutterFragment 得到 FlutterEngine 的实例

FlutterFragment flutterFragment = getSupportFragmentManager()

.findFragmentById(R.id.flutter,fragment);

FlutterEngine flutterEngine = flutterFragment.getFlutterEngine();

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

flutterFragment.attachToFlutterEngine(flutterEngine);

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

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