Flutter 鸿蒙项目 Android Studio 点击 Run 失败 ohpm 缺失

背景

把 Flutter 项目接到鸿蒙(OpenHarmony)后,经常遇到一件怪事:

  • 命令行 flutter run 能秒装秒跑;
  • 回到 Android Studio,点绿色 ▶️ 却立刻报错,终端里要么提示找不到 ohpm,要么甩出 hvigor ERROR: 00303168 SDK component missing.

这篇文章把踩坑、定位、解决的全过程记录下来,按图索骥,五分钟就能搞定。


一、现象还原

  1. 设备已识别,flutter devices 能看到 33Z0224620023870 (ohos-arm64)。
  2. 命令行运行正常,桌面图标正常出现。
  3. Android Studio 的 Run 窗口几乎瞬间退出,两条错误轮流出现:
    • ProcessException: Failed to find "ohpm"
    • hvigor ERROR: 00303168 Configuration Error -- SDK component missing.

二、原因

报错 根因 为什么 CLI 能跑
找不到 ohpm Android Studio 启动的进程读不到 .bashrc / .zshrc 里的 PATH 你在终端里 export 过,命令行继承到了
SDK 组件缺失 DevEco Studio 的 HarmonyOS SDK 不完整 你之前用 ./hvigorw --sync 下载过,但 Android Studio 没同步到路径

三、解决步骤

1 把 ohpm 写进系统 PATH

Windows

  1. 复制路径:C:\Program Files\Huawei\DevEco Studio\tools\ohpm\bin
  2. Win + S → 编辑系统环境变量 → 系统变量 → Path → 新建 → 粘贴 → 确定
  3. 打开新的 PowerShell,输入 ohpm -v,看到版本号即可

macOS / Linux

bash 复制代码
# 默认路径,按实际安装位置调整
sudo sh -c 'echo "/Applications/DevEco-Studio.app/Contents/tools/ohpm/bin" > /etc/paths.d/devstudio'
exec $SHELL
ohpm -v
2 补全 HarmonyOS SDK

图形界面(最稳)

  1. 打开 DevEco Studio → Tools → SDK Manager → HarmonyOS
  2. 勾选对应 API 版本(例如 API 9)+ hvigor + ohpm + toolchains → Apply
  3. 下载完重启 Android Studio

命令行(无界面场景)

bash 复制代码
./hvigorw --sync --no-daemon      # macOS / Linux
hvigorw.bat --sync --no-daemon    # Windows
3 校验环境变量

MAC电脑可以直接拷贝:

bash 复制代码
# 国内镜像
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

# 拉取下来的flutter_flutter/bin目录
export PATH=/Users/admin/ohos/flutter_flutter/bin:$PATH

# OpenHarmony SDK
export TOOL_HOME=/Applications/DevEco-Studio.app/Contents # mac环境
export DEVECO_SDK_HOME=$TOOL_HOME/sdk # command-line-tools/sdk
export PATH=$TOOL_HOME/tools/ohpm/bin:$PATH # command-line-tools/ohpm/bin
export PATH=$TOOL_HOME/tools/hvigor/bin:$PATH # command-line-tools/hvigor/bin
export PATH=$TOOL_HOME/tools/node/bin:$PATH # command-line-tools/tool/node/bin
export HDC_HOME=$TOOL_HOME/sdk/default/openharmony/toolchains # hdc指令(可选)

# 可选配置项(使用Android Studio 或者 Visual Studio Code调试时需要配置此项,jdk版本为17.0.12)
JAVA_HOME=/Users/admin/Documents/JDK/jdk-17.0.12.jdk/Contents/Home
PATH=$JAVA_HOME/bin:$PATH:.
export JAVA_HOME
export PATH

# 可选配置项(防止由于Flutter OpenHarmony版的git下载地址环境变量不匹配,影响后续的flutter项目创建)
export FLUTTER_GIT_URL=https://gitee.com/openharmony-sig/flutter_flutter.git

# 非必选配置项(若command-line-tools目录下的tool文件里存在node环境,则无需配置,若无则可进行如下单独配置)
# export NODE_HOME=/Users/admin/node/node-18.14.1
# export PATH=$PATH:$NODE_HOME/bin
4 验证
bash 复制代码
hvigorw --version
# 正常输出版本号即环境 OK

回到 Android Studio 点 Run,hap 编译一路绿色,真机秒开。


四、常见疑问

Q1 : 我在 .zshrc 里 export 过 PATH,为什么还是找不到?
A : macOS 的 GUI 程序不读 shell rc,必须写 /etc/paths.d/* 或 /etc/environment。

Q2 : DevEco Studio 下载 SDK 时提示网络失败?
A : 配个国内镜像,Settings → HTTP Proxy 填 mirrors.huaweicloud.com。

Q3 : 项目里 local.properties 多了一行 harmonyos.sdk 指向错误路径?
A: 直接删掉,让 hvigor 用 DevEco 安装目录下的 SDK。


五、一句话总结

CLI 能跑不代表 IDE 能跑,PATH 和 SDK 必须系统级可见;两步补齐,Android Studio 的 ▶️ 就能和 flutter run 一样丝滑。


六、参考链接

如果本文帮到了你,点个赞或转给还在踩坑的同伴吧!

相关推荐
李游Leo4 小时前
HarmonyOS 7 DualCart 平行视界适配实录 04:EasyGo × 虚拟容器:商品比价双详情与分栏比例策略【鸿蒙心迹】
华为·harmonyos
李游Leo5 小时前
HarmonyOS 7 PixelBridge 原生库适配实录 06:Release 性能基线、资源释放、包体积与工程化验收【鸿蒙心迹】
华为·harmonyos
传奇开心果编程5 小时前
【ArkUI进阶练中学】第11课:安全与合规进阶
学习·ui·华为·harmonyos
熊猫钓鱼>_>6 小时前
Kotlin Multiplatform for OpenHarmony 实战:为 Reaktive 实现响应式原语适配(完整版 · 含摘要目录与技术图表)
华为·kotlin·大模型·ai编程·harmonyos·适配·reaktive
李游Leo10 小时前
HarmonyOS 7 + Spatial Recon Kit-C++:3DGS 高斯参数的非有限值隔离与可渲染性门禁【鸿蒙心迹】
开发语言·c++·3d·harmonyos
传奇开心果编程10 小时前
【ArkUI进阶练中学】第12课:应用架构演进与遗留系统迁移
学习·ui·华为·harmonyos
传奇开心果编程12 小时前
【ArkUI进阶练中学】第13课:元服务与卡片开发
学习·ui·华为·harmonyos
李游Leo13 小时前
HarmonyOS 7 InsightBoard 多形态适配实录 06:ArkUI × 多设备回归:布局抖动、监听释放与全形态验收【鸿蒙心迹】
回归·kotlin·harmonyos
李游Leo13 小时前
HarmonyOS 7 PixelBridge 原生库适配实录 04:Native Buffer Pool、批任务背压与取消链路【鸿蒙心迹】
华为·harmonyos