一、基础环境搭建
1.1 Git 下载与安装
下载地址:
Git - Install
https://git-scm.com/install/下载安装文章:
【2025最新】下载安装 Git 详细教程 (Windows)-CSDN博客
1.2 Java JDK17 下载与安装
下载地址:
Java Downloads | Oracle
https://www.oracle.com/java/technologies/downloads/#java17-windows下载安装文章:
Java开发环境的搭建(Java 17)_java17-CSDN博客
二、Flutter SDK 下载安装和开发环境搭建

2.1 DevEco Studio下载安装
我这里版本为:
DevEco Studio 6.0.0 Release
Build Version: 6.0.0.858, built on September 24, 2025
Runtime version: 21.0.6+8-b631.39 amd64 (JCEF 122.1.9)
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Toolkit: sun.awt.windows.WToolkit
Windows 11.0
GC: G1 Young Generation, G1 Concurrent GC, G1 Old Generation
Memory: 1536M
Cores: 16
Registry:
idea.plugins.compatible.build=IC-243.24978.46
本次安装需要以下几个文件夹,可以提前创建:在任意盘下创建HarmonyOS文件夹:
画红圈的是需要创建的:

ArkUI-X 文件夹下还有一个 Sdk 文件夹
Emulator 文件夹下还有一个 deployed 文件夹
OpenHarmony 文件夹下还有一个 Sdk 文件夹
1.下载官网压缩包
下载地址:
最新版本 - 下载中心 - 华为开发者联盟
https://developer.huawei.com/consumer/cn/download/选择 6.0 稳定版如图所示:

2.下载完成后解压缩包双击打开.exe进入安装页面


3.选择安装位置
尽量不要选择C盘,如果C盘空间充足也可以

4.选择安装选项
全选点击进入下一步

5.选择开始菜单目录
默认即可,点击安装

6.开始安装


2.2 DevEco Studio 相关配置
1.新建一个项目
双击桌面图标进入应用



给你的项目起名,并选择你要保存Harmony项目的文件夹,点击Finish:

2. 配置显示字体
选择左上角 File 下的 Settings


3.设置安装OpenHarmony SDK
在Settings页面下的OpenHarmony SDK
选择安装路径:



点击同意,接着Next

等待下载,耐心等待

下载完成如图所示:


4.设置安装ArkUI-x
选择安装路径:


点击同意,接着Next

等待下载,耐心等待

下载完成如图所示:


点击蓝按钮OK关闭。
5.配置安装虚拟机模拟器
点击Device Manager


这里选择NO

配置安装位置:
选择完安装地址,出现弹窗点击Yes即可

接着选择右下角 New Emulator 新建虚拟机:

选择虚拟机镜像下载位置:

点击同意,接着Next

等待下载,耐心等待


接着Next:



运行即可,初次运行可能会有点慢,耐心等待即可:

6.运行项目
模拟器启动成功后,点击右上角运行按钮,即可在模拟器看见相关页面

2.3 配置鸿蒙SDK环境变量
默认在Terminal中,默认不识别hdc命令,需要将hdc所在的路径添加到环境变量(根据自己的deveco studio安装的路径自行调整)
F:\Chengxusheji\HarmonyOS\DevEco Studio\sdk\default\openharmony\toolchains
F:\Chengxusheji\HarmonyOS\DevEco Studio\tools\ohpm\bin
F:\Chengxusheji\HarmonyOS\DevEco Studio\tools\node
F:\Chengxusheji\HarmonyOS\DevEco Studio\tools\hvigor\bin
右键点击此电脑,点击属性,再点击高级系统设置,最后点击环境变量



点击右上角新建添加四个地址位置:

点击确定
另外,还需要新建DEVECO_SDK_HOME变量,路径为
F:\Chengxusheji\HarmonyOS\DevEco Studio\sdk
盘号:\你的位置\HarmonyOS\DevEco Studio\sdk

2.4 下载适配鸿蒙的flutter SDK
1.开始下载
利用前面下载安装好的 Git :
创建专门放Flutter的文件夹



会打开控制面板:
输入指令:
git clone -b oh-3.27.4-dev https://gitcode.com/openharmony-tpc/flutter_flutter.git
下载安装成功:

2.配置环境变量
2.1. 拷贝windows的flutter目录下的bin完整路径
F:\Chengxusheji\Flutter\flutter_flutter\bin
2.2. 右键点击此电脑,点击属性,再点击高级系统设置,最后点击环境变量



2.3. 在path路径中添加之前拷贝的bin路径
添加两个环境变量PUB_HOSTED_URL 和FLUTTER_STORAGE_BASE_URL

PUB_HOSTED_URL
https://pub.flutter-io.cn
FLUTTER_STORAGE_BASE_URL
https://storage.flutter-io.cn



配置完成后,一直点击确定:

3.检查Flutter版本
flutter --version

4.诊断flutter环境
flutter doctor -v

三、创建并编译项目
3.1 创建项目
执行以下命令创建一个项目,<projectName>替换成你自己的项目名
flutter create --platforms ohos <projectName>
专门创建一个文件夹保存Flutter鸿蒙项目:

在上面框中输入cmd,接着点击Enter

flutter create --platforms ohos flutter_harmonyos


当前Flutter ohos平台中支持impeller-vulkan渲染模式,可通过开关控制是否打开。
开关位于ohos/entry/src/main/resources/rawfile/buildinfo.json5(初次flutter create之后,配置文件位于ohos\entry\src\main\resources\base\profile目录,首次run或build之后会搬移到rawfile目录)
{
"string": [
{
"name": "enable_impeller",
"value": "true"
}
]
}
如果选择关闭impeller渲染,可将json文件中的value改为false。
3.2 构建app
在创建的项目路径下,用powershell执行以下命令构建
flutter build app --release
下述输入powershell接着点击 Enter




构建完毕后,会显示以下信息,我们就可以在ohos\build\outputs\default目录下找到未签名的hap包

3.3 打开项目


信任此项目:

打开项目后,开发环境会自动编译依赖,如果报错,请查看之前的步骤是否都完成了

第一次打开,会提示让添加目标sdk版本,选择1:

然后打开build-profile.json5添加自己想要编译到的设备的sdk版本

第一种连接鸿蒙设备
打开终端,执行hdc tconn IP:端口号(IP和端口号,在需要调试的设备上,打开开发者模式,在无线调试页面查看)

没有鸿蒙设备打开模拟器再配置自动签名

3.4 配置自动签名
选择项目结构(Project Structure)

点击Sign In登录配置签名

在网页中点击允许之后会自动刷新配置:

如果出现以下报错,就是你的电脑时间需要校准了

校准完之后,即可签名成功
3.4 编译与启动项目
启动虚拟模拟器,并点击右上角绿色按钮运行如下:

3.5 修改目标设备
默认项目是为手机构建的,假如需要支持电脑和平板端,需要修改一下配置

四、打开已有项目(已有开源项目需要打开时查看此步骤)
以kelivo-ohos这个项目为例。这个项目是一个大模型应用软件适配的鸿蒙版本
GitHub地址:
https://github.com/Chevey339/kelivo-ohos
4.1 源码准备
下载好源码之后,我们解压并进入到源码目录,并打开poweshell

4.2 开始编译
执行以下命令进行编译
flutter build app --release
出现以下问题代表我们的flutter sdk版本太低了

4.3 升级flutter sdk(可选)
我们访问仓库,看一下最新的发行版版本:
flutter_flutter - GitCode
https://gitcode.com/openharmony-tpc/flutter_flutter
是3.27版本,我们也看一下分支,然后把原先的flutter_flutter文件夹删了,执行以下命令
git clone -b oh-3.27.4-dev https://gitcode.com/openharmony-tpc/flutter_flutter.git
最后打开powershell,执行以下指令检查环境
$env:PUB_HOSTED_URL="https://pub.flutter-io.cn"
$env:FLUTTER_STORAGE_BASE_URL="https://storage.flutter-io.cn"
flutter doctor -v
显示绿色代表环境正常

升级完成后再次编译
flutter build app --release
然后报了找不到image_picker,我们需要从官方适配的库里找一找这个库

4.4 下载flutter_packages库(可选)
从这个网址下载官方适配的库:flutter_packages - GitCode
https://gitcode.com/openharmony-tpc/flutter_packages下载完后进行解压,将packages文件夹,移动到源码目录下,并命名为flutter_packages


为什么这个命名呢,是从pubspec.yaml文件里看出来的:

然后又报了open_filex错误

经过查找,将这个仓库下载下来
https://gitcode.com/openharmony-sig/fluttertpc_open_filex/tree/br_v4.5.0_ohos
然后解压改名成fluttertpc_open_filex,放到flutter_packages文件夹里

然后还缺一些库,以下简述下载链接和改名,均放在flutter_packages文件夹里
- 下载链接:https://gitcode.com/openharmony-sig/fluttertpc_file_picker
- 改名为:fluttertpc_file_picker
- 放在flutter_packages文件夹里
- 下载链接:https://gitcode.com/openharmony-sig/fluttertpc_mobile_scanner/tree/br_v6.0.10_ohos
- 改名为:fluttertpc_mobile_scanner
- 放在flutter_packages文件夹里
- 下载链接:https://github.com/app-appplayer/mcp_client
- 改名为:mcp_client
- 放在源码目录下,并且,要修改一下里面的pubspec.yaml,把sdk: ^3.7.0 改为 sdk: ^3.6.2
4.5 固定依赖版本
打开源码里的pubspec.yaml,把win32和ffi的版本固定一下。
如果不固定,会默认下载5.13.0版本的win32,而这个版本的win32不再兼容Dart 3.6 会报错

编译完成如下图

4.6 补全build-profile.json5
将以下自动生成的默认build-profile.json5模板,放到源码的ohos中,找到 build-profile.json5(如果没有创建一个build-profile.json5文件),粘贴以下代码
TypeScript
{
"app": {
"signingConfigs": [],
"products": [
{
"name": "default",
"signingConfig": "default",
"compatibleSdkVersion": "5.0.0(12)",
"runtimeOS": "HarmonyOS",
"targetSdkVersion": "5.0.0(12)"
}
],
"buildModeSet": [
{
"name": "debug"
},
{
"name": "profile"
},
{
"name": "release"
}
]
},
"modules": [
{
"name": "entry",
"srcPath": "./entry",
"targets": [
{
"name": "default",
"applyToProducts": [
"default"
]
}
]
}
]
}
添加粘贴权限
4.7 添加粘贴权限
默认移植的flutter程序,是没办法粘贴内容的,我们需要添加获取剪切板权限
首先在module.json5配置文件中添加剪切板权限
(注意:有两处"requestPermissions",要加到最下面那个"requestPermissions"里面)
TypeScript
{
"name" : "ohos.permission.READ_PASTEBOARD",
"reason": "$string:module_desc",
"usedScene": {
"abilities": [
"EntryAbility"
],
"when":"inuse"
}
}

最后别忘了重新签一下名,获取ACL权限
