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项目情况,推荐选择【方案三】,但是方案一、方案二可以在后续进行这方面的调研和准备工作,伺机而动。