Windows11-OpenHarmony-Flutter搭建及常见问题与反馈建议
Windows 11 搭建 OpenHarmony 版 Flutter 开发环境实战指南
作者根据实际搭建经验,总结从零开始搭建 OpenHarmony 版 Flutter 开发环境的完整过程,重点记录遇到的坑点和解决方案,帮助开发者少走弯路。
一、环境搭建简要流程
1.1 前置条件
在开始之前,需要确保已安装以下软件:
| 软件 | 版本要求 | 用途 |
|---|---|---|
| Windows 11 | 任意版本 | 操作系统 |
| Visual Studio Code | 最新版 | 代码编辑器 |
| Git | 最新版 | 版本控制 |
| DevEco Studio | 最新版 | HarmonyOS开发IDE |
| Java 17 | LTS版本 | Java运行环境 |
| Android Studio | 最新版 | Android SDK |
1.2 环境变量配置
关键环境变量清单:
# DevEco Studio 相关
TOOL_HOME=C:\Tools\Huawei\DevEco Studio
DEVECO_SDK_HOME=%TOOL_HOME%\sdk
HDC_HOME=%DEVECO_SDK_HOME%\default\openharmony\toolchains
# Flutter 相关
PUB_CACHE=C:\PUB
PUB_HOSTED_URL=https://pub.flutter-io.cn
FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
# PATH 添加
%TOOL_HOME%\tools\ohpm\bin
%TOOL_HOME%\tools\hvigor\bin
%TOOL_HOME%\tools\node
C:\Tools\flutter_flutter\bin
1.3 克隆源码
# 克隆 OpenHarmony 版 Flutter
git clone https://gitcode.com/openharmony-tpc/flutter_flutter.git
cd flutter_flutter
# 查看可用分支
git branch -a
# 切换到开发分支(以 oh-3.32.4-dev 为例)
git checkout -b oh-3.32.4-dev origin/oh-3.32.4-dev
1.4 创建项目
# 创建仅 OpenHarmony 平台项目
flutter create --platforms ohos my_harmony_app
# 或创建多平台项目
flutter create my_cross_platform_app
# 编译 HAP 包
cd my_harmony_app
flutter build hap --debug
二、常见问题及解决方案(重点)
在搭建过程中,我遇到了不少坑,下面详细记录问题和解决方法。
问题 1:flutter doctor 显示 Unable to locate Android SDK
现象:
Unable to locate Android SDK.
原因分析:
系统找不到 Android SDK 的安装路径。
解决方案:
- 确认 Android Studio 已安装并下载了 SDK
- 打开 Android Studio → File → Settings → Languages & Frameworks → Android SDK
- 记录 SDK 路径,通常为:
C:\Users\你的用户名\AppData\Local\Android\Sdk - 配置环境变量:
| 变量名 | 变量值 |
|---|---|
| ANDROID_HOME | C:\Users\你的用户名\AppData\Local\Android\Sdk |
- 在 PATH 中添加:
%ANDROID_HOME%\platform-tools %ANDROID_HOME%\tools
问题 2:cmdline-tools component is missing
现象:
cmdline-tools component is missing
原因分析:
Android SDK 命令行工具未安装。
解决方案:
- 打开 Android Studio
- 进入 File → Settings → Languages & Frameworks → Android SDK
- 切换到 SDK Tools 页签
- 勾选 Android SDK Command-line Tools (latest)
- 点击 OK 或 Apply 进行下载安装
问题 3:Some Android licenses not accepted
现象:
Some Android licenses not accepted.
解决方案:
在命令提示符中执行:
flutter doctor --android-licenses
然后一路输入 y 并按回车,直到所有协议都接受完成。
问题 4:pub upgrade 下载失败或速度很慢
现象:
执行 flutter pub get 时下载失败或速度极慢。
解决方案:
方法一:清理缓存
# 删除缓存目录
rmdir /s /q C:\Tools\flutter_flutter\bin\cache
方法二:配置国内镜像源
在环境变量中添加:
| 变量名 | 变量值 |
|---|---|
| PUB_HOSTED_URL | https://mirrors.tuna.tsinghua.edu.cn/dart-pub |
| FLUTTER_STORAGE_BASE_URL | https://mirrors.tuna.tsinghua.edu.cn/flutter |
或者使用官方源:
| 变量名 | 变量值 |
|---|---|
| PUB_HOSTED_URL | https://pub.dev |
| FLUTTER_STORAGE_BASE_URL | https://storage.googleapis.com |
注意:配置环境变量后必须重新打开命令提示符!
问题 5:Node.js 版本冲突(高频问题!)
现象:
编译构建时出现 Node.js 相关错误:
Error: Cannot find module 'xxx'
原因分析:
系统 PATH 中存在多个 Node.js 版本,DevEco Studio 自带的 Node.js 版本被其他版本覆盖。
解决方案:
-
检查当前 Node.js 版本:
node --version -
打开环境变量设置,编辑 系统变量 中的 Path
-
关键操作:将 DevEco Studio 自带的 Node.js 路径移到最前面:
%TOOL_HOME%\tools\node -
删除或注释其他 Node.js 路径(如果存在)
-
验证配置:
# 重新打开命令提示符后 node --version应该显示 DevEco Studio 自带的 Node.js 版本。
环境变量 PATH 顺序示例:
%TOOL_HOME%\tools\node ← 放在最前面!
%TOOL_HOME%\tools\ohpm\bin
%TOOL_HOME%\tools\hvigor\bin
C:\Tools\flutter_flutter\bin
...
问题 6:flutter 命令找不到
现象:
C:\>flutter
'flutter' 不是内部或外部命令,也不是可运行的程序
解决方案:
- 检查 PATH 中是否添加了 Flutter 的
bin目录 - 确保路径正确,例如:
C:\Tools\flutter_flutter\bin - 必须关闭所有命令提示符窗口,重新打开
- 如果还不行,尝试重启电脑
问题 7:环境变量配置后不生效
现象:
配置完环境变量后,输入命令仍然无效。
解决方案:
这是新手最容易遇到的问题!环境变量配置后,已打开的命令提示符不会自动更新。
正确操作:
- 配置完环境变量
- 关闭所有命令提示符窗口
- 重新打开命令提示符
- 验证命令是否可用
问题 8:模拟器启动失败
现象:
点击启动模拟器后,模拟器无法正常启动。
解决方案:
- 检查 BIOS 中是否启用了虚拟化功能(VT-x 或 AMD-V)
- 确保有足够的磁盘空间(至少 5 GB)
- 尝试重启 DevEco Studio
- 检查模拟器日志查看具体错误
- 删除并重新创建模拟器
问题 9:应用签名失败
现象:
配置签名时提示失败。
解决方案:
- 确保使用已实名认证的华为开发者账号(这是关键!)
- 检查网络连接是否正常
- 尝试重新登录华为账号
- 如果问题持续,联系华为开发者支持
问题 10:编译 HAP 包失败
现象:
执行 flutter build hap 时编译失败。
解决方案:
- 检查错误信息,根据具体错误进行排查
- 确保所有环境变量配置正确
- 确保 DevEco Studio SDK 已正确下载
- 尝试清理构建缓存:
flutter clean flutter pub get flutter build hap --debug - 检查项目配置是否正确
三、详细代码与配置
3.1 完整的环境变量配置脚本
创建一个 setup_env.bat 文件:
@echo off
REM ========================================
REM OpenHarmony Flutter 环境变量配置脚本
REM ========================================
echo 设置环境变量...
REM 设置 DevEco Studio 路径(请根据实际安装路径修改)
setx TOOL_HOME "C:\Tools\Huawei\DevEco Studio" /M
setx DEVECO_SDK_HOME "%TOOL_HOME%\sdk" /M
setx HDC_HOME "%DEVECO_SDK_HOME%\default\openharmony\toolchains" /M
REM 设置 Flutter 相关
setx PUB_CACHE "C:\PUB" /M
setx PUB_HOSTED_URL "https://pub.flutter-io.cn" /M
setx FLUTTER_STORAGE_BASE_URL "https://storage.flutter-io.cn" /M
REM 设置 Android SDK(请根据实际路径修改)
setx ANDROID_HOME "C:\Users\%USERNAME%\AppData\Local\Android\Sdk" /M
echo.
echo ========================================
echo 环境变量设置完成!
echo 请关闭所有命令提示符窗口后重新打开
echo ========================================
pause
3.2 PATH 变量配置
需要手动添加到系统 PATH 的路径:
# DevEco Studio 工具链
%TOOL_HOME%\tools\ohpm\bin
%TOOL_HOME%\tools\hvigor\bin
%TOOL_HOME%\tools\node
# Flutter
C:\Tools\flutter_flutter\bin
# Android SDK
%ANDROID_HOME%\platform-tools
%ANDROID_HOME%\tools
%ANDROID_HOME%\tools\bin
# HDC 工具
%HDC_HOME%
3.3 验证脚本
创建 verify_env.bat 验证环境配置:
@echo off
REM ========================================
REM 环境验证脚本
REM ========================================
echo 正在验证环境配置...
echo.
echo [1/7] 检查 Git...
git --version
if %errorlevel% neq 0 (
echo [ERROR] Git 未安装或未添加到 PATH
) else (
echo [OK] Git 已正确配置
)
echo.
echo [2/7] 检查 Java...
java -version
if %errorlevel% neq 0 (
echo [ERROR] Java 未安装或未添加到 PATH
) else (
echo [OK] Java 已正确配置
)
echo.
echo [3/7] 检查 Node.js...
node --version
if %errorlevel% neq 0 (
echo [ERROR] Node.js 未安装或未添加到 PATH
) else (
echo [OK] Node.js 已正确配置
)
echo.
echo [4/7] 检查 Flutter...
flutter --version
if %errorlevel% neq 0 (
echo [ERROR] Flutter 未安装或未添加到 PATH
) else (
echo [OK] Flutter 已正确配置
)
echo.
echo [5/7] 检查 OHPM...
ohpm --version
if %errorlevel% neq 0 (
echo [ERROR] OHPM 未安装或未添加到 PATH
) else (
echo [OK] OHPM 已正确配置
)
echo.
echo [6/7] 检查 HDC...
hdc --version
if %errorlevel% neq 0 (
echo [ERROR] HDC 未安装或未添加到 PATH
) else (
echo [OK] HDC 已正确配置
)
echo.
echo [7/7] 运行 Flutter Doctor...
flutter doctor -v
echo.
echo ========================================
echo 验证完成!
echo ========================================
pause
3.4 创建 Flutter 项目脚本
@echo off
REM ========================================
REM 创建 OpenHarmony Flutter 项目
REM ========================================
if "%1"=="" (
echo 用法: create_ohos_project.bat 项目名称
echo 示例: create_ohos_project.bat my_app
pause
exit /b 1
)
set PROJECT_NAME=%1
echo 正在创建 OpenHarmony Flutter 项目: %PROJECT_NAME%
echo.
flutter create --platforms ohos %PROJECT_NAME%
if %errorlevel% equ 0 (
echo.
echo ========================================
echo 项目创建成功!
echo 项目路径: %CD%\%PROJECT_NAME%
echo.
echo 下一步:
echo cd %PROJECT_NAME%
echo flutter build hap --debug
echo ========================================
) else (
echo.
echo [ERROR] 项目创建失败,请检查错误信息
)
pause
3.5 清理缓存脚本
@echo off
REM ========================================
REM 清理 Flutter 缓存
REM ========================================
echo 正在清理 Flutter 缓存...
echo.
echo [1/3] 清理 Flutter bin 缓存...
if exist "C:\Tools\flutter_flutter\bin\cache" (
rmdir /s /q "C:\Tools\flutter_flutter\bin\cache"
echo [OK] bin\cache 已删除
) else (
echo [SKIP] bin\cache 不存在
)
echo.
echo [2/3] 清理 PUB 缓存...
if exist "C:\PUB\.pub-cache" (
rmdir /s /q "C:\PUB\.pub-cache"
echo [OK] PUB 缓存已删除
) else (
echo [SKIP] PUB 缓存不存在
)
echo.
echo [3/3] 清理项目缓存...
if exist ".dart_tool" (
rmdir /s /q ".dart_tool"
echo [OK] .dart_tool 已删除
) else (
echo [SKIP] .dart_tool 不存在
)
echo.
echo ========================================
echo 缓存清理完成!
echo 运行 'flutter pub get' 重新获取依赖
echo ========================================
pause
3.6 编译和运行脚本
@echo off
REM ========================================
REM 编译并运行 HAP 包
REM ========================================
echo [1/3] 清理旧的构建...
flutter clean
echo.
echo [2/3] 获取依赖...
flutter pub get
echo.
echo [3/3] 编译 HAP 包(Debug)...
flutter build hap --debug
echo.
if %errorlevel% equ 0 (
echo ========================================
echo 编译成功!
echo HAP 文件位置: build\hap\debug\
echo.
echo 请使用 DevEco Studio 打开 ohos 目录
echo 并在模拟器或真机上运行
echo ========================================
) else (
echo [ERROR] 编译失败,请检查错误信息
)
pause
四、项目配置文件
4.1 pubspec.yaml 示例
name: my_harmony_app
description: A Flutter OpenHarmony project.
version: 1.0.0+1
environment:
sdk: '>=3.0.0 <4.0.0'
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^1.0.6
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^3.0.1
flutter:
uses-material-design: true
4.2 main.dart 示例
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter OpenHarmony Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(title: 'OpenHarmony Flutter 首页'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text(
'你已经按下了按钮这么多次:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headlineMedium,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: const Icon(Icons.add),
),
);
}
}
五、调试技巧
5.1 查看设备连接状态
# 列出所有设备
hdc list targets
# 查看设备信息
hdc device info
# 查看已安装的应用
hdc shell pm list packages
5.2 日志查看
# 查看 Flutter 日志
flutter logs
# 查看 HarmonyOS 系统日志
hdc shell hilog
# 过滤特定标签的日志
hdc shell hilog -T MyAppTag
5.3 常用调试命令
# 清理构建缓存
flutter clean
# 获取依赖
flutter pub get
# 升级依赖
flutter pub upgrade
# 运行 Doctor 诊断
flutter doctor -v
# 分析代码
flutter analyze
六、总结
通过本文的实战指南,你应该能够成功搭建 OpenHarmony 版 Flutter 开发环境。以下是关键要点:
- 环境变量是关键:确保所有环境变量正确配置,特别是 PATH 的顺序
- 必须重启终端:配置环境变量后务必关闭所有命令提示符并重新打开
- 使用国内镜像:配置 PUB_HOSTED_URL 和 FLUTTER_STORAGE_BASE_URL 可显著提升下载速度
- Node.js 版本:确保 DevEco Studio 自带的 Node.js 优先于其他版本
- 实名认证账号:签名需要已实名认证的华为开发者账号
如果遇到其他问题,可以:
- 查看 Flutter for OpenHarmony 官方文档
- 在 CSDN Flutter for OpenHarmony 专栏 查找更多教程
- 加入开发者社区寻求帮助
七、参考资源
欢迎加入开源鸿蒙跨平台社区: https://openharmonycrossplatform.csdn.net
作者声明:本文基于实际搭建经验编写,如遇问题欢迎在评论区交流讨论。
原文来源:
更多推荐


所有评论(0)