Flutter鸿蒙化环境配置(windows)
Flutter鸿蒙化环境配置(windows)
- 参考资料
- Window配置Flutter的鸿蒙化环境
- 下载
- 配置环境变量
- HarmonyOS的环境变量配置
- 配置Flutter的环境变量
- Flutter doctor -v 检测的问题
- flutter_flutter仓库地址的警告问题
- Fliutter doctor –v 报错[!] Android Studio (version 2024.1)✗ Unable to find bundled Java version.
- Windows上配置环境问题
- Hvigor Error : BUILD unable to find “DEVECO_SDK_HOME” in the environment path
- Hvigor depends on the npmrc file configure the npmrc file
- 404 GET https://registry.npm.js.org/xxxx not found
- 云桌面无法检测到真机设备的问题
- 执行flutter build hap xxx 报 java ENOENT
- flutter_flutter配置文档上的SDk的问题
- Flutter鸿蒙化对JDK的版本要求
- Mac上环境配置问题集
- 如何配置hdc的路径
- No Hmos SDK found. Try setting the HOS_SDK_HOME environment variable
- Flutter鸿蒙化问题集
- flutter项目使用鸿蒙化的三方库,flutter build hap失败
- 如何在已存在的Flutter项目中创建鸿蒙模块
- 在flutter项目的跟目录下创建ohos的模块,报错is not a valid Dart package name
- 如何替换鸿蒙已经适配的三方库 已share_preferences三方库为例
- 配置了pubspec.yaml文件无法拉取鸿蒙适配的三方库
- 鸿蒙三方库适配列表中纯Dart库适配注意事项
- Flutter项目运行一直报错,报相关缓存错误
- Flutter工程运行在手机上一直卡在Running Gradle task 'assembleDebug'..
- Flutter项目运行正常, 突然报错类似缓存错误
- Flutter项目中如何判断鸿蒙平台
- Flutter项目在鸿蒙手机上系统键盘完成按钮文字不显示问题
- 执行flutter build hap报错hvigorw assembleHap -p product=default -p buildMode=release --no-daemon
参考资料
Flutter SDK 环境的配置参考相 flutter官网(https://docs.flutter.dev/get-started/install)
Flutter鸿蒙化相关参考文档: https://gitee.com/openharmony-sig/flutter_flutter/tree/dev/
注意: 目前Flutter项目鸿蒙化,FlutterSDK的版本只支持3.7.12, Dart支持的版本是2.19.6
Window配置Flutter的鸿蒙化环境
如果是MAC电脑的话, 直接参考上述参考资料配置环境。
下载
- 首先我们需要下载HarmonyOS的套件,并安装相关的编译工具
- 2、 通过代码工具包下载当前仓库代码 git clone https://gitee.com/openharmony-sig/flutter_flutter.git, 并切换到dev分支
配置环境变量
HarmonyOS的环境变量配置
首先我们需要配置harmonyos中的node、ohpm、hvigor、hdc的环境变量, node、ohpm、hvigor这三个都在DevEco Studio软件安装的tools文件加下, 而hdc则是在sdkHarmonyOS-NEXT-DB1openharmony oolchains 目录下。配置环境变量如下图:
同时我们还需要在系统环境变量中增加 HOS_SDK_HOME 也就是harmonyos的SDK的路径
配置Flutter的环境变量
注意:如果你之前有下载官方的FlutterSDK,那么这里配置的flutter_flutter的环境变量一定要在你自己下载的flutterSDK的环境变量之前(flutter_windows_3.7.12-stablelutterin), 如果顺序发生调换, 你在使用flutter doctor –v检测环境时, 无法出现 HarmonyOS 的环境标志
除上述之外,我们还需在系统环境变量中配置一下几个环境变量:PUB_HOSTED_URL = https://pub.flutter-io.cn
FLUTTER_STORAGE_BASE_URL=https://flutter-ohos.obs.cn-south-1.myhuaweicloud.com
使用Flutter doctor –v
检测环境
环境检测通过示例,如下图:
Flutter doctor -v 检测的问题
flutter_flutter仓库地址的警告问题
解决方案:
在系统变量中增加如下环境变量即可解决
FLUTTER_GIT_URL=https://gitee.com/openharmony-sig/flutter_flutter.git
Fliutter doctor –v 报错[!] Android Studio (version 2024.1)✗ Unable to find bundled Java version.
- 首先进入android studio工具的安装目录
- 目录中没有jre目录, 你需要创建一个jre文件夹
- 然后把jbr目录中的所有内容复制到jre文件中
Windows上配置环境问题
Hvigor Error : BUILD unable to find “DEVECO_SDK_HOME” in the environment path
解决方案:
我们需要再系统环境变量中配置以下这个环境变量:
Hvigor depends on the npmrc file configure the npmrc file
原因: 是没有配置.npmrc文件
解决方案:需要该文件存在C盘当前用户目录(示例:C:Usersissuser)下创建这个文件, 文件的内容是华为npm仓库的地址
404 GET https://registry.npm.js.org/xxxx not found
解决方案:
需要再.npmrc文件中配置下npm的仓库:
registry=https://repo.huaweicloud.com/repository/npm/
@ohos:registry=https://repo.harmonyos.com/npm/
注意:为什么有的需要配置这个,有的不需要配置,是因为有些库只发布到了https://repo.harmonyos.com/npm/
云桌面无法检测到真机设备的问题
- 首先验证云桌面和本地是否在同一网段,可以在云桌面ping 本机的ip地址
- 可以参考文档,使用hdc远程连接到设备: https://docs.openharmony.cn/pages/v4.0/zh-cn/device-dev/subsystems/subsys-toolchain-hdc-guide.md/#hdc-client%E5%A6%82%E4%BD%95%E8%BF%9C%E7%A8%8B%E8%AE%BF%E9%97%AEhdc-server
- 其次本地和云桌面需要配置hdc的环境配置变量
- 注意:Hdc 在sdk的
D:ProgrameFileHuaWeiDevEco StudiosdkHarmonyOS-NEXT-DB1openharmony oolchains
,
D:ProgrameFileHuaWeiDevEco Studio:这个示例路劲是指你DevEco Studio的安装包的路径
执行flutter build hap xxx 报 java ENOENT
解决方案:
需要安装openjdk17的环境, 并设置好环境变量, 然后在次执行flutter build指令 即可,Jdk17的安装参考地址
flutter_flutter配置文档上的SDk的问题
这个问题是以前就版本才需要执行的,目前IDE一体化之后就不需要了(IDE 版本5.1.3.300及之后的版本都不在需要执行这个指令。)
Flutter鸿蒙化对JDK的版本要求
- 建议使用JDK的版本是 openjdk17的版本
- 经验证jdk22的版本是会报错
- 至于jdk17以上到22之间的版本, 华为技术回复:
注意:如果需要确切的知道有没有适配, 可能需要找对应的技术人确认
Mac上环境配置问题集
如何配置hdc的路径
- vim ~/.zshrc
- 增加如下export PATH=${PATH}:/Users/用户名/Library/Huawei/Sdk/openharmony/版本/toolchains
- source ~/.zshrc
- hdc version 查看版本如下就可以了
No Hmos SDK found. Try setting the HOS_SDK_HOME environment variable
当我们执行flutter doctor -v检车环境时,一切正常。
我们使用DevEco Studio编译项目时是正常的, 但是当我们使用Android Studio打开这个Flutter项目,并运行的时候报如下错误:
我们已经在环境变量配置文件中,配置了该环境变量。
解决方案:
这时候我们需要执行下flutter项目中的ohos的SDK
# 指向DevEco-Studio下的sdk目录
flutter config --ohos-sdk=/Applications/DevEco-Studio.app/Contents/sdk(mac电脑上DevEco Studio的sdk路径)
然后再次运行项目就正常了。
Flutter鸿蒙化问题集
flutter项目使用鸿蒙化的三方库,flutter build hap失败
在windows电脑上, 我们执行命令flutter pub get
, 默认缓存第三方库的路径是在C:UsersissuseAppDataLocalPubCache
路径下, 但是我们在flutter项目中如果配置了鸿蒙化的flutter三方库, 例如:share_preferences
, 这时候fluttre项目编译运行都是正常的, 但是当我们在鸿蒙项目中执行flutter build hap
时,会报如下错误:
原因:首先我们使用鸿蒙化的flutter三方库,flutter pub get的三方库的缓存路径一定要和你的工程是处在同一个磁盘
我之所以报这个错误是,我的三方库的缓存路径在C盘, 但是我的项目在D盘。
解决方案:
首先我们需要把flutter pub get
的三方库的缓存路径设置到和项目同一个磁盘中, 我这里是把路径设置到D盘了。
我们需要再系统环境变量中添加一个环境变量:
PUB_CACHE = D:PubCache
然后在重新执行flutter pub get
如果执行命令报如下错误:
那么我们需要打开鸿蒙工程把oh-package.json5和build-profile.json5
这两个文件 报错库的这一项直接删除, 然后在重新执行命令, 鸿蒙这边在重新执行flutter build hap
就可以了。
如何在已存在的Flutter项目中创建鸿蒙模块
cd到flutter工程目录下 使用命令 flutter create ./ --platform ohos
创建鸿蒙模块。
在flutter项目的跟目录下创建ohos的模块,报错is not a valid Dart package name
原因: 目录名不对, flutter的工程名只支持abc_abd123这种格式的名称, 不支持大写字母, 可以检查你的项目的名称是否符合flutter命名规范
参考地址: https://dart.dev/tools/pub/pubspec#name
解决方案: 直接修改目录名称到符合规范
如何替换鸿蒙已经适配的三方库 已share_preferences三方库为例
首先我们需要更新我们的pubspec.yaml文件:
注意:该三方库的地址可以从鸿蒙适配三方库列表中,找到地址, 然后根据相关地址文档来使用git依赖三方库的方式,依赖库
Flutter官方如何使用git地址来依赖package
鸿蒙适配三方库列表
如果你依赖的其三方库中也依赖的这个三方库, 并且和你主动依赖的库的版本不一致、库的来源也不一致, 这会导致两个问题, 一个是库的版本不一致的问题; 还有一个是库覆盖问题,导致我们最终使用的不是鸿蒙适配的三方库。
解决方案:
直接强制指定库的版本和来源。
参考链接:
https://docs.flutter.cn/packages-and-plugins/using-packages#dependencies-on-unpublished-packages
配置了pubspec.yaml文件无法拉取鸿蒙适配的三方库
首先我们可以尝试: flutter pub cache clean
然后删除掉pubspec.lock
文件, 在重新flutter pub get
鸿蒙三方库适配列表中纯Dart库适配注意事项
- 纯Dart库,可以直接在flutter项目中使用,可以不必和华为提供列表中的版本一致, 但是该库的版本必需满足
Flutter SDK 3.7.12
和Dart 2.19.6
支持的版本。 - 查看该库中的
pubspec.yaml
文件, 是否有platforms
关键字, 如果有就代表有平台侧的代码实现,需要做鸿蒙化适配后才可以在鸿蒙侧使用。
示例:
https://github.com/cfug/dio/blob/main/dio/pubspec.yaml
https://gitee.com/openharmony-sig/flutter_packages/blob/master/packages/webview_flutter/webview_flutter/pubspec.yaml
Flutter项目运行一直报错,报相关缓存错误
大概率是本地缓存或者AGP 和 Flutter 之间有什么不兼容的地方导致了,您这边建议先尝试清理下构建环境看看
- flutter clean;
- flutter pub get;
- flutter precache // 预下载。
Flutter工程运行在手机上一直卡在Running Gradle task ‘assembleDebug’…
可能是由于gradle没有下载成功, 一直在下载,导致卡在这里。
Gradle 是安卓的构建工具,必须要先下载对应版本才能使用。而我们遇到的问题经常是, android studio 里面下载很慢。可以使用下面的国内域名来下载gradle
https://mirrors.cloud.tencent.com/gradle/xxx(gradle-8.6-bin.zip)
Flutter项目运行正常, 突然报错类似缓存错误
- 原因应该大概率是本地缓存或者AGP 和 Flutter 之间有什么不兼容的地方导致了,您这边建议先尝试清理下构建环境看看
flutter clean
;flutter pub get;
flutter precache
Flutter项目中如何判断鸿蒙平台
第一种判断不是android 和 ios 就是鸿蒙平台, 通过Platform 类判断
第二种通过Theme.of(context).platform == TargetPlatform.ohos 的方式来判断是否是ohos平台
目前也可以直接使用下面的方法来判断:
import 'package:flutter/foundation.dart';
bool isOhos() {
return defaultTargetPlatform == TargetPlatform.ohos;
}
Flutter项目在鸿蒙手机上系统键盘完成按钮文字不显示问题
Flutter项目中使用TextfFiled这个widget, 设置了键盘属性现在textInputAction: TextInputAction.newline, 为换行, 导致完成按钮的文字不显示。
执行flutter build hap报错hvigorw assembleHap -p product=default -p buildMode=release --no-daemon
当我把鸿蒙的编译器从600升级到910之后, 在鸿蒙项目中执行flutter build hap编译, 报如下错误:
600的编译器编译是正常的,但是910就不行。
解决方案:
配置hvigor-confog.json
配置文件,内容如下:
/*
* Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
{
"modelVersion": "5.0.0",
"dependencies": {
},
"debugging": {
"stacktrace": true
},
"properties": {
"ohos.nativeResolver": false
}
}
然后保存,清楚缓存,在次执行flutter build hap,即可编译成功