前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Flutter鸿蒙终端一体化-混沌初开

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

作者头像
用户1907613
发布于 2024-01-24 08:50:43
发布于 2024-01-24 08:50:43
3K00
代码可运行
举报
文章被收录于专栏:Android群英传Android群英传
运行总次数:0
代码可运行

环境配置

欲练此功,必先仔细阅读此项目的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的注释放开即可。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

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,得到下面的内容,就算完成了配置。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

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工程:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

shell
flutter create --platforms ohos flutter_test_project

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

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

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

好了,Flutter的一小步,却是鸿蒙的一大步。

我们来看下现在鸿蒙Flutter工程的结构:

是不是熟悉的味道,纯Flutter工程,整体结构是和官方基本一直的,只是将AndroidiOS换成了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库,都是可以直接适配的,只有那些依赖Native的插件,才需要适配。

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 群英传 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Flutter 开发鸿蒙应用时三方库引入指南
近期有开发者反馈,在使用 Flutter 开发鸿蒙应用过程中,file_picker 和 file_selector 这两个三方库在鸿蒙系统上出现点击无响应的情况,而相同代码在安卓系统上却能正常拉起文件选择器。该项目使用的是 Flutter 3.22.0 ohos 版本,相关导入代码如下:
徐建国
2025/05/26
2400
Flutter 开发鸿蒙应用时三方库引入指南
使用京东Taro开发鸿蒙PC(附鸿蒙版Taro环境搭建流程)
打开 DevEco,点击右上角的 Create Project,在 Application 处选择 Empty Ability,点击 Next,进入配置页面,根据需求调整内容,这里使用默认配置:
徐建国
2025/05/21
2910
使用京东Taro开发鸿蒙PC(附鸿蒙版Taro环境搭建流程)
Flutter鸿蒙终端一体化-珠联璧合
下面是以Flutter工程为主的鸿蒙混编项目结构,和纯Flutter工程结构基本一致,鸿蒙的Native功能,都写在ohos目录下,这就是一个完整的鸿蒙Native工程,可以直接使用DevECO Studio打开。
用户1907613
2024/02/06
1.1K0
Flutter鸿蒙终端一体化-珠联璧合
鸿蒙接入Flutter
flutter build hap # 示例:flutter run -d <device-id>
龙儿筝
2024/11/19
1890
鸿蒙接入Flutter
Flutter鸿蒙终端一体化—鹊桥相会
在鸿蒙中开发Flutter项目,一个最大的问题,就是「不太会写鸿蒙代码」,这对于一个Flutter开发者来说,虽然不是一件很麻烦的事,但由于现在鸿蒙的版本和文档还略有一些混乱,所以要写好还是有一些麻烦的,所以,秉着能用工具解决的问题就不要自己写的原则,我们参考Native的Flutter Channel的实现,也就是pigeon的方式,不熟悉的同学可以参考我之前的文章。
用户1907613
2024/03/18
7830
Flutter鸿蒙终端一体化—鹊桥相会
使用最新的 Flutter SDK 3.22.1 构建 HarmonyOS 应用
大家都知道目前鸿蒙的开源 tpc 和 sig 仓都迁移到了 gitcode 平台了,本次更新对 Flutter SDK 也有所涉及,所以我们就用最新的 Flutter SDK 来一起看一下如何构建 HarmonyOS 应用
徐建国
2025/04/11
6580
使用最新的 Flutter SDK 3.22.1 构建 HarmonyOS 应用
Flutter鸿蒙终端一体化-天下一统
但更多的时候,我们需要的是一种类似FlutterFragment的方式来进行引用,可喜的是,鸿蒙实现这种方式也并不复杂,因为不论是FlutterPage,还是FlutterFragment,它内部实际上是通过FlutterView的方式来创建的,所以,很快就有开发者提了PR,让鸿蒙可以支持FlutterFragment的方式进行开发,这个组件就是——FlutterEntry,原始PR地址如下。 https://gitee.com/openharmony-sig/flutter_engine/pulls/116
用户1907613
2024/03/18
4240
Flutter鸿蒙终端一体化-天下一统
解锁 Flutter_exit_app 库鸿蒙适配:离一键退出鸿蒙应用仅一步之遥
在数字化浪潮的推动下,跨平台开发框架如 Flutter 凭借其高效、便捷的特性,成为了开发者们的宠儿。而鸿蒙系统的崛起,更是为跨平台开发注入了新的活力。为了助力开发者在鸿蒙生态中快速实现 flutter_exit_app 退出应用程序功能,本文将深入浅出地为大家解析如何适配 flutter_exit_app 三方库至鸿蒙平台。
徐建国
2025/04/30
1030
解锁 Flutter_exit_app 库鸿蒙适配:离一键退出鸿蒙应用仅一步之遥
用 Flutter 开发鸿蒙 PC 应用
本文为开发者提供了使用 Flutter 开发鸿蒙 PC 应用的全面指南。涵盖开发环境搭建、项目创建与配置、界面设计、业务逻辑开发以及调试测试等环节,同时强调适配鸿蒙 PC 界面规范和调用系统能力的方法。还分享了实用的注意事项、相关资源链接,帮助开发者高效地使用Flutter构建鸿蒙 PC 应用。
徐建国
2025/05/19
2530
用 Flutter 开发鸿蒙 PC 应用
鸿蒙Taro实战:01-搭建开发环境
打开 Prefreences, OpenHarmony SDK, 勾选 API Version 12
少湖说
2024/11/06
1420
鸿蒙Taro实战:01-搭建开发环境
HarmonyOS NEXT-Flutter混合开发之鸿蒙-代码实践
在 Flutter 三端分离模式下完成纯血鸿蒙混入的过程中,虽然官方文档提供了一定的指导,但实际操作中可能会遇到一些坑。以下是我在适配过程中的一些经验总结,供各位开发者参考 😄 如果有帮助点个赞。
用户8181473
2025/03/17
2430
贡献 OpenHarmony 库关键配置
ohpm ERROR: Publish failed, detail: The "key_path" is empty - configure "key_path" in the .ohpmrc file.
豪王
2025/05/28
590
贡献 OpenHarmony 库关键配置
鸿蒙Flutter实战:11-使用 Flutter SDK 3.22.0
参考鸿蒙Flutter实战:01-搭建开发环境文章的说明,首先安装 Flutter SDK 3.22.0。
少湖说
2024/11/03
6210
鸿蒙Flutter实战:11-使用 Flutter SDK 3.22.0
鸿蒙版 Flutter 三方库适配案例【screen_brightness】
项目是一个用于控制屏幕亮度的 Flutter 插件项目,支持 Android、iOS、macOS 和 Windows 平台。
徐建国
2025/03/12
1890
鸿蒙版 Flutter 三方库适配案例【screen_brightness】
现有 Flutter 项目支持鸿蒙
最近这关税战打的是不亦说乎,从另一方面来说,国产替代浪潮奔涌,鸿蒙适配已成为一个必答题,这里面跨端框架是破局多 OS 割裂的最优解。比如 Flutter,之前有很多 app 可能是用 Flutter 做的,那么如何支持鸿蒙呢?
徐建国
2025/04/15
1.5K0
现有 Flutter 项目支持鸿蒙
适配 HarmonyOS Next API16 的鸿蒙版 Flutter 3.22.0 版本正式发布(1.0Release)
本版本为基于 Flutter 3.22.0 适配的 OpenHarmony 版本。本版本支持和完善 OpenHarmony 平台侧能力,提升稳定性。
徐建国
2025/05/08
4100
适配 HarmonyOS Next API16 的鸿蒙版 Flutter 3.22.0 版本正式发布(1.0Release)
使用 Flutter SDK 3.22.1构建HarmonyOS应用
1.进入项目根目录,如果项目还未创建,则使用 flutter create 命令创建项目
徐建国
2024/11/06
5120
使用 Flutter SDK 3.22.1构建HarmonyOS应用
Harmony中的HAP、HAR、HSP区别
对于普通的用户来说,可能一个普通的应用就等于一个安装文件如安卓下的APK。但是对于Harmony应用开发工程师来讲,一个应用包含的内容仅仅不止于此。
万少
2025/02/09
3190
Harmony中的HAP、HAR、HSP区别
跨平台开发鸿蒙原生应用
uni-app 是一个使用 Vue.js[1] 开发所有前端应用的框架,开发者编写一套代码,可发布到 HarmonyOS、iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。
徐建国
2024/11/12
2720
跨平台开发鸿蒙原生应用
鸿蒙 Flutter 运行到多平台
上面的设备 id,就是我们刚才检测到的设备 id,但是大家发现了,需要签名,那么我们用 DevEco Studio 来执行就好啦。
徐建国
2024/11/21
1530
鸿蒙 Flutter 运行到多平台
推荐阅读
相关推荐
Flutter 开发鸿蒙应用时三方库引入指南
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验