鸿蒙 next flutter
HarmonyOS NEXT-Flutter混合开发之鸿蒙-代码实践
在 Flutter 三端分离模式下完成纯血鸿蒙混入的过程中,虽然官方文档提供了一定的指导,但实际操作中可能会遇到一些坑。以下是我在适配过程中的一些经验总结,供各位开发者参考 😄 如果有帮助点个赞。
在混入过程中是基于咸鱼团队 flutter_boost(这里不讨论和其他方案的差别) 和自定义 FlutterPlugin 实现的。
主要涉及内容:
环境搭建
Flutter module 创建
Futter 引入 flutter_boost
Harmony 引入 flutter_boost
Flutter 与鸿蒙侧通信
Flutter 调用鸿蒙原生
环境搭建
Fluter 环境
准备支持鸿蒙的 Flutter 开发环境,flutter_fluter 仓库基于 Flutter SDK 对于OpenHarmony平台的兼容拓展,可支持 IDE 或者终端使用 Flutter Tools 指令编译和构建 OpenHarmony 应用程序。
Harmonyos NEXT 环境
不再赘述,上链接。
Flutter module 创建
创建 Fluter 项目
flutter create -t module --org xyz.zhousg demo_fluter
打包 Fluter 项目
flutter build har --debug
Fluter 引入 flutter_boost
安装依赖
dependencies:
flutter:
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.2
fl_chart: ^0.62.0
flutter_boost:
// 1. 创建一个自定义的Binding,继承和with的关系如下,里面什么都不用写
class CustomFlutterBinding extends WidgetsFlutterBinding
void main() {
// 2. 这里的CustomFlutterBinding调用务必不可缺少,用于控制Boost状态的resume和pause
CustomFlutterBinding();
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState
Flutter 3.22.0-ohos 0.1.0 Release 发布
本版本为 Flutter OpenHarmony 平台 0.1.0 版本(Beta),基于 Flutter 3.22.0 版本适配。本版本支持和完善 OpenHarmony 平台侧能力,提供平台化 Channel、外接纹理、云端 SDK 等特性,并优化性能。
发布范围
HarmonyOS NEXT, API13
基础特性
- 支持 OpenHarmony 平台 Flutter Channel
- 支持 OpenHarmony 平台 Flutter Engine
- 支持 OpenHarmony 平台 Flutter 命令行工具
- 支持外接纹理
- 支持云端 SDK
- 官方库&三方库 OpenHarmony 平台适配
新增特性
- 支持 impeller 渲染引擎并默认使能
- 支持引擎预加载预渲染
- 支持自渲染内容导入 Flutter
版本发布时间
2024 年 12 月 31 日
版本配套
- ROM: 5.0.0.115
- IDE: DevEco Studio 5.0.5.310
- SDK: HarmonyOS SDK 5.0.5.310,API13
- Flutter SDK: 3.22.0-ohos-0.1.0(由于 flutter 版本解析规则,为了避免版本比较解析失败,将显示为 3.22.1-ohos-0.1.0)
三方库列表
3.22 版本与 3.7 版本共用同一套三方库代码仓,部分三方库依赖已更新 3.22 版本的,可以在代码仓中找到对应的新分支
- 官方库/三方库: 官方库链接[1]
- 三方库: 三方库名称仓库地址sqflitehttps://gitee.com/openharmony-sig/flutter_sqflitepermission_handlerhttps://gitee.com/openharmony-sig/flutter_permission_handlerfluttertoasthttps://gitee.com/openharmony-sig/flutter_fluttertoastconnectivity_plushttps://gitee.com/openharmony-sig/flutter_plus_pluginsdevice_info_plushttps://gitee.com/openharmony-sig/flutter_plus_pluginspackage_info_plushttps://gitee.com/openharmony-sig/flutter_plus_pluginsconnectivityhttps://gitee.com/openharmony-s
纯血鸿蒙微信 App 正式上线!依然使用了 Flutter,依然没说清哪里用了Flutter
作者|冬梅 1 历时 295 天,纯血鸿蒙微信 App 登陆应用商店1 月 9 日晚,搭载纯血鸿蒙操作系统微信 App 正式登陆华为应用商城,版本号为 1.0.3.42。相比此前的测试版本,正式版微信功能更加齐全,基础通讯、社交、微信支付、公众号、小程序、视频号及直播等功能齐备,使用上已经与其他平台无异。但目前版本的部分功能仍在进一步迭代中,可能会受到限制或暂时不可用。
当正式版本上线之际,,腾讯官方账号“鹅厂黑板报”发文,讲述了内部技术团队历时 295 天开发鸿蒙微信 App 的完整过程。此外,腾讯微信事业群(WXG)员工 @客村小蒋也在微博发布了一篇长文,从“局内人”的角度讲述了 App 开发背后的“笑与泪”。
他表示:“原生鸿蒙(HarmonyOS NEXT)完全是一套新的技术框架,编程语言是独特的 ArkTS 语言,这意味着所有的 App 都要完全重写。”
2 前端选择了 Flutter?!由于鸿蒙官宣不再兼容安卓应用,业内将其称之为“纯血鸿蒙”。“纯血”,也意味着一切都要重做。
2024 年 3 月 21 日,开发团队收到了“简单又正式”的通知,由曾经负责开发塞班系统微信的技术负责人带头开搞鸿蒙微信。
由于鸿蒙是一个全新的系统,所以技术团队要手搓 App 的同时,还要和鸿蒙团队不断沟通过程中遇到的问题。就这样这个庞大的工程项目迈出了第一步。
2024 年 4 月,鸿蒙微信开搭基建。团队凭借 Alita 跨平台内核优势,全力投身鸿蒙系统的适配与基础库移植工作,与华为频繁沟通技术细节,反复测试验证。
2024 年 5 月,技术团队启动了客户端架构设计,着手为鸿蒙系统适配微信。在这一阶段,团队面临的挑战不仅是满足业务需求,还需要确保微信客户端架构具备高度的解耦性和长期的高可扩展性。目标是使各个相互依赖的模块尽量减少技术上的耦合,避免单一模块故障对整个系统的影响,同时构建一个能够轻松扩展的框架。
到了 2024 年 6 月,微信开始进入实际的开发阶段。团队借助 Flutter、liteapp 等工具,全力整合支付、VoIP 等功能。
腾讯称:“Flutter(跨平台应用程序开发框架)、liteapp(专为移动端设计的跨平台开发框架)等,都是这个阶段的关键工作。”
1 月 9 日,鸿蒙微信正式版本上线。用户除了能稳定下载和使用微信外,还可以用到 QQ、腾讯视频、腾讯新闻、QQ 音乐等 App。
鹅厂黑板报中提到他们前端架构使用了 Flutter,然而,经过深入了解后我们发现,这一表述实际上存在细微的差别。据我们从业内专家处了解到,鹅厂所提及的 Flutter 应用并非在其主体产品中全面铺开,而是在其小程序渲染引擎的部分,这一发现与鹅
flutter sdk 3.7 升级到3.22 build hap 失败,重新create一个项目去buildhap也报错
flutter build hap
Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure you trust this source!
start hap build...
> hvigor ERROR: Unsupported modelVersion of Hvigor 5.1.0.
Detail: The supported Hvigor modelVersion is 5.0.2
> hvigor ERROR: BUILD FAILED in 3 s 391 ms
Running Hvigor task assembleHap... ⣯
Oops; flutter has exited unexpectedly: "ProcessException: The command failed with exit code 1
Command: hvigorw assembleHap -p product=default -p buildMode=release --no-daemon -p FLUTTER_TARGET=lib\main.dart -p
TARGET_PLATFORM=ohos-arm64 -p DART_OBFUSCATION=false -p TRACK_WIDGET_CREATION=true -p TREE_SHAKE_ICONS=true -p
PACKAGE_CONFIG=D:\dev\work_path\hms1\.dart_tool\package_config.json".
A crash report has been written to D:\dev\work_path\hms1\flutter_01.log
This crash may already be reported. Check GitHub for similar crashes.
https://github.com/flutter/flutter/issues?q=is%3Aissue+ProcessExceptio
HarmonyOS NEXT-Flutter混合开发之鸿蒙-代码实践
在 Flutter 三端分离模式下完成纯血鸿蒙混入的过程中,虽然官方文档提供了一定的指导,但实际操作中可能会遇到一些坑。以下是我在适配过程中的一些经验总结,供各位开发者参考 😄 如果有帮助点个赞。
在混入过程中是基于咸鱼团队 flutter_boost(这里不讨论和其他方案的差别) 和自定义 FlutterPlugin 实现的。
主要涉及内容:
- 环境搭建
- Flutter module 创建
- Futter 引入 flutter_boost
- Harmony 引入 flutter_boost
- Flutter 与鸿蒙侧通信
- Flutter 调用鸿蒙原生
环境搭建
准备支持鸿蒙的 Flutter 开发环境,flutter_fluter 仓库基于 Flutter SDK 对于OpenHarmony平台的兼容拓展,可支持 IDE 或者终端使用 Flutter Tools 指令编译和构建 OpenHarmony 应用程序。
不再赘述,上链接。
Flutter module 创建
创建 Fluter 项目
打包 Fluter 项目
Fluter 引入 flutter_boost
Harmony 引入 flutter_boost
这里使用的是 router + FlutterPage 方式展示 Flutter 界面, Navigation 后续再说吧~
a. 先打包 Fluter 项目,会生成三个产物
b. 在鸿蒙项目中,引入依赖
c. 初始化 flutter_boost
这里部分代码省略了 ~ pushNativeRoute pushFlutterRoute popRoute 具体实现还是参考官方仓库
d. Flutter容器与跳转
Flutter 与鸿蒙侧通信
Flutter 调用鸿蒙原生
定义 Flutter 插件
注册插件
使用 flutter_boost 开发 Flutter混合项目,在鸿蒙这边和混合 Web 组件进行混合开发很相似,搞定Flutter页面栈+鸿蒙页面栈跳转,搞定数据通信和原生调用,基本可以满足一般的开发,以上这里仅供参考哈~