Flutter鸿蒙终端一体化-混沌初开

这篇具有很好参考价值的文章主要介绍了Flutter鸿蒙终端一体化-混沌初开。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

flutter鸿蒙终端一体化-珠联璧合,flutter,harmonyos,华为

点击上方蓝字关注我,知识会给你力量

flutter鸿蒙终端一体化-珠联璧合,flutter,harmonyos,华为

环境配置

欲练此功,必先仔细阅读此项目的README文件十遍以上。

flutter_flutter项目,这是我们整个工程的核心,但是很多人都倒在了第一步,其原因,就是——需要使用Dev分支!!!
https://gitee.com/openharmony-sig/flutter_flutter/tree/dev/

当前项目已经支持Linux、Mac、Windows环境下使用。首先,按照README的指引,配置好鸿蒙相关的SDK和环境变量,主要是ohpm与sdkmanager,参考README中给出的地址配置即可,需要注意的是版本要对应。目前该项目对应的官方Flutter版本是3.7。

接下来,配置命令行签名工具,同样是按照指引,需要注意的是签名工具这个项目,需要使用gradle7.1和Java11进行编译,在Mac下,可以很方便的使用brew来安装Java环境,在编译签名工具的时候,将环境变量中的Java11的注释放开即可。

shell
export PATH="/opt/homebrew/opt/openjdk@11/bin:$PATH"

编译成功后,会生成./hapsigntool/hap_sign_tool/build/libs/hap-sign-tool.jar文件。

最后,在本地运行鸿蒙Flutter项目的话,需要使用定制化的Flutter Engine,项目如下:
https://gitee.com/openharmony-sig/flutter_engine
按照README中的编译方式来进行编译,最后获取产物即可,当然,文档中也提供了鸿蒙编译好的产物,可以直接进行使用,这也是最方便的方法。
https://docs.qq.com/sheet/DUnljRVBYUWZKZEtF?tab=BB08J2

不过还是建议大家去编译下engine,享受下定制engine的快感。

一起准备就绪后,通过flutter doctor -v查看环境配置是否ok,得到下面的内容,就算完成了配置。

shell
flutter doctor
[✓] OpenHarmony toolchain - develop for OpenHarmony devices
• OpenHarmony Sdk location: /Users/xxx/Downloads/harmony_flutter/M1SDK/openharmony, available api versions has [10]
• hdc version 1.3.0
• ohpm version 1.4.0
• signTool location:/Users/xxx/Downloads/harmony_flutter/developtools_hapsigner/autosign

创建工程

使用下面的指令来创建我们第一个鸿蒙Flutter工程:

shell
flutter create --platforms ohos flutter_test_project

进入创建好的工程,执行下面的指令:

shell
flutter build hap --target-platform ohos-arm64 --debug --local-engine=~/flutter_engine/src/out/ohos_debug_unopt_arm64 -v

local-engine就是前面下载的定制化引擎产物,鸿蒙的产物编译,大多都需要指定引擎地址,编译成功后,会自动进行签名,并生成相应的signed包,执行install指令进行安装。

shell
flutter install ohos/entry/build/default/outputs/default/entry-default-signed.hap

恭喜你,跑不起来,因为4.0系统还不支持模拟器运行,所以,你必须有一台鸿蒙4.0+系统的真机才能运行,如果你的公司和华为有合作,那么现在肯定已经收到鸿蒙的测试机了,连上设备,直接运行就好了。
flutter鸿蒙终端一体化-珠联璧合,flutter,harmonyos,华为
好了,Flutter的一小步,却是鸿蒙的一大步。

我们来看下现在鸿蒙Flutter工程的结构:
flutter鸿蒙终端一体化-珠联璧合,flutter,harmonyos,华为
是不是熟悉的味道,纯Flutter工程,整体结构是和官方基本一直的,只是将Android、iOS换成了ohos,这里就是鸿蒙的Native工程,你可以直接使用鸿蒙Dev-ECO Studio来打开这个工程,在它的entry-src-main-ets中,就是对应的插件代码,看到熟悉的GeneratedPluginRegistrant.ets吗,换汤不换药,整体结构改动不大,熟悉下鸿蒙Native代码,很快就可以开发了。

三端统一

鸿蒙Flutter开发有两种模式,一种是以纯Flutter工程为主,即上面的这种模式,鸿蒙代码写在Flutter工程中,另一种是和Android、iOS开发类似,通过依赖鸿蒙Flutter的编译产物har来进行开发。

从技术的角度来看,第一种方案会更加简单,因为鸿蒙的Native代码已经是申明式了,类似Compose了,所以在鸿蒙Native代码中使用Flutter页面是非常简单的一件事,甚至可以直接将FlutterPage()当作一个View直接使用,所以鸿蒙Flutter混编会比Android、iOS方便很多。

而另一种方式,通过产物进行依赖,这种方式更加符合三端统一的目标,也更适合团队进行解耦和协作。不过这种方式也有一些问题,那就是Flutter依赖的一些第三方库,同样是需要适配鸿蒙版的,所以在yaml中,相对正常的Flutter项目来说同样需要进行区分。

截止目前,flutter_flutter的build har指令还有bug,会编译失败,还在等待社区解决中。

对于Flutter的第三方库来说,鸿蒙Flutter社区也给出了适配的计划表
https://docs.qq.com/sheet/DVVJDWWt1V09zUFN2?tab=BB08J2
表中的第三方库都是待验证的,有些不需要Native支持的,验证的版本可以直接使用,有些需要Native支持的插件功能,有计划完成时间的,都是已经处理过的。由此可见,鸿蒙Flutter社区的支持还是很快的。
flutter鸿蒙终端一体化-珠联璧合,flutter,harmonyos,华为
所以大部分的Flutter库,都是可以直接适配的,只有那些依赖Native的插件,才需要适配。

好了,到目前为止,鸿蒙Flutter工程已经初具雏形,整体的适配效果还是不错的,本篇文章是鸿蒙Flutter的第一篇,后续还会对鸿蒙Flutter的混编方案、桥接方法继续讲解。

向大家推荐下我的网站 https://www.yuque.com/xuyisheng  点击原文一键直达

专注 Android-Kotlin-Flutter 欢迎大家访问

往期推荐

  • Flutter混编方案在起点客户端的实践之路

  • Flutter性能揭秘之RepaintBoundary

  • 当我用ChatGPT摸了一上午鱼,结果......

  • 从Kotlin中return@forEach了个寂寞

本文原创公众号:群英传,授权转载请联系微信(Tomcat_xu),授权后,请在原创发表24小时后转载。

< END >

作者:徐宜生

更文不易,点个“三连”支持一下👇
文章来源地址https://www.toymoban.com/news/detail-831788.html

到了这里,关于Flutter鸿蒙终端一体化-混沌初开的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • DevOps(开发运维一体化)

    DevOps是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。 DevOps的三大支柱,即人(People)、流程(Process)、平台(

    2024年02月07日
    浏览(37)
  • 一体化个人门户Web Portal

    什么是 Web Portal ? Web Portal 是一个一体化的 Web 仪表板,提供许多小部件来构建个人门户。具有加载外部插件的能力。对于那些只需要链接仪表板并希望使用 yaml 配置它的人来说, Lite 版是一个精简版本。 如果你不想自己构建,可以跳过,直接阅读下一章节 构建服务端镜像的

    2024年02月11日
    浏览(53)
  • 大数据流批一体化架构设计

    1、当前生产环境因source端数据更改,导致后续计算重新运行情况时有发生,这样不仅牵扯开发精力而且十分消耗资源。 2、现有的数据处理方式不能更好的面向未来日益增多的需求。 3、业务线数据模型混乱,数据使用成本特别高。 4、需求驱动的烟囱式开发,完全没有复用的

    2024年02月14日
    浏览(30)
  • “天空地”一体化生态系统监测概念介绍

    “天空地”一体化生态系统监测是综合运用卫星遥感监测、航空遥感监测和地面站点监测等环境监测手段,基于数据挖掘、数据融合、数据协同和数据同化等关键技术,获得更加准确数据支持的立体生态监测感知体系。“天空地”一体化生态监测体系能更为全面地反映生态系

    2024年02月12日
    浏览(32)
  • 什么是流批一体化、区块链

    流批一体 大数据厂商喜欢强调的功能特性。就是流式数据处理、离线批量数据处理,实现一体化处理。可能对政务信息化的数据处理效率会有所提升。这个也是个工程概念,估计2-3年就会过时。什么不是工程概念呢?比如数据元和元数据的概念。 再来看看区块链的底层逻辑

    2024年02月02日
    浏览(38)
  • 医院核心数据库一体化建设实践

    “以数据为核心资源的数字化时代,正在成为引领和推动新一轮科技革命的核心力量,将会深刻影响卫生健康行业。” 这是四月份发布的《公立医院运营管理信息化功能指引》中对数据重要性的描述。数据库作为数据的载体,支撑着整个业务系统,发挥着非常重要的作用,被

    2023年04月24日
    浏览(46)
  • 重新认识Elasticsearch-一体化矢量搜索引擎

    2023 哪个网络词最热?我投“生成式人工智能”一票。过去一年大家都在拥抱大模型,所有的行业都在做自己的大模型。就像冬日里不来件美拉德色系的服饰就会跟不上时代一样。这不前段时间接入JES,用上好久为碰的RestHighLevelClient包。心血来潮再次访问Elasticsearch官网,发现

    2024年02月02日
    浏览(31)
  • 02.RDO一体化部署OpenStack详细步骤

    Author:Sickey Date:2021-11-24 vim /etc/resolv.conf 如上图,默认已经配置好了 vim /etc/hosts 192.168.233.133 openstackrdo     systemctl stop firewalld systemctl disable firewalld vim /etc/selinux/config       #SELINUX=enforcing  改成  SELINUX=disabled

    2024年02月09日
    浏览(33)
  • 一体化笔记本电脑内置键盘更换指南

    内容:记录一次笔记本内置键盘更换事件。以前的笔记本键盘可以从C面直接取掉,现在的笔记本基本都是金属外壳,同时为了让笔记本电脑更加轻薄,一般都是一体化操作。网上一般都是连同键盘及外壳,直接更换C面,价格昂贵不说,太浪费了,不建议,地球环境越来越差

    2024年02月13日
    浏览(44)
  • 数字孪生“光储充”一体化智慧充电站

    近年来,蔚来、理想、特斯拉等电动汽车凭借独特的优势已成为全球消费者的“新宠儿”。随着新能源车保有量迅速增长,充电需求不断上升,充电桩对区域电网的冲击也日益显著。 “光储充”一体化模式,即“光伏+储能+汽车充电”,被视为解决新能源汽车与充电桩发展不

    2024年02月21日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包