尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Windows 11 配置 OpenHarmony 版 Flutter:从环境搭建到开发实战

Windows 11 配置 OpenHarmony 版 Flutter:从环境搭建到开发实战 兄弟们最近后台私信快被问爆了全是关于“Windows 11 上怎么配 OpenHarmony 版 Flutter”的问题。这确实是个磨人的活官方 Flutter 根本不认 OpenHarmony 设备社区分支又多版本还经常对不上加上 Windows 11 这些年更新又频繁你稍微一个版本没选对后面就是无穷无尽的报错。我前前后后在 Windows 11 上配了不下五轮 openharmony 的 Flutter 环境从最早的 3.2 API 9 一直折腾到现在的 5.0 API 12踩过的坑堆起来比脚本还高。这篇就把我最常用、最省心的一套配置流程完整拉出来。不绕弯子直接说结论这个方案解决的核心问题就是让你在 Windows 11 电脑上用 Flutter 写一套代码编译出能在 OpenHarmony 设备或模拟器上跑的 HAP 包。适合谁看两类人——一类是公司要求做鸿蒙应用、但团队已经习惯了 Flutter 跨端开发的人另一类是正准备“flutter 鸿蒙面试题”的学生党你得真把这套环境跑通面试才有底气聊。内容尽量照顾到新手但默认你已经装好 Windows 11 系统知道命令行和 IDE 是什么东西。1. 动手前先把坑看明白方案选型与整体流程1.1 为什么不是官方 Flutter而是 OpenHarmony 分支很多人上来就装官网的 Flutter SDK装完才发现 flutter doctor 里根本没有 OpenHarmony 这个平台。这是最容易被忽视的一点OpenHarmony 版 Flutter 不是官方 Flutter 的插件而是一个独立的 fork。这个 fork 由 OpenHarmony SIG 维护仓库地址在 gitee 上叫 openharmony-sig/flutter_flutter。它从官方 Flutter 的某个版本拉出来然后往里面塞入了对 OpenHarmony 平台的支持包括引擎适配、Dart 运行时移植、Skia/Impeller 渲染后端对接等等。所以它的版本号永远落后官方。比如你在官网看到 Flutter 3.24 了OpenHarmony 这边可能才跟进到 3.22 或者 3.7。这不是社区懒而是要把一套渲染引擎和系统适配完整跑通工作量本身就是以月为单位的。这就带来了第一个重要观念你电脑上只能装一个 Flutter SDK 的话要么装官方版开发 Android/iOS要么装 openharmony 分支开发鸿蒙想两个都干就得学会用 Git 分支切换或者干脆下载两份 SDK 放到不同目录。我的做法是建一个D:\flutter-sdk目录里面放flutter_official和flutter_ohos两个子目录想用哪个切哪个环境变量。别嫌麻烦后面能给你省很多来回装 SDK 的时间。1.2 这套环境的整体工作流在正式配置之前你得先搞清楚 OpenHarmony 版 Flutter 开发的工作流长什么样。官方 Flutter 开发时通常用 Android Studio 来编译 APK但 OpenHarmony 这套不一样它用的是华为的 DevEco Studio 来做工程构建和打包。整个流程大概是这样你用 Flutter 命令创建项目生成 lib 目录Dart 代码和 ohos 目录OpenHarmony 工程的壳然后你用 DevEco Studio 打开这个 ohos 目录配置好 OpenHarmony SDK最终编译的时候Flutter 的代码会被编译成原生库打包进 HAP 文件里。这个过程里Flutter SDK 管 Dart 编译和资源打包DevEco Studio 管 OpenHarmony 侧的依赖、权限、编译链接两者缺一不可。所以别指望只用命令行 flutter run 就能把 OpenHarmony 应用跑起来你至少要在关键环节打开 DevEco Studio。后面我会给出一个让命令行和 IDE 都能用的最优配置。1.3 Windows 11 前置条件检查Windows 11 这几年版本迭代很乱什么 22H2、23H2、24H2还有一堆 IoT Enterprise LTSC 的版本。我实测下来只要不是精简过头的那种系统基本都能跑。不过有几个点必须提前确认系统设置里打开“开发者模式”“设置 - 隐私和安全性 - 开发者选项”里把开发人员模式打开不然后面有些符号链接操作会失败。然后是长路径支持Windows 11 虽然默认支持长路径但有时也会因为组策略没开导致 flutter 构建报错建议先运行gpedit.msc在“计算机配置 - 管理模板 - 系统 - 文件系统 - 启用 Win32 长路径”里设为已启用。然后是虚拟化。你要在 Windows 11 上跑 OpenHarmony 模拟器就得确保 BIOS 里开启了 virtualization且 Windows 功能里的“虚拟机平台”和“Hyper-V”至少启用一个。这个跟 Windows 11 上装 Docker 的原理一样模拟器本质上就是一个虚拟机依赖 Hyper-V 或者 WSL2 的底层虚拟化能力。如果没开模拟器会直接起不来而且报错信息很不直观大概率就是一句话“Emulator started but not ready”。2. 工具链准备版本匹配是关键2.1 一张表看清版本对应关系这套环境最大的坑就是版本匹配。别想着都用最新的OpenHarmony 版 Flutter 对 SDK 版本非常敏感必须一一对应。我整理了目前社区资料最多、踩坑最少的一套版本组合你照着配成功率最高组件推荐版本说明操作系统Windows 11 22H2 及以上LTSC 版本也能用但建议别用精简版会缺组件DevEco Studio5.0.0 及以上推荐 5.0.x 系列自带 OpenHarmony SDKOpenHarmony SDKAPI 12在 DevEco Studio 里下载对应 OpenHarmony 5.0Flutter SDK 分支openharmony-sig/flutter_flutter 的 dev 分支目前多在 3.22 基线对应 API 12Node.js18.0 及以上DevEco 的 hvigor 构建工具依赖ohpm随 DevEco 安装OpenHarmony 的包管理器类似 npmhdc随 DevEco 安装OpenHarmony 调试工具类似 adb特别说明一下上面这套不是永远的真理OpenHarmony 社区更新速度很快版本号可能过两个月就变了。你配置的时候最稳妥的姿势是先去 flutter_flutter 仓库的 README 里看官方推荐的 DevEco Studio 版本和 API 版本对照表。这里给的是我实测过的一套但官方文档永远是最终答案。2.2 下载与安装 DevEco StudioDevEco Studio 是整套环境的核心它不仅仅是 IDE还捆绑了 OpenHarmony SDK、Node.js、ohpm、hvigor 这些工具链你单独去装反而容易搞出一堆依赖问题。去华为开发者官网下载 Windows 版本。这里提醒一句下载路径千万别带中文和空格比如别装到C:\Program Files这种默认路径最好是D:\DevEcoStudio。原因很简单OpenHarmony 的构建工具对中文路径和空格的支持一直有历史遗留问题你不想在排查这种低级问题上浪费一下午吧。安装时选“自定义安装”。组件尽量全选包括 SDK、Node.js、ohpm 这些。安装完后第一次启动会让你配置 SDK 路径默认会装到用户目录下的OpenHarmony文件夹里也可以手动改成D:\OpenHarmony\Sdk。这里记住你配置的路径后面配环境变量要用。启动后还有一个非常关键的东西插件市场里搜一下 Flutter 和 Dart 插件一定要装 OpenHarmony 版的。这不是 Google 官方那个而是 OpenHarmony SIG 发布的插件装完后才能在 DevEco Studio 里识别 Flutter 项目。我见过太多人在这一步卡住一直用官方插件打开项目后各种不识别。2.3 拿到 Flutter 分支并切到指定版本接下来是 Flutter SDK。不要从官网下要去 gitee 拉取 OpenHarmony 分支。命令行执行git clone https://gitee.com/openharmony-sig/flutter_flutter.git D:\flutter-sdk\flutter_ohos拉下来之后切换到对应版本。目前 API 12 一般对应 dev 分支但具体要切到哪个 tag 得看仓库里的说明。我建议先用git tag看一下有哪些版本然后git checkout到你需要的版本。比如git checkout dev接着要把 Flutter 和 Dart 的 bin 目录加到 PATH 环境变量里。右键“此电脑 - 属性 - 高级系统设置 - 环境变量”在系统变量里找到 Path把D:\flutter-sdk\flutter_ohos\bin加进去。如果你是像我一样用 PowerShell注意添加完环境变量后要完全关闭终端再重新打开才会生效。然后验证一下flutter --version flutter doctor -v如果你看到输出里有 OpenHarmony 相关的提示信息说明 SDK 识别成功了。如果 flutter doctor 报各种错误先别慌很多是因为 DevEco Studio 里的 SDK 还没配置好我们接下来处理。3. 把 OpenHarmony 侧配置好SDK 与模拟器3.1 配置 OpenHarmony SDK 与 hdcDevEco Studio 装好后SDK 一般已经自动装好了但为了命令行能调用你得手动把几个关键路径加到环境变量。第一个是 ohpm 的 bin 目录一般在SDK 目录\ohpm\bin第二个是 hdc 的路径在SDK 目录\toolchains第三个是 Node.js 的路径DevEco 自带了一个或者在系统里装一个都行。加好之后重开一个终端依次验证hdc -v ohpm -v node -vhdc 是最重要的它就是 OpenHarmony 版的 adb。你用命令行安装应用、看日志、传文件都靠它。配置完先hdc list targets跑一下如果当前没连设备也没开模拟器会显示空列表这是正常的。这里要提醒一下OpenHarmony SDK 的路径跟版本有关你安装 5.0 对应的 API 12 SDK 时目录里会包含default和openharmony两个子目录。工程配置时一般用default那个里面是当前默认的 API 版本。别选错了选错会报 API level mismatch 的错误。3.2 创建本地模拟器模拟器的创建在 DevEco Studio 里操作。工具栏点 Device Manager打开后选 Local Emulator然后会提示你下载系统镜像。第一次下载会比较耗时大概几个 GB耐心等。镜像下载完后点击创建模拟器选择你需要的设备类型和 OpenHarmony 版本。配置里注意两个地方分辨率选 1080p 以内就行太高了 Windows 11 上跑起来会有点卡内存分配至少给 2GB不然应用运行时容易 OOM。模拟器启动后再跑一次hdc list targets应该能看到一个emulator-xxxx的设备号。看到这个就说明模拟器已经被 hdc 识别了。这里我遇到过一个问题模拟器在 DevEco Studio 里看着正常启动了但 hdc 却看不到设备。后来发现是 Windows 11 的防火墙弹窗没允许 hdc 的网络通信手动在防火墙里把 hdc.exe 加入允许列表就好了。3.3 准备真机调试可选如果你手头有 OpenHarmony 开发板或者鸿蒙系统的设备真机调试其实更方便。真机需要在系统设置里连续点“版本号”打开开发者模式然后在“开发者选项”里打开 USB 调试。连上电脑后Windows 11 第一件事是装驱动。这里就要说一个热搜词里提到的经典问题了CH340 和 PL2303 这类 USB 转串口驱动在 Windows 11 上很容易被系统拦截显示“设备无法启动”。如果你用的是带串口的开发板大概率会遇到。解决办法是去厂家官网下载对应芯片的最新驱动然后在设备管理器里手动更新驱动。别用驱动精灵之类的工具很多时候越装越乱。真机连上来后hdc list targets能看到设备序列号说明连接成功。真机调试有时比模拟器稳因为模拟器的 OpenHarmony 镜像有时候对 Flutter 的 GPU 渲染支持还不完整。4. 跑通第一个 Flutter 版 OpenHarmony 工程4.1 创建项目与目录结构工具链都配齐了现在开始创建项目。用 OpenHarmony 分支的 Flutter SDK 创建flutter create --platforms ohos my_first_ohos_app注意这里--platforms ohos是 OpenHarmony 分支特有的参数官方 Flutter 是不认的。如果报错说不认识这个参数说明你的 flutter 命令还在调官方 SDK检查一下环境变量的 PATH把 OpenHarmony 分支的路径放到官方版前面或者干脆先改成 OpenHarmony 分支的路径。创建完成后进入目录看一眼。你会发现里面除了常见的 lib、pubspec.yaml多了一个 ohos 目录这就是 OpenHarmony 工程。ohos 目录下面有 entry 子目录里面是 OpenHarmony 应用的入口代码、资源配置和 module.json5 文件。这个目录结构和纯 OpenHarmony 的 ArkTS 工程很接近只是里面的 UI 部分由 Flutter 引擎接管。4.2 在 DevEco 中打开与构建现在用 DevEco Studio 打开刚才生成的项目。这里有一个关键操作不是打开项目根目录而是打开 ohos 子目录。很多新手就是直接在根目录点打开结果 DevEco Studio 根本不识别这是个 OpenHarmony 工程。打开后DevEco Studio 会提示下载或配置依赖。第一次同步工程时它会自动读取 ohos 目录下的配置文件然后调用 ohpm 安装依赖。这个过程如果你没有配环境变量IDE 会报找不到 ohpm 的错误。所以请确保第 3 章里的环境变量都配好了然后重启 DevEco Studio 再打开工程。同步完成后在 DevEco Studio 的工程面板里你会在 entry 模块下看到一大堆依赖项其中会包含ohos/flutter_ohos这个包这是 Flutter 引擎在 OpenHarmony 侧的适配层相当于 Android 工程里的flutter.jar。看到它出现说明依赖基本装对了。4.3 运行到模拟器接下来就是见证奇迹的时刻。在 DevEco Studio 里点运行按钮选择你刚才创建的模拟器开始编译。第一次编译会很久因为要下载 Gradle 依赖、编译 Flutter 引擎、各种原生代码链接慢的话可能要十几分钟。这期间别去动它专心等。如果你习惯命令行也可以用 hdc 配合 flutter 命令来跑flutter run -d emulator-xxxx前提是工程里已经配置好了 Flutter SDK 路径。这个配置在 ohos 目录下的local.properties文件里如果没有手动创建并写入sdk.dirD:\\OpenHarmony\\Sdk nodejs.dirD:\\DevEcoStudio\\tools\\node flutter.sdkD:\\flutter-sdk\\flutter_ohos三个路径分别指向你的 OpenHarmony SDK、Node.js 和 Flutter SDK 的安装目录。路径里的反斜杠记得要转义写成双反斜杠。配置完后重启 DevEco Studio命令行和 IDE 就都能正常识别了。运行时如果一切顺利你会在模拟器上看到一个计数器 Demo 界面点击中间的加号按钮数字会加一。到这一步Windows 11 上的 OpenHarmony 版 Flutter 开发环境就正式跑通了。5. 常见问题与排查技巧实录5.1 Windows 11 的系统级问题Windows 11 这个系统本身在移动开发这条路上做得并不友好很多问题是系统层面引出来的。第一个是长路径。Flutter 项目依赖层级很深如果pub get下载的包路径加项目路径总长超过 Windows 默认的 260 字符限制就会报各种奇怪的找不到文件的错误。解决办法就是开篇提到的启用 Win32 长路径。另外把项目和 SDK 装在磁盘的根目录下比如D:\project\app而不是C:\Users\你的名字\长文件夹名\...能规避一半的路径问题。第二个是系统版本。我实测过 Windows 11 IoT Enterprise LTSC 版本DevEco Studio 能装但模拟器跑起来偶尔会有画面渲染异常的问题。这大概率是精简版系统缺了某些图形组件或虚拟化组件导致的。如果你遇到模拟器画面花屏、闪烁、黑屏先别怀疑 Flutter优先怀疑系统版本。有条件的话装个完整的 Windows 11 专业版或企业版对比一下。第三个是环境变量不起作用。Windows 11 改完环境变量后已经打开的所有终端窗口都不会刷新必须完全关闭重开。这是一个非常隐蔽的坑很多时候你配好了路径但终端里跑的还是一份旧的 PATH导致执行的还是旧版 flutter。5.2 Flutter 与构建工具的问题接下来是开发环节最常见的几类报错。第一个网上很多人提到的You are applying Flutters main Gradle plugin imperatively using the apply script。这个报错在官方 Flutter 的 Android 工程里随处可见OpenHarmony 版工程虽然用 hvigor 而不是 Gradle但你在集成一些带 Android 壳的三方插件时也会撞上。根本原因是新版 Flutter 改了插件模板的 Gradle 配置写法你用的插件却还在用旧的 apply 方式。解决办法很简单优先用 OpenHarmony SIG 适配过的插件列表里的版本别硬上最新的三方插件如果非用不可找到插件 android/build.gradle 里的配置改成新版推荐的方式。第二个是依赖下载卡住。flutter pub get 卡在某个包上半天不动。这个优先检查网络如果大环境网络不好可以把 PUB_HOSTED_URL 和 FLUTTER_STORAGE_BASE_URL 这两个环境变量指向国内镜像服务商比如华为云镜像。这不是什么见不得人的操作就是普通的镜像源配置很多大型开源项目都提供国内镜像。第三个是 Impeller 渲染引擎相关的问题。新版 Flutter 在 Android 上默认启用了 Impeller 渲染引擎OpenHarmony 也在逐步跟进。如果你在模拟器上遇到画面渲染异常、文字不显示、或者 GPU 相关的崩溃可以试试用 Skia 渲染引擎绕过运行命令时加上--no-enable-impellerflutter run --no-enable-impeller -d emulator-xxxxOpenHarmony 目前对 Impeller 的支持还在完善遇到渲染问题优先切 Skia 是一种常规操作。5.3 设备与运行问题设备连接这块的坑很杂挑三个高频的说。第一个是 hdc 下看不到设备。模拟器在 DevEco Studio 里正常但hdc list targets空列表。排查看门狗先杀进程hdc kill再hdc start然后重新查确认 hdc 在 PATH 里用的是 SDK 目录下那个而不是别的版本最后检查 Windows 防火墙是否拦了 hdc 的网络通信。我遇到的基本都是这三个原因之一。第二个是真机安装失败报 INSTALL_FAILED。这个很大概率是签名冲突HAP 应用包重复安装且签名不一致。先卸载旧的再安装或者检查工程的签名配置。如果模块配置了 debug 签名真机跑 release 包时就会签名不对。第三个是 CH340/PL2303 驱动问题。前面说过Windows 11 对旧版 USB 转串口芯片驱动不友好插上开发板后设备管理器里显示黄色感叹号。上厂家官网下最新驱动手动安装然后注意连接开发板时到底用的哪个串口hdc 有时认的是 auto 模式你得在设备管理器里看清 COM 口号必要时手动指定。5.4 查错速查表症状大概率原因解决方法flutter 命令不识别 ohos 参数PATH 指向官方 SDK检查 PATH切到 flutter_ohosDevEco 打开工程不识别打开了根目录而不是 ohos 目录重新打开 ohos 子目录模拟器起不来虚拟化未开启检查 BIOS 和 Windows Hyper-V 功能hdc 看不到设备防火墙拦截放行 hdc.exe 或关闭防火墙测试画面渲染异常Impeller 兼容问题flutter run 加 --no-enable-impeller真机连接不上驱动没装好手动装 CH340/PL2303 新版驱动构建卡死依赖下载超时检查网络配置国内镜像环境变量中文字体不显示字体资源未包含检查工程是否打包了字体文件最后再说一点个人体会。OpenHarmony 版的 Flutter 生态还在快速演进今天能用的一套配置过了三个月可能就被官方新的分支取代。所以我的建议是第一次配置时严格按一套固定的版本来跑通后再考虑升级平时的项目不要盲目追新锁定一份你验证过的环境配置比什么都强。这个领域文档少、坑多把自己的配置方案记录成文档就是核心竞争力。
返回列表