Flutter 与 DevEco Studio 混合开发技术规范与实战指南大纲
背景与需求分析
- 跨平台开发趋势与 Flutter 的优势
- HarmonyOS 生态与 DevEco Studio 的特点
- 混合开发的必要性及适用场景
环境配置与工具集成
- Flutter SDK 安装与配置
- DevEco Studio 安装与 HarmonyOS 开发环境搭建
- 混合项目工程结构设计
Flutter 模块开发规范
- Widget 开发与状态管理最佳实践
- 平台相关代码分离(Platform Channels)
- 性能优化与资源管理
DevEco Studio 集成 Flutter 模块
- 原生工程引入 Flutter Module 的方法
- 调试与热重载配置
- 依赖管理与版本兼容性处理
通信机制与数据交互
- MethodChannel 实现 Flutter 与 HarmonyOS 通信
- EventChannel 用于持续数据流交互
- 复杂数据类型(如 JSON、二进制)的传递规范
性能优化与问题排查
- 混合开发中的常见性能瓶颈分析
- 内存泄漏检测与解决
- 日志收集与异常监控
实战案例:电商应用混合开发
- Flutter 实现商品列表与购物车
- DevEco Studio 处理支付与本地服务
- 混合导航与页面跳转方案
测试与发布
- 单元测试与集成测试策略
- 多设备兼容性测试方案
- 应用打包与上架流程
未来展望
- Flutter 与 HarmonyOS 的生态融合趋势
- 新技术(如 ArkUI)对混合开发的影响

1 文档概述
1.1 文档目的
本文档明确 Flutter 与 DevEco Studio 混合开发的技术规范、分工边界、实现流程及质量保障要求,为跨端应用开发团队提供标准化指导,确保开发过程高效、可复用、可维护。
1.2 适用范围
适用于基于 Flutter 跨端框架与 HarmonyOS 原生开发平台的混合应用开发,覆盖需求分析、架构设计、开发实现、测试联调、打包发布全流程,尤其适用于需调用 HarmonyOS 原生能力的跨端项目。
1.3 技术栈版本
| 技术栈 | 版本要求 | 备注 |
|---|---|---|
| Flutter SDK | 3.16.0 及以上 | 需开启鸿蒙适配配置 |
| DevEco Studio | 4.1.0.600 及以上 | 需安装 Flutter 兼容插件 |
| HarmonyOS SDK | API Version 9 及以上 | 采用 Stage 模型开发 |
| Dart | 3.2.0 及以上 | 匹配 Flutter 版本依赖 |
| ArkTS | 4.0 及以上 | 遵循 HarmonyOS 开发规范 |
2 核心架构与分工规范
2.1 架构设计原则
-
职责单一原则:Flutter 聚焦跨端通用能力,DevEco Studio 专注 HarmonyOS 原生特性,避免功能重叠。
-
通信解耦原则:通过标准化通信通道实现跨端交互,禁止直接操作对方内存或私有API。
-
一致性原则:跨端页面的视觉风格、交互逻辑需保持统一,原生模块需适配跨端设计规范。
-
可扩展原则:通信接口、模块命名需预留扩展空间,支持后续功能迭代。
2.2 模块分工边界
| 模块类型 | Flutter 负责范围 | DevEco Studio 负责范围 | 协作方式 |
|---|---|---|---|
| UI 层 | 跨端通用页面(列表、详情、表单等)、通用组件库 | HarmonyOS 专属页面(原子化服务、服务卡片)、原生组件 | 统一设计规范,通过路由跳转衔接 |
| 业务层 | 跨端业务逻辑(登录、支付流程、数据展示)、状态管理 | 原生业务逻辑(分布式数据同步、设备联动、原子化发布) | 通过标准化接口交互业务数据 |
| 能力层 | 网络请求、本地存储(跨端兼容)、第三方SDK集成 | 鸿蒙原生能力(支付、推送、生物识别、分布式能力) | 封装原生能力为接口供 Flutter 调用 |
| 通信层 | 跨端通信客户端封装、参数序列化 | 原生通信服务端封装、接口注册 | 基于 MethodChannel 标准化通信协议 |
2.3 命名与编码规范
2.3.1 通用命名规范
| 元素类型 | Flutter(Dart)规范 | DevEco Studio(ArkTS)规范 | 统一要求 |
|---|---|---|---|
| 项目包名 | com.company.business.module | com.company.business.module | 两端必须完全一致,采用反向域名格式 |
| 类名 | 大驼峰命名(如 GoodsDetailPage) | 大驼峰命名(如 AtomicGoodsPage) | 包含业务语义,避免模糊命名 |
| 方法名 | 小驼峰命名(如 openAtomicService) | 小驼峰命名(如 sendPayResult) | 动词开头,明确功能(如 getXX、setXX) |
| 通信通道名 | com.company.business.channel | com.company.business.channel | 包含包名前缀,避免冲突 |
2.3.2 代码格式规范
-
代码缩进:统一采用 4 个空格缩进,禁止使用制表符(Tab)。
-
代码注释:类、方法需添加文档注释(/// 格式),复杂逻辑需添加行内注释。
-
文件拆分:单个文件代码量不超过 500 行,按功能模块拆分文件。
-
依赖管理:Flutter 依赖在 pubspec.yaml 声明,HarmonyOS 依赖在 build.gradle 声明,需指定具体版本号。
3 环境搭建规范
3.1 基础环境配置
3.1.1 系统环境要求
| 环境类型 | Windows 10/11 | macOS 12+ |
|---|---|---|
| CPU | Intel i5 及以上/AMD Ryzen 5 及以上 | Apple Silicon M1 及以上/Intel i5 及以上 |
| 内存 | 8GB 及以上(推荐 16GB) | 8GB 及以上(推荐 16GB) |
| 磁盘空间 | 100GB 及以上空闲空间 | 100GB 及以上空闲空间 |
| 开发工具 | Android Studio 2022+、VS Code 1.80+ | Android Studio 2022+、VS Code 1.80+、Xcode 14+(iOS 开发) |
3.1.2 Flutter 环境配置步骤
-
下载 SDK:从 Flutter 官网下载稳定版 SDK,解压至无中文路径(如 D:\flutter)。
-
配置环境变量: Windows:在用户变量 PATH 中添加 D:\flutter\bin。
-
macOS:执行
echo 'export PATH="$PATH:/Users/用户名/flutter/bin"' >> ~/.zshrc,并执行source ~/.zshrc。 -
开启鸿蒙适配 :终端执行
flutter config --enable-harmonyos。 -
环境验证 :执行
flutter doctor,确保 Flutter、Android toolchain、HarmonyOS 三项无错误。
3.1.3 DevEco Studio 环境配置步骤
-
安装工具:从华为开发者官网下载 DevEco Studio 4.1+,按向导完成安装。
-
配置 SDK:打开 DevEco Studio,通过 SDK Manager 安装 HarmonyOS SDK API 9+ 及 Flutter 兼容插件。
-
环境验证:新建 HarmonyOS Stage 模型项目,确保能正常编译运行。
3.2 项目初始化规范
3.2.1 Flutter 项目创建
// 1. 终端执行创建命令,指定包名与项目名
flutter create --org com.example.shop --project-name flutter_shop_demo flutter_shop_demo
// 2. 进入项目目录
cd flutter_shop_demo
// 3. 添加鸿蒙编译依赖
flutter pub add flutter_harmony
// 4. 验证项目
flutter run --harmonyos
3.2.2 混合项目关联
-
在 DevEco Studio 中创建 HarmonyOS 项目,包名与 Flutter 项目一致(com.example.shop)。
-
右键项目根目录 → New → Module → 选择 Flutter Module,关联已创建的 Flutter 项目路径。
-
配置 DevEco 项目 build.gradle,添加 Flutter 模块依赖:
dependencies { `` implementation project(':flutter') `` implementation 'com.huawei.flutter:flutter_runtime:1.0.0' ``} -
同步项目依赖,确保无依赖冲突。
4 跨端通信规范
4.1 通信方案选型
采用 Flutter 官方提供的 MethodChannel 实现双向通信,适用于同步/异步接口调用,支持基础数据类型与复杂 Map 数据传递。通信流程如下:
-
Flutter 端创建 MethodChannel 实例,指定唯一通道名。
-
DevEco 端注册相同通道名的 MethodChannel,监听 Flutter 调用。
-
通过 invokeMethod 发起调用,通过 setMethodCallHandler 接收回调。
4.2 通信接口设计规范
4.2.1 接口定义原则
-
接口命名格式:[业务模块]_[功能描述],如 goods_openAtomicService。
-
参数格式:统一采用 Map<String, dynamic>,键名使用小驼峰,明确参数类型与是否必填。
-
返回值:基础类型直接返回,复杂结果封装为 Map,包含 code(状态码)、data(数据)、msg(消息)。
-
异常处理:统一返回错误码,Flutter 端通过 PlatformException 捕获,DevEco 端通过 try-catch 处理。
4.2.2 通信工具类实现
4.2.2.1 Flutter 端通信工具类
// lib/utils/harmony_channel.dart
import 'package:flutter/services.dart';
/// 鸿蒙跨端通信工具类
/// 通道名:com.example.shop/goods_channel
class HarmonyGoodsChannel {
// 通信通道实例
static const MethodChannel _channel = MethodChannel('com.example.shop/goods_channel');
/// 调用鸿蒙原子化商品服务
/// [goodsId]:商品ID(必填)
/// 返回值:true-调用成功,false-调用失败
static Future<Map<String, dynamic>> openAtomicGoodsService(String goodsId) async {
try {
final result = await _channel.invokeMethod<Map<String, dynamic>>(
'goods_openAtomicService',
{'goodsId': goodsId},
);
return result ?? {'code': -1, 'msg': '返回结果为空', 'data': false};
} on PlatformException catch (e) {
return {'code': e.code, 'msg': e.message ?? '调用异常', 'data': false};
}
}
/// 监听鸿蒙支付结果回调
/// [callback]:支付结果处理回调
static void listenPayResult(void Function(Map<String, dynamic>) callback) {
_channel.setMethodCallHandler((call) async {
if (call.method == 'goods_onPayResult') {
callback(call.arguments as Map<String, dynamic>);
}
});
}
}
4.2.2.2 DevEco 端通信工具类
// src/main/ets/utils/FlutterGoodsChannel.ets
import { MethodChannel } from '@ohos.flutter';
import router from '@ohos.router';
/// Flutter 商品模块通信工具类
/// 通道名:com.example.shop/goods_channel
export class FlutterGoodsChannel {
private static channel: MethodChannel;
/// 初始化通信通道
static init(): void {
this.channel = new MethodChannel('com.example.shop/goods_channel');
this.registerMethods();
}
/// 注册 Flutter 调用接口
private static registerMethods(): void {
// 响应打开原子化商品服务请求
this.channel.registerMethod('goods_openAtomicService', (params: Map<string, string>) => {
const goodsId = params['goodsId'];
if (!goodsId) {
return { code: 400, msg: '商品ID为空', data: false };
}
// 跳转到原子化商品页面
router.pushUrl({
url: 'pages/AtomicGoodsPage',
params: { goodsId: goodsId }
});
return { code: 200, msg: '调用成功', data: true };
});
}
/// 向 Flutter 发送支付结果
/// [isSuccess]:支付状态
/// [orderId]:订单ID
/// [goodsId]:商品ID
static sendPayResult(isSuccess: boolean, orderId: string, goodsId: string): void {
this.channel.invokeMethod('goods_onPayResult', {
'code': isSuccess ? 200 : 500,
'msg': isSuccess ? '支付成功' : '支付失败',
'data': {
'orderId': orderId,
'goodsId': goodsId,
'payStatus': isSuccess ? 'success' : 'fail',
'payTime': new Date().toISOString()
}
});
}
}
4.2.3 通信初始化规范
DevEco 端需在应用启动时初始化通信通道,确保 Flutter 调用前通道已就绪:
// src/main/ets/ability/MainAbility.ets
import Ability from '@ohos.application.Ability';
import { FlutterGoodsChannel } from '../utils/FlutterGoodsChannel';
export default class MainAbility extends Ability {
onCreate(want, launchParam): void {
super.onCreate(want, launchParam);
// 初始化 Flutter 通信通道
FlutterGoodsChannel.init();
}
}
5 实战开发规范
5.1 功能模块实现案例
5.1.1 需求描述
实现电商商品详情功能:Flutter 开发跨端商品详情页,支持加入购物车;点击"鸿蒙原子化购买"按钮跳转至 DevEco 开发的原生页面完成支付,支付结果同步至 Flutter 端。
5.1.2 Flutter 端商品详情页实现
// lib/pages/goods_detail_page.dart
import 'package:flutter/material.dart';
import '../utils/harmony_channel.dart';
/// 商品详情页(跨端通用)
/// [goodsId]:商品ID
/// [goodsName]:商品名称
/// [price]:商品价格
class GoodsDetailPage extends StatefulWidget {
final String goodsId;
final String goodsName;
final double price;
const GoodsDetailPage({
super.key,
required this.goodsId,
required this.goodsName,
required this.price,
});
@override
State<GoodsDetailPage> createState() => _GoodsDetailPageState();
}
class _GoodsDetailPageState extends State<GoodsDetailPage> {
// 支付结果状态
Map<String, dynamic> _payResult = {'code': -1};
@override
void initState() {
super.initState();
// 监听鸿蒙支付结果
HarmonyGoodsChannel.listenPayResult((result) {
setState(() {
_payResult = result;
});
// 显示支付结果提示
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(result['msg']),
backgroundColor: result['code'] == 200 ? Colors.green : Colors.red,
),
);
});
}
// 打开鸿蒙原子化服务
void _handleOpenAtomicService() async {
final result = await HarmonyGoodsChannel.openAtomicGoodsService(widget.goodsId);
if (result['code'] != 200) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('原子化服务启动失败:${result['msg']}')),
);
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text(widget.goodsName)),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
// 商品基础信息
_buildGoodsInfo(),
const SizedBox(height: 24),
// 操作按钮
_buildOperationButtons(),
const SizedBox(height: 24),
// 支付结果展示
if (_payResult['code'] != -1) _buildPayResultView(),
],
),
),
);
}
/// 构建商品信息视图
Widget _buildGoodsInfo() {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('商品ID:${widget.goodsId}', style: const TextStyle(fontSize: 14, color: Colors.grey)),
const SizedBox(height: 8),
Text('售价:¥${widget.price.toStringAsFixed(2)}',
style: const TextStyle(fontSize: 22, color: Color(0xFFFF4400))
),
],
);
}
/// 构建操作按钮视图
Widget _buildOperationButtons() {
return Row(
children: [
// 跨端通用按钮:加入购物车
Expanded(
child: ElevatedButton(
onPressed: () => _handleAddToCart(),
style: ElevatedButton.styleFrom(backgroundColor: Colors.blue),
child: const Text('加入购物车'),
),
),
const SizedBox(width: 12),
// 鸿蒙原生按钮:原子化购买
Expanded(
child: ElevatedButton(
onPressed: _handleOpenAtomicService,
style: ElevatedButton.styleFrom(backgroundColor: Colors.orange),
child: const Text('鸿蒙原子化购买'),
),
),
],
);
}
/// 构建支付结果视图
Widget _buildPayResultView() {
if (_payResult['code'] != 200) return const SizedBox.shrink();
final data = _payResult['data'] as Map<String, dynamic>;
return Card(
elevation: 2,
child: Padding(
padding: const EdgeInsets.all(12.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text('支付成功', style: TextStyle(color: Colors.green, fontSize: 16)),
Text('订单ID:${data['orderId']}'),
Text('支付时间:${data['payTime']}'),
],
),
),
);
}
/// 加入购物车处理逻辑
void _handleAddToCart() {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('商品已加入购物车')),
);
}
}
5.1.3 DevEco 端原子化商品页实现
// src/main/ets/pages/AtomicGoodsPage.ets
import router from '@ohos.router';
import { FlutterGoodsChannel } from '../utils/FlutterGoodsChannel';
import promptAction from '@ohos.promptAction';
/// 原子化商品购买页(HarmonyOS 原生)
@Entry
@Component
struct AtomicGoodsPage {
// 商品信息状态
@State goodsInfo: {
goodsId: string,
goodsName: string,
price: number,
stock: number
} = {
goodsId: '',
goodsName: '加载中...',
price: 0,
stock: 0
};
// 页面初始化:获取商品ID并加载详情
aboutToAppear(): void {
this.getGoodsParam();
}
/// 获取Flutter传递的商品参数
getGoodsParam(): void {
const params = router.getParams() as Record<string, string>;
const goodsId = params.goodsId ?? '';
if (goodsId.isEmpty) {
promptAction.showToast({ message: '商品参数错误' });
router.back();
return;
}
this.goodsInfo.goodsId = goodsId;
// 模拟从鸿蒙分布式数据库加载商品详情
this.loadGoodsDetail();
}
/// 加载商品详情(模拟分布式数据查询)
loadGoodsDetail(): void {
// 实际场景需调用鸿蒙分布式数据管理API
setTimeout(() => {
this.goodsInfo = {
goodsId: this.goodsInfo.goodsId,
goodsName: '鸿蒙定制版 - 智能手环',
price: 299.0,
stock: 50
};
}, 800);
}
/// 模拟鸿蒙原生支付
handlePay(): void {
promptAction.showToast({ message: '正在发起支付...' });
// 实际场景需集成鸿蒙支付SDK
setTimeout(() => {
const orderId = 'OH_' + Date.now().toString();
// 向Flutter发送支付成功结果
FlutterGoodsChannel.sendPayResult(
true,
orderId,
this.goodsInfo.goodsId
);
// 返回Flutter页面
router.back();
}, 1500);
}
build() {
Column({ space: 24 }) {
// 页面标题
Text('鸿蒙原子化购买')
.fontSize(24)
.fontWeight(FontWeight.Bold)
.textAlign(TextAlign.Center)
.width('100%');
// 商品信息卡片
Card() {
Column({ space: 16 }) {
Text(`商品名称:${this.goodsInfo.goodsName}`)
.fontSize(18);
Text(`商品价格:¥${this.goodsInfo.price.toFixed(2)}`)
.fontSize(20)
.fontColor(Color.Red);
Text(`库存数量:${this.goodsInfo.stock}件`)
.fontSize(14)
.fontColor(Color.Grey);
}
.padding(20)
.width('100%');
}
// 操作按钮
Column({ space: 12 }) {
Button('立即支付')
.type(ButtonType.Capsule)
.backgroundColor(Color.Orange)
.width('100%')
.height(48)
.onClick(() => this.handlePay());
Button('返回商品详情')
.type(ButtonType.Capsule)
.backgroundColor(Color.Grey)
.width('100%')
.height(48)
.onClick(() => router.back());
}
}
.padding(20)
.width('100%')
.height('100%')
.backgroundColor(Color.Background);
}
}
5.2 路由与跳转规范
5.2.1 路由管理原则
-
Flutter 端负责跨端路由管理,使用 Navigator 组件;DevEco 端负责原生路由管理,使用 router 模块。
-
跨端跳转需通过通信通道发起请求,禁止直接操作对方路由栈。
-
跳转参数需序列化传递,支持 String、int、bool、Map 类型,禁止传递复杂对象。
5.2.2 跳转实现规范
-
Flutter → DevEco 跳转:Flutter 调用通信接口,DevEco 端接收后通过 router.pushUrl 跳转。
-
DevEco → Flutter 跳转:DevEco 调用通信接口,Flutter 端接收后通过 Navigator.push 跳转。
-
返回操作:均使用各自平台的返回 API(Flutter 用 Navigator.pop,DevEco 用 router.back)。
6 测试与联调规范
6.1 测试分类与要求
| 测试类型 | 测试内容 | 测试工具 | 验收标准 |
|---|---|---|---|
| 单元测试 | 通信工具类、业务逻辑方法 | Flutter Test、DevEco Unit Test | 覆盖率 ≥ 80%,无断言失败 |
| 集成测试 | 跨端通信、路由跳转、数据传递 | Flutter Integration Test、DevEco UI Test | 通信成功率 100%,跳转无异常 |
| 兼容性测试 | 不同鸿蒙版本、设备型号适配 | 华为开发者联盟测试云、真机 | 支持鸿蒙 3.0+ 所有主流机型 |
| 性能测试 | 页面加载时间、通信响应时间 | DevEco Performance Profiler | 页面加载 ≤ 300ms,通信响应 ≤ 100ms |
6.2 联调流程规范
-
环境准备:确保 Flutter 与 DevEco 项目依赖一致,连接相同网络的测试设备或模拟器。
-
日志配置:两端均开启详细日志输出,Flutter 用 print 或 debugPrint,DevEco 用 console.log。
-
分步联调: 第一步:验证通信通道连接,确保基础调用正常。
-
第二步:验证参数传递,确保复杂 Map 数据解析正确。
-
第三步:验证业务流程,确保端到端功能闭环。
-
问题定位:通过日志匹配通信请求与响应,定位问题发生端(Flutter 或 DevEco),按模块拆分排查。
6.3 常见问题处理规范
| 问题现象 | 可能原因 | 处理步骤 |
|---|---|---|
| 通信无响应 | 通道名不一致、未初始化、权限问题 | 1. 核对两端通道名;2. 检查 init 调用时机;3. 验证鸿蒙应用权限 |
| 参数解析错误 | 参数类型不匹配、键名错误、空值未处理 | 1. 统一参数类型定义;2. 核对键名拼写;3. 增加空值判断逻辑 |
| 页面跳转失败 | 页面未注册、路径错误、参数格式错误 | 1. 检查 main_pages.json 注册;2. 核对页面路径;3. 验证参数序列化格式 |
| 性能卡顿 | UI 线程阻塞、通信频繁、数据量过大 | 1. 异步处理耗时操作;2. 合并通信请求;3. 压缩传递数据量 |
7 打包与发布规范
7.1 版本管理规范
两端版本需保持统一,遵循语义化版本规范(X.Y.Z),X为主版本号,Y为功能版本号,Z为修复版本号。版本配置位置如下:
| 平台 | 版本号配置文件 | 配置项 |
|---|---|---|
| Flutter(Android) | android/app/build.gradle | versionName="1.0.0",versionCode=1 |
| Flutter(iOS) | ios/Runner/Info.plist | CFBundleShortVersionString="1.0.0",CFBundleVersion="1" |
| HarmonyOS | build.gradle(模块级) | versionName="1.0.0",versionCode=1 |
7.2 打包流程规范
7.2.1 Flutter 端打包
// 1. 清理项目缓存
flutter clean
// 2. 编译鸿蒙版本(生成HAP包)
flutter build harmonyos --release
// 3. 编译Android版本(生成APK/AAB包)
flutter build appbundle --release
// 4. 编译iOS版本(需Mac环境)
flutter build ios --release
7.2.2 DevEco 端打包
-
打开 DevEco Studio,配置签名文件(需在华为开发者联盟申请)。
-
点击 Build → Build HAP(s)/APP(s) → Build APP(s),选择签名文件。
-
打包完成后,在 build/app/outputs/ark 目录获取 APP 包。
7.3 发布规范
-
华为应用市场:提交 DevEco 打包的 APP 包,需符合华为应用市场审核规范,提供原子化服务配置信息。
-
Android 应用市场:提交 Flutter 打包的 AAB/APK 包,按各市场要求完成审核。
-
发布文档:提供版本更新日志,明确跨端功能差异与原生能力说明。
8 维护与迭代规范
8.1 代码维护规范
-
采用 Git 版本控制,按功能模块分支开发(feature/xxx),通过 Merge Request 合并代码。
-
代码提交需包含清晰注释,格式为"[模块] 功能描述",如"[goods] 新增原子化支付接口"。
-
定期清理冗余代码,每季度进行一次代码重构,优化通信逻辑与性能。
8.2 迭代开发规范
-
需求拆分:按"跨端通用功能"与"原生专属功能"拆分需求,明确开发责任方。
-
接口定义:新增跨端交互前,需先定义通信接口规范,两端同步确认。
-
并行开发:两端可并行开发,通过接口文档对齐,联调阶段集中解决交互问题。
-
回归测试:迭代时需回归跨端通信功能,避免新增功能影响原有交互。
9 附录
9.1 参考资料
-
Flutter 官方文档:https://flutter.dev/docs
-
HarmonyOS 官方文档:https://developer.harmonyos.com/cn/docs
-
Flutter 与 HarmonyOS 混合开发指南:https://developer.huawei.com/cn/consumer/cn/doc
9.2 术语表
| 术语 | 英文 | 定义 |
|---|---|---|
| 跨端通信 | Cross-end Communication | Flutter 与 HarmonyOS 原生模块之间的数据交互机制 |
| 原子化服务 | Atomic Service | HarmonyOS 特有的轻量级服务形态,无需安装即可使用 |
| MethodChannel | MethodChannel | Flutter 提供的跨平台通信通道,用于方法调用 |
| Stage 模型 | Stage Model | HarmonyOS 应用开发的新模型,基于 Ability Stage 组件化开发 |
大家后续在文章开头里加上这句话,已经发表的文章有条件的也可以补充一下:
欢迎大家加入[开源鸿蒙跨平台开发者社区](https://openharmonycrossplatform.csdn.net),一起共建开源鸿蒙跨平台生态。