HarmonyOS鸿蒙Next中ohos平台适配flutter三方库,其中第五项第2步中关于flutter.har不存在的问题可以怎么处理
HarmonyOS鸿蒙Next中ohos平台适配flutter三方库,其中第五项第2步中关于flutter.har不存在的问题可以怎么处理 [https://gitee.com/openharmony-sig/flutter_samples/blob/master/ohos/docs/07_plugin/ohos平台适配flutter三方库指导.md#2修改相关配置文件)
2、修改相关配置文件
1)在path_provider目录内的oh-package.json5添加libs/flutter.har 依赖:
{
"name": "path_provider",
"version": "1.0.0",
"description": "Please describe the basic information.",
"main": "Index.ets",
"author": "",
"license": "Apache-2.0",
"dependencies": {
"@ohos/flutter_ohos": "file:libs/flutter.har" //此处为添加的依赖
}
}
关于file:libs/flutter.har文件是从哪来的,在后续打har包时提示不存在。
以下截图为flutter doctor及当前机器环境配置:


更多关于HarmonyOS鸿蒙Next中ohos平台适配flutter三方库,其中第五项第2步中关于flutter.har不存在的问题可以怎么处理的实战教程也可以访问 https://www.itying.com/category-92-b0.html
方法B:直接配置依赖指向SDK里的har,不用复制文件
你不用把har文件复制到插件目录,直接在oh-package.json5 里写绝对路径或者相对路径,指向SDK里的har文件就行,比如:
"dependencies":{
"@ohos/flutter_ohos": "file:/Users/newstart/flutter_flutter/packages/flutter_ohos/ohos/har/flutter.har"
}
这样就不用手动复制文件,也不会出现"文件不存在"的问题。
3.检查并修正你的环境配置
从你的.zshrc配置看,有几个地方需要调,不然也会影响依赖解析:
- 你给鸿蒙版Flutter起了别名 fluoh,但你的 PATH 里还是优先走了FVM的Flutter,建议把别名调整清楚,避免命令混淆。
- 确保 ohpm 工具的路径已经正确加入PATH,你配置了 $TOOL_HOME/tools/ohpm/bin:$PATH,可以在终端执行 ohpm -v 验证一下是否能正常运行。
- 建议把 PUB_HOSTED_URL 和 FLUTTER_STORAGE_BASE_URL 换成国内镜像,避免依赖拉取失败:
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
4.额外的避坑操作
- 清理缓存:执行 flutter clean 和 ohpm clean,再重新执行 ohpm install。
- 检查插件目录结构:确保你的path_provider 插件的ohos目录结构正确,oh-package.json5 要放在 ohos/目录下,而不是插件根目录。
- 确认你的DevEco Studio和OpenHarmony SDK版本和Flutter适配版本匹配,比如你用的 1.0.5 适配版,对应的OpenHarmony API版本一般是API 10/11,别用太高的版本。
更多关于HarmonyOS鸿蒙Next中ohos平台适配flutter三方库,其中第五项第2步中关于flutter.har不存在的问题可以怎么处理的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
别名处理了flutter,常清缓存问题不大。问题出在创建插件的ohos模块后没有预先编译一下,导致后续引用flutter.har包时,IDE不能自动引用;
“第五项 编写ohos插件的原生ets模块,第3步删除entry以及其他多余目录”在做删除步骤之前最好能先把工程构建编译一下,或者是有个示例能让工程正常运行,这样在Android Studio 下
"dependencies": {
"[@ohos](/user/ohos)/flutter_ohos": "file:libs/flutter.har" //此处为添加的依赖
}
查看 @ohos/flutter_ohos 时可以查看到出处。最终指向这三个中的一个
/Users/newstart/flutter_flutter/bin/cache/artifacts/engine/ohos-arm64/ 或 ohos-arm64-release/或ohos-arm64-debug/ 文件夹下有个flutter.har文件,此时再拷贝出来或使用绝对路径。
我的flutter sdk没有flutter_ohos/这个目录。此前没有明白flutter.har文件的由来。
三、如果还是报错?
如果按上面的步骤配置完还是提示找不到,大概率是这两个问题:
-
路径写错了:比如相对路径 libs/flutter.har 是相对于 oh-package.json5 文件的位置,如果你在 ohos/ 目录下写 libs/flutter.har,那文件要放在 ohos/libs/ 里,别放错位置
-
SDK版本不匹配:你的Flutter适配版和OpenHarmony SDK版本不兼容,建议用官方推荐的对应版本,比如 3.27.5-ohos-1.0.5 搭配DevEco Studio 4.1+, OpenHarmony SDK 4.0.10.13,
一、先搞明白:flutter.har 到底是啥、从哪来?
你遇到的核心问题,其实是 oh-package.json5 里写了 @ohos/flutter_ohos: “file:libs/flutter.har” 这个依赖,但项目里根本没有这个文件,打包就报错了。
这个 flutter.har 不是你自己凭空生成的,它是 OpenHarmony 适配版 Flutter SDK 里,专门给 HarmonyOS/OpenHarmony 平台用的核心依赖包,作用是给 Flutter 三方库提供平台交互的基础 API 支持。
二、分步解决:从根源上让这个文件“存在”
1. 先确认你的 OpenHarmony Flutter SDK 是否完整
从你的 flutter doctor 输出看,你用的是 3.27.5-ohos-1.0.5 这个鸿蒙适配版的 Flutter,首先要确认这个 SDK 里有没有自带这个依赖:
打开你的 Flutter SDK 目录,路径是:/Users/newstart/flutter_flutter/packages/flutter_ohos/ohos/har/
看看里面有没有 flutter.har 这个文件
如果有,直接复制到你 path_provider 插件目录的 libs/ 文件夹里(没有就自己建个 libs 文件夹)
如果没有,说明你的适配版 Flutter SDK 是残缺的,这就是问题根源
2. 补全缺失的 flutter.har(两种方法)
方法A:从官方完整适配 SDK 里提取(最稳妥)
去官方适配仓库拉取完整的 Flutter SDK:
官方镜像地址:https://gitcode.com/openharmony-tpc/flutter_flutter.git
切换到你当前用的分支(比如 3.27.5-ohos-1.0.5),拉取完整代码
进入 packages/flutter_ohos/ohos/har/ 目录,就能找到 flutter.har
把这个文件复制到你的 path_provider/ohos/libs/ 目录下,再修改 oh-package.json5 里的路径,确保路径和文件实际位置对应。
flutter.har是打包生成的,建议每次编译前调试运行:
flutter clean && flutter pub get && flutter run
如果是打包发布的app包运行:
flutter clean && flutter clean && flutter build app --release
如果仍有报错,可到ohos目录下删除har文件夹后再运行上面的命令。
你好,flutter.har 是 Flutter OpenHarmony 嵌入层产物,要通过命令构建生成,不是手动新建文件。从你贴的 fluoh doctor 能看到两个问题,不改会一直出错:1.Currently on an unknown channel 修复:
fluoh channel master
fluoh upgrade
2.环境变量没生效 执行命令
source ~/.zshrc
fluoh doctor -v
在HarmonyOS Next中,flutter.har 缺失通常因未执行 flutter build har --target-platform ohos 生成,或产物路径未添加到模块依赖。请确认项目根目录下 build/har/ 是否存在该文件,若不存在则重新执行构建命令;若存在,检查 oh-package.json5 中 dependencies 是否正确引用相对路径。
flutter.har 是通过编译 Flutter 引擎或插件工程生成的 HarmonyOS 静态共享包,其常见来源与处理方法如下:
-
从 Flutter SDK 获取
- 进入 Flutter SDK 目录,路径类似
flutter/bin/cache/artifacts/engine/ohos/,在其中可找到预置的flutter.har(若存在)。将其复制到你的插件ohos/libs/目录下即可。
- 进入 Flutter SDK 目录,路径类似
-
通过命令编译生成
- 在插件的
ohos目录(即含有oh-package.json5的模块根目录)执行构建命令,例如:
或Build-Har
编译完成后会在hvigorw assembleHar --mode module -p product=default -p buildMode=releaseohos/build/default/outputs/default/下生成flutter.har,再手动复制到libs/。
- 在插件的
-
确保依赖正确配置
- 确认
oh-package.json5中的依赖路径与真实文件位置一致:"dependencies": { "@ohos/flutter_ohos": "file:libs/flutter.har" } - 同时检查根目录的
ohos/entry/oh-package.json5是否已正确引用该插件。
- 确认
若以上路径仍无法找到 flutter.har,请确认当前使用的 Flutter SDK 版本已完整支持 HarmonyOS,并已成功执行 flutter pub get 及环境初始化。

