Flutter OH 开发相关的指导、规范及资料,优先参考以下官方文档:
Google Flutter 官方文档:Flutter 核心开发指南与 API 参考。
Flutter OH 适配开发文档:Flutter 适配 OpenHarmony 的专属开发指导与示例工程。
Flutter Tools 指令已适配 Linux、macOS、Windows 三大主流操作系统,可按需选择。
| 工具名称 | 版本要求 | 下载地址 | 备注 |
|---|---|---|---|
| JDK | 17 | Oracle JDK17 下载页 | 必须使用17版本,低版本不兼容 |
| DevEco Studio / 命令行工具 | 最新版 | 华为开发者官网 | 二选一,推荐安装DevEco Studio(插件开发需依赖) |
克隆 OpenHarmony 适配版 Flutter 仓库的 oh-3.35.7-dev 分支(指定分支避免拉取错误版本):
# 克隆仓库并切换到指定分支
git clone -b oh-3.35.7-dev https://gitcode.com/openharmony-tpc/flutter_flutter.git 核心提示:所有路径需替换为本地实际安装路径,路径中禁止包含中文、空格或特殊字符,否则会导致环境识别失败。
编辑环境配置文件(优先选 ~/.zshrc,新版macOS默认使用zsh):
# bash终端:vim ~/.bash_profile;zsh终端:vim ~/.zshrc vim ~/.zshrc
在文件末尾添加以下配置(替换 <你的路径> 为实际值):
# ===== JDK 17 配置 =====
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
# ===== OpenHarmony 工具链配置 =====
# DevEco Studio 安装路径(macOS示例)
export TOOL_HOME=/Applications/DevEco-Studio.app/Contents
export DEVECO_SDK_HOME=$TOOL_HOME/sdk
export PATH=$TOOL_HOME/tools/ohpm/bin:$PATH
export PATH=$TOOL_HOME/tools/hvigor/bin:$PATH
export PATH=$TOOL_HOME/tools/node/bin:$PATH
# ===== Flutter 配置 =====
# PUB缓存目录(自定义,避免权限问题)
export PUB_CACHE=~/PUB
# Flutter SDK 路径(替换为克隆的flutter_flutter目录)
export PATH=/Users/你的用户名/flutter_flutter/bin:$PATH
# 国内镜像源(加速依赖下载)
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn 保存并生效配置:
# 按 Esc → 输入 :wq 保存退出vim source ~/.zshrc # 使配置立即生效 # 验证配置(可选) echo $JAVA_HOME # 应输出JDK17路径 flutter --version # 应识别到flutter命令
打开环境变量配置界面: 右键「此电脑」→「属性」→「高级系统设置」→「高级」→「环境变量」。
配置系统变量(新增/编辑,路径替换为实际值):
| 变量类别 | 变量名 | 变量值 | 操作说明 |
|---|---|---|---|
| 系统变量 | JAVA_HOME | C:\Program Files\Java\jdk-17 | 新增 |
| 系统变量 | TOOL_HOME | D:\DevEco-Studio | 新增(DevEco安装路径) |
| 系统变量 | DEVECO_SDK_HOME | %TOOL_HOME%\sdk | 新增 |
| 系统变量 | PUB_CACHE | D:\PUB | 新增(Flutter缓存目录) |
| 系统变量 | PUB_HOSTED_URL | https://pub.flutter-io.cn | 新增(国内镜像) |
| 系统变量 | FLUTTER_STORAGE_BASE_URL | https://storage.flutter-io.cn | 新增(国内镜像) |
| Path变量 | %JAVA_HOME%\bin | 追加到Path末尾 | 编辑Path,新增该行 |
| Path变量 | %TOOL_HOME%\tools\ohpm\bin | 追加到Path末尾 | 编辑Path,新增该行 |
| Path变量 | %TOOL_HOME%\tools\hvigor\bin | 追加到Path末尾 | 编辑Path,新增该行 |
| Path变量 | %TOOL_HOME%\tools\node\bin | 追加到Path末尾 | 编辑Path,新增该行 |
| Path变量 | D:\flutter_flutter\bin | 追加到Path末尾(Flutter SDK路径) | 编辑Path,新增该行 |
验证配置: 打开新的CMD/PowerShell窗口,执行以下命令,无报错则生效:
java -version # 显示jdk17版本 flutter --version # 识别flutter命令
# 详细检查环境配置(关键:Flutter和HarmonyOS toolchain需显示[√]) flutter doctor -v
提示:若出现
[!]警告,根据提示补全依赖(如缺失的SDK组件、权限问题等)。
# 1. 创建仅支持OHOS的工程(指定平台,避免冗余) flutter create --platforms ohos my_ohos_app # 2. 进入工程目录 cd my_ohos_app # 3. 编译HAP包(release版,指定arm64架构) # 基础版(使用默认engine) flutter build hap --target-platform ohos-arm64 --release # 自定义engine版(需提前构建engine) flutter build hap --target-platform ohos-arm64 --release --local-engine=src/out/ohos_release_arm64
编译产物路径:
<工程名>/ohos/entry/build/default/outputs/default/entry-default-signed.hap
Flutter OH 支持 Impeller-Vulkan 渲染模式(默认开启),可通过以下方式开关:
配置文件路径:ohos/entry/src/main/resources/rawfile/buildinfo.json5(首次build/run后生成,初始在profile目录)。
配置内容(修改value为true/false):
{
"string": [
{
"name": "enable_impeller",
"value": "true" // true=开启,false=关闭
}
]
} 提示:旧工程需手动创建该文件并放到指定路径,否则默认开启Impeller。
# 1. 查看已连接的OHOS设备 flutter devices # 2. 方式1:手动安装HAP包(替换deviceId和hap路径) hdc -t <deviceId> install <hap文件绝对路径> # 3. 方式2:直接运行(调试版,自动编译+安装+启动) flutter run --debug -d <device-id> # 自定义engine运行 flutter run --debug -d <device-id> --local-engine=src/out/ohos_debug_unopt_arm64
如需自定义构建 Flutter OH Engine,参考官方文档: Flutter OH Engine 构建指导
# 创建支持Android、iOS、OHOS的插件项目(指定组织名+插件名) flutter create --org com.nutpi --template=plugin --platforms=android,ios,ohos hello_plugin
工程结构说明:
lib/hello_plugin.dart:Dart 层插件 API 实现(对外暴露的接口);
android/src/main/:Android 平台原生实现(Kotlin/Java);
ios/Classes/:iOS 平台原生实现(Objective-C/Swift);
ohos/hello_plugin/src/main/ets/:OHOS 平台原生实现(ArkTS);
example/:插件使用示例工程(可直接运行验证插件功能)。
在插件根目录的 pubspec.yaml 中,补充 OHOS 平台配置(确保插件能被OHOS工程识别):
flutter: plugin: platforms: android: package: com.nutpi.hello_plugin pluginClass: HelloPlugin ios: pluginClass: HelloPlugin ohos: pluginClass: HelloPlugin # 与OHOS侧ArkTS实现类名一致 environment: sdk: ">=2.19.6 <3.0.0" flutter: ">=2.5.0" # 最低兼容版本
编辑 lib/hello_plugin.dart:定义 Dart 层对外暴露的 API(如方法、参数、回调);
编辑 OHOS 侧代码:在 ohos/hello_plugin/src/main/ets/components/plugin/HelloPlugin.ets 中实现 ArkTS 原生逻辑;
编译示例工程验证:
cd hello_plugin/example # 进入示例工程目录 flutter pub get # 下载依赖 flutter build hap --debug # 编译OHOS版HAP包
如需可视化调试 OHOS 原生代码,推荐使用 DevEco Studio:
启动 DevEco Studio,打开 hello_plugin/example/ohos 目录;
配置签名:File → Project Structure → Signing Configs → 勾选「Support HarmonyOS & Automatically generate signature」→ 登录华为开发者账号;
运行项目:选择 OHOS 设备/模拟器,点击运行按钮即可调试。
若已有 Flutter 插件未适配 OHOS,在插件根目录执行以下命令即可快速添加 OHOS 平台支持:
flutter create . --template=plugin --platforms=ohos
提示:执行后会自动生成 OHOS 平台的基础工程结构,只需补充 ArkTS 原生实现代码即可。
FFI(Foreign Function Interface)插件支持 Flutter 调用 C/C++ 代码,适配 OHOS 平台的创建命令:
# 创建仅支持OHOS的FFI插件 flutter create hello_ffi_plugin --template=plugin_ffi --platforms=ohos
适用场景:需要调用 C/C++ 底层库、高性能计算、硬件交互等场景。
| 指令 | 功能描述 | 典型使用示例 |
|---|---|---|
| flutter doctor | 环境检测 | flutter doctor -v(详细输出) |
| flutter create | 创建项目/插件 | 应用:flutter create --platforms ohos my_app 原生插件:flutter create --template=plugin --platforms=ohos hello_plugin FFI插件:flutter create --template=plugin_ffi --platforms=ohos hello_ffi |
| flutter devices | 查看已连接OHOS设备 | flutter devices |
| flutter build hap | 构建OHOS应用HAP包 | 调试版:flutter build hap --debug 正式版:flutter build hap --release |
| flutter run | 运行OHOS应用 | flutter run -d <device-id> --debug |
| flutter pub get | 下载项目/插件依赖 | flutter pub get |
| flutter clean | 清除项目缓存/依赖 | flutter clean |
| flutter screenshot | 设备截屏 | flutter screenshot |
备注:所有指令均适配 OpenHarmony 平台,仅新增
--platforms ohos/--target-platform ohos-arm64等 OH 专属参数。
环境配置失败:检查 JDK 版本是否为17、环境变量路径是否有中文/空格、Flutter SDK 分支是否正确;
插件编译报错:确保 DevEco Studio 已配置签名、OHOS SDK 版本与插件适配、pubspec.yaml 中平台配置完整;
运行应用失败:确认设备已连接(flutter devices 能识别)、HAP 包架构与设备匹配(arm64/arm32)。
环境配置核心:JDK 必须用17版本,环境变量路径无中文/空格,通过 flutter doctor -v 校验环境;
应用构建关键:使用 flutter build hap 编译 HAP 包,Impeller 渲染可通过 buildinfo.json5 开关;
插件开发要点:原生插件需配置 pubspec.yaml 平台信息,现有插件可通过 flutter create 快速添加 OHOS 支持,FFI 插件适用于跨语言调用场景。
原文作者:;如有侵权,请联系管理员删除。