App开发Flutter支持Harmony OS Next方案
1. 背景
由于当前部门使用Flutter
框架进行开发,支持生成Android
和iOS
两端的App
应用。现在鸿蒙系统计划完全去掉AOSP
核心代码,将无法支持Android
应用。因此,鸿蒙手机接下来只能安装鸿蒙App
应用。鉴于此,从长远来看,部门App
后续也需要支持鸿蒙系统。那么,如何从成本和可维护性方面考虑后续的开发模式?可以兼顾到Android
、iOS
和鸿蒙系统,同时老项目又能支持在鸿蒙手机上运行?重新开发鸿蒙版本?显然不切实际。
2. 解决方案
2.1 方案一:Flutter for OpenHarmony
❝https://gitee.com/openharmony-sig/flutter_flutter
鸿蒙官方计划对Flutter
进行反向适配,即基于Flutter SDK
的稳定版本进行拓展,使其能够在鸿蒙DevEco Studio
上构建和生成鸿蒙App
应用。
2.1.1 优势
-
官方支持。 -
Flutter
源码直接可用,只需简单适配,成本低。
2.1.2 劣势
-
因使用 Flutter
版本为3.7
,与当前最新3.24
版本相差过大,加上Flutter
迭代特别频繁,很多开发方式、组件都在不断变化,后续要使用新的Flutter
特性,可能不会那么容易。 -
Flutter
正在考虑使用自研的图形渲染引擎Impeller
替换掉Skia
,这无疑又加大了更多的变数。最后,可能会变成多个分支进行维护。 -
部门已有项目,使用的 Flutter
版本都是最新的,可能是没办法兼容的。除非新项目统一使用这个3.7
版本的Flutter SDK
来开发。
2.2 方案二:ArkUI-X 跨平台框架
❝https://gitee.com/arkui-x
ArkUI-X
扩展ArkUI
开发框架到多个OS
平台,让开发者基于一套主代码,就可以构建支持多平台的精美、高性能应用。目前支持OpenHarmony
、HarmonyOS
、Android
、iOS
,后续会逐步增加更多平台支持,可以简单理解为鸿蒙版的Flutter
。
2.2.1 优势
-
官方支持。 -
鸿蒙版的 Flutter
。
2.2.2 劣势
-
有学习成本,虽然鸿蒙和 Flutter
是有一些共性的,学习成本相比之下不会太高,但是毕竟是新的开发模式,各种各样的知识和问题都是需要积累和时间的。 -
有开发成本,已有的 Flutter
项目需要重新开发。 -
生态各方面还处于初期,还未成熟和完善,也不适合立马接入商业项目应用。
2.3 方案三:Flutter Web【推荐】
❝http://192.168.24.10/appweb/index.html
通过Flutter Web
可以部署在网页上,然后在手机浏览器上使用,并设置为全屏,则可以达到和App
一样的使用效果。
2.3.1 优势
-
无开发成本。 -
使用时无需安装。 -
与系统无关,只要有浏览器就可使用。
2.3.2 劣势
-
需要说服使用鸿蒙手机的客户接受这种使用方式。 -
各手机浏览器需要支持全屏功能,不过可以代码实现,检测到当前是手机访问,则自动全屏即可。 -
考虑到毕竟是在网页上使用,体验可能不如 App
,但是现在手机性能、网络访问各方面发展都很不错,这方面应该不会特别明显。 -
不联网的项目怎么办?可以基于鸿蒙开发一个基于 WebView
的简单手机浏览器,并加载本地Flutter Web
部署的包,打开这个应用就可访问。 -
额外多一些适配的工作,但不会很多, Flutter
项目开发,需同时考虑兼容Web
端。
2.4 方案四:Flutter 官方支持 HarmonyOS
Flutter
官方暂没有支持HarmonyOS
的计划,但是这个问答 《HarmonyOS Support》 毕竟是几年前了,以后的发展并不好说,如果鸿蒙系统大规模发展起来,发展到可以倒逼Flutter
官方支持也不是没有可能。
3. 结论
到底选哪个方案,不是绝对的,只能是阶段性的,因为很多方案都还存在变数。考虑到部门的App
项目情况,推荐选择【方案三】,但是方案一、方案二可以在后续进行这方面的调研和准备工作,伺机而动。
本文由 mdnice 多平台发布