Flutter适配HarmonyOS实践

devtools/2024/12/28 8:18:03/

大家在知道纯血鸿蒙到来的时候一定很疑惑,使用跨平台语言的到底该怎么办,不管使用Flutter还是使用原生鸿蒙开发,都会考虑到一个成本问题,特别是一些无法支持鸿蒙开发团队,已经使用跨平台开发已经很成熟的公司或者团队。

接下来我将把我团队中怎么把现有flutter项目适配到鸿蒙的分享给大家。

首先我们需要了解纯血鸿蒙系统和原生安卓系统不是一个系统,开发过Flutter项目的同学都知道,每多一个平台,项目结构里都会多一个对应平台的model文件夹,例如:

Flutter适配的鸿蒙系统的内容就都在ohos文件夹里面了,如果要编辑鸿蒙相关的原生内容,可以使用DevEco studio打开ohos,在你通过适配鸿蒙的flutterSDK build之后,ohos就已经是一个独立的鸿蒙项目了,类似于android和iOS文件夹一样,他们都是一个独立的项目。

接下来我将一步步实现如何适配

检查当然flutter项目的SDK版本

因为目前适配鸿蒙的FlutterSDK版本release是3.7.12,为了避免出现大的适配问题,建议现将你的flutter项目先升级或者降级到3.7.12.

如果你的项目也像我的一样高于3.7.12,就需要降级到3.7.12后再去下载安装适配过鸿蒙的flutterSDK 

如何使用适配过鸿蒙的flutterSDK

传送门:Flutter SDK 仓库

这个仓库的简介也说了,它是基于Flutter SDK对于OpenHarmony平台的兼容拓展,可支持IDE或者终端使用Flutter Tools指令编译和构建OpenHarmony应用程序

通过文档提示,下载并配置环境

运行 flutter doctor -v 检查环境变量配置是否正确,FutterOpenHarmony应都为ok标识,若两处提示缺少环境,按提示补上相应环境即可,如果环境都通过你会看到以下界面:

开始创建项目,通过命令创建你的项目

flutter create --platforms ohos <projectName>

到这一步,就已经成功了50%啦,打开创建好的项目,将项目里的ohos文件夹复制,然后贴到你的flutter项目中和Android,iOS文件夹平级的地方。

将IDE里的flutter,dart的SDK路径替换成下载的flutter_flutter

然后在IDE里执行flutter clean, 清理掉之前的build文件,再执行 flutter pub get

调试运行

如果有更新了HarmonyOSNext的手机,你可以直接链接手机,点击IDE的run运行,如果你能顺利运行并且打开APP,恭喜你成功了40%

通过DevEco打开ohos文件夹,我们发现Index.ets入口是打开FlutterPage,这就是新的SDK为我们做的,不需要编写鸿蒙原生代码就能实现flutter项目在鸿蒙设备上运行,FlutterPage 是一个用于在鸿蒙应用中集成Flutter页面的类。

适配Flutter插件库

其实到这里大部分项目是根本无法运行的,或者运行后只有个别页面能打开,这是因为flutter项目里用到了很多插件库,但是这些库的地址是没有适配,我们需要到插件库去找,看看有没有适配:OpenHarmony平台已兼容库,例如我们需要集成:device_info_plus

1搜索插件库名称:

2.点击后面的库名称,回跳转到对应的git仓库

3.添加适配仓库地址:这时候需要在flutter项目中的pubspec.yaml文件中,在dependency_overrides下添加适配库的地址

dependency_overrides:device_info_plus:git:url: "https://gitee.com/openharmony-sig/flutter_plus_plugins.git"path: "packages/device_info_plus/device_info_plus"webview_flutter:git:url: "https://gitee.com/openharmony-sig/flutter_packages.git"path: "packages/webview_flutter/webview_flutter"permission_handler:git:url: "https://gitee.com/openharmony-sig/flutter_permission_handler.git"path: "permission_handler"

然后执行flutter pub get ,会发现我们的功能可以正常使用了。

眼尖的同学也注意到了,为什么我上面的3个适配库的url都不一样,这是因为不同的适配库,在不同的项目里,如果只是在https://gitee.com/openharmony-sig/flutter_packages.git 这一个地址找,就会出现,找不到库地址的错误。

将项目中所有的插件库在适配库地址里过一遍,基本上flutter官方的库都适配了,另外纯dart插件库不需要适配鸿蒙


http://www.ppmy.cn/devtools/146056.html

相关文章

关于无线AP信道调整的优化(锐捷)

目录 一、信道优化的基本原则二、2.4G频段信道优化三、5G频段信道优化四、信道优化代码具体示例五、其他优化措施 一、信道优化的基本原则 信道优化旨在减少信道间的干扰&#xff0c;提高网络覆盖范围和信号质量。基本原则包括&#xff1a; 1. 选择合适的信道&#xff1a;根据…

华三M-LAG场景下,部分MAC内的流量泛洪导致端口流量打满

互联网各领域资料分享专区(不定期更新)&#xff1a; Sheet 问题描述 华三M-LAG场景下&#xff0c;部分MAC内的流量泛洪导致端口流量打满 解决方案 在交换机设备上创建1个无用的聚合口&#xff0c;该聚合口加入到mlag组&#xff0c;并将异常泛洪的MAC加入到该接口即可解决。&…

基于HAL库的stm32的can收发实验

十六、CAN 1.CAN简介 CAN协议&#xff0c;全称为Controller Area Network&#xff08;控制器局域网络&#xff09;&#xff0c;是一种广泛应用的串行通信协议&#xff0c;最初由 德国BOSCH公司开发&#xff0c;并已成为国际标准。 低速CAN&#xff08;ISO11519&#xff09;通…

VUE3+VITE简单的跨域代理配置

出于安全考虑&#xff0c;未设置前端白名单&#xff0c;前端开发时&#xff0c;需要配置代理。 在本地创建一个虚拟服务器&#xff0c;发送请求数据&#xff0c;同时接受请求的数据&#xff0c; 利用服务器与服务器间&#xff0c;交互&#xff0c;不会有跨域问题&#xff0c;也…

影视仓最新接口+内置本包方法的研究(2024.12.27)

近日喜欢上了研究影视的本地仓库内置&#xff0c;也做了一个分享到了群里。 内置本地仓库包的好处很明显&#xff0c;当前线路接口都是依赖网络上的代码站存放&#xff0c;如果维护者删除那就GG。 虽然有高手制作了很多本地包&#xff0c;但推送本地包到APP&#xff0c;难倒一片…

TCP 和 UDP 的区别:解析网络传输协议

引言 在计算机网络的世界中&#xff0c;TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;和 UDP&#xff08;User Datagram Protocol&#xff0c;用户数据报协议&#xff09;是两种极为重要且应用广泛的传输层协议。它们在功能、特性以及适…

Flink的三种时间语义

在流数据处理中&#xff0c;一个很重要也很常见的操作就是窗口计算。窗口计算与时间密不可分。 窗口的计算在分布式流处理环境中&#xff0c;可能会面临如下问题&#xff1a;数据由上游发送到下游的过程中&#xff0c;可能是跨节点传输的&#xff0c;而网络传输存在延迟&#x…

零售小程序怎么自己搭建?开个小卖铺如何留住客户?

目录 1. 零售小程序搭建的第一步&#xff0c;先搞清楚需求 2. 找个靠谱的开发团队&#xff0c;少走弯路 3. 小程序的用户体验要简单直接 随着电商的迅速发展&#xff0c;零售商家纷纷开始尝试通过小程序来拓展业务。今天我们聊聊如何自己搭建一个零售小程序&#xff0c;以及如何…