From da0c32cc08c96ef6161c7ec6a09a549ff816e46e Mon Sep 17 00:00:00 2001 From: huangxiaoyao <976125628@qq.com> Date: Sat, 7 Sep 2024 16:16:15 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=9B=B4=E6=96=B0readme=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: huangxiaoyao <976125628@qq.com> --- README.md | 101 ++++++++++++++++++++++++++---------------------------- 1 file changed, 48 insertions(+), 53 deletions(-) diff --git a/README.md b/README.md index f61c8da773..3d1c7d5fba 100644 --- a/README.md +++ b/README.md @@ -25,15 +25,34 @@ Flutter SDK 仓库 1. 配置HarmonyOS SDK和环境变量 * API12, deveco-studio-5.0 或 command-line-tools-5.0 - * 配置 Java17 + * 下载jdk17并配置环境变量 + + ```sh + # mac环境 + export JAVA_HOME=/Contents/Home + export PATH=$JAVA_HOME/bin:$PATH + + # windows环境 + JAVA_HOME = + PATH=%JAVA_HOME%\bin + ``` + * 配置环境变量 (SDK, node, ohpm, hvigor) ```sh + # mac环境 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 + + # windows环境 + TOOL_HOME = D:\devecostudio-windows\DevEco Studio + DEVECO_SDK_HOME=%TOOL_HOME%\sdk + PATH=%TOOL_HOME%\tools\ohpm\bin + PATH=%TOOL_HOME%\tools\hvigor\bin + PATH=%TOOL_HOME%\tools\node ``` 2. 通过代码工具下载当前仓库代码`git clone https://gitee.com/openharmony-sig/flutter_flutter.git`,指定dev或master分支,并配置环境 @@ -45,12 +64,7 @@ Flutter SDK 仓库 export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn ``` - 3. `--local-engine` 成为可选参数,可以不传,默认从云端获取。 - - 使用示例:`--local-engine=src/out/` - - 可在该路径下载[编译产物](https://docs.qq.com/sheet/DUnljRVBYUWZKZEtF?tab=BB08J2) - - engine路径指向需带上 `src/out` 目录 - - 上述所有环境变量的配置(Windows下环境变量配置请在‘编辑系统环境变量’中设置),可参考下面的示例(其中user和具体代码路径请替换成实际路径): + 3. 上述所有环境变量的配置(Windows下环境变量配置请在‘编辑系统环境变量’中设置),可参考下面的示例(其中user和具体代码路径请替换成实际路径): ```sh #依赖缓存 @@ -71,28 +85,35 @@ Flutter SDK 仓库 export PATH=$TOOL_HOME/tools/node/bin:$PATH # command-line-tools/tool/node/bin ``` - ## 构建步骤 1. 运行 `flutter doctor -v` 检查环境变量配置是否正确,**Futter**与**OpenHarmony**应都为ok标识,若两处提示缺少环境,按提示补上相应环境即可。 -2. 创建工程与编译命令,编译产物在\/ohos/entry/build/default/outputs/default/entry-default-signed.hap下。 +2. 创建工程 ``` # 创建工程 flutter create --platforms ohos + ``` + +3. 编译hap包,编译产物在\/ohos/entry/build/default/outputs/default/entry-default-signed.hap下。 + ``` # 进入工程根目录编译 # 示例:flutter build hap [--target-platform ohos-arm64] [--local-engine=/src/out/ohos_release_arm64] --release flutter build hap --release ``` -3. 通过`flutter devices`指令发现ohos设备之后,使用 `hdc -t install `进行安装。 +4. 安装应用,通过```flutter devices```指令发现真机设备之后,然后安装到鸿蒙手机中。 -4. 也可直接使用下列指令运行: + 方式一:进入编译产物目录,然后安装到鸿蒙手机中 + ```sh + hdc -t install ``` - # 示例:flutter run [--local-engine=/src/out/ohos_debug_unopt_arm64] -d - flutter run --debug -d + + 方式二:进入项目目录,直接运行安装到鸿蒙手机中 + ```sh + flutter run --debug [--local-engine=/Users/lihui/Documents/flutter_engine/src/out/ohos_debug_unopt_arm64] -d ``` 5. 构建app包命令: @@ -130,37 +151,11 @@ Flutter SDK 仓库 ## 常见问题 -1. 切换FLUTTER_STORAGE_BASE_URL后需删除\/bin/cache 目录,并在项目中执行flutter clean后再运行 - -2. 若出现报错:`The SDK license agreement is not accepted`,参考执行以下命令后再次编译: - - ``` - ./ohsdkmgr install ets:9 js:9 native:9 previewer:9 toolchains:9 --sdk-directory='/home/xc/code/sdk/ohos-sdk/' --accept-license - ``` - -3. 如果你使用的是DevEco Studio的Beta版本,编译工程时遇到“must have required property 'compatibleSdkVersion', location: demo/ohos/build-profile.json5:17:11"错误,请参考《DevEco Studio环境配置指导.docx》中的‘6 创建工程和运行Hello World’【配置插件】章节修改 hvigor/hvigor-config.json5文件。 - -4. 若提示安装报错:`fail to verify pkcs7 file` 请执行指令 - - ``` - hdc shell param set persist.bms.ohCert.verify true - ``` -5. linux虚拟机通过hdc无法直接发现OpenHarmony设备 - - 解决方案:在windows宿主机中,开启hdc server,具体指令如下: - ``` - hdc kill - hdc -s serverIP:8710 -m - ``` - 在linux中配置环境变量: - ``` - HDC_SERVER= - HDC_SERVER_PORT=8710 - ``` +1. 模拟器调试只支持Mac(arm64),还不支持Mac(x86) 和 Windows。 - 配置完成后flutter sdk可以通过hdc server完成设备连接,也可参考[官方指导](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)。 +2. 切换FLUTTER_STORAGE_BASE_URL后需删除\/bin/cache 目录,并在项目中执行flutter clean后再运行 -6. 构建Hap任务时报错:Error: The hvigor depends on the npmrc file. Configure the npmrc file first. +3. 构建Hap任务时报错:Error: The hvigor depends on the npmrc file. Configure the npmrc file first. 请在用户目录`~`下创建文件`.npmrc`,该配置也可参考[DevEco Studio官方文档](https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/environment_config-0000001052902427-V3),编辑内容如下: @@ -170,7 +165,7 @@ Flutter SDK 仓库 @ohos:registry=https://repo.harmonyos.com/npm/ ``` -7. 查日志时,存在日志丢失现象。 +4. 查日志时,存在日志丢失现象。 解决方案:关闭全局日志,只打开自己领域的日志 ``` @@ -183,11 +178,11 @@ Flutter SDK 仓库 打印A00000/XComFlutterOHOS_Native的日志,需要设置hdc shell hilog -b D -D A00000 注:上面的设置在机器重启后会失效,如果要继续使用,需要重新设置。 ``` -8. 若Api11 Beta1版本的机器上无法启动debug签名的应用,可以通过将签名换成正式签名,或在手机端打开开发者模式解决(步骤:设置->通用->开发者模式) +5. 若Api11 Beta1版本的机器上无法启动debug签名的应用,可以通过将签名换成正式签名,或在手机端打开开发者模式解决(步骤:设置->通用->开发者模式) -9. 如果报`Invalid CEN header (invalid zip64 extra data field size)`异常,请更换Jdk版本,参见[JDK-8313765](https://bugs.openjdk.org/browse/JDK-8313765) +6. 如果报`Invalid CEN header (invalid zip64 extra data field size)`异常,请更换Jdk版本,参见[JDK-8313765](https://bugs.openjdk.org/browse/JDK-8313765) -10. 运行debug版本的flutter应用用到鸿蒙设备后报错(release和profile版本正常) +7. 运行debug版本的flutter应用用到鸿蒙设备后报错(release和profile版本正常) 1. 报错信息: `Error while initializing the Dart VM: Wrong full snapshot version, expected '8af474944053df1f0a3be6e6165fa7cf' found 'adb4292f3ec25074ca70abcd2d5c7251'` 2. 解决方案: 依次执行以下操作 1. 设置环境变量 `export FLUTTER_STORAGE_BASE_URL=https://flutter-ohos.obs.cn-south-1.myhuaweicloud.com` @@ -196,7 +191,7 @@ Flutter SDK 仓库 4. 运行 `flutter run -d $DEVICE --debug` 3. 补充信息: 运行android或ios出现类似错误,也可以尝试还原环境变量 FLUTTER_STORAGE_BASE_URL ,清除缓存后重新运行。 -11. Beta2版本的ROM更新后,不再支持申请有执行权限的匿名内存,导致debug运行闪退。 +8. Beta2版本的ROM更新后,不再支持申请有执行权限的匿名内存,导致debug运行闪退。 1. 解决方案:更新 flutter_flutter 到 a44b8a6d (2024-07-25) 之后的版本。 2. 关键日志: @@ -206,15 +201,15 @@ Flutter SDK 仓库 #22 at init (oh_modules/.ohpm/@ohos+flutter_ohos@g8zhdaqwu8gotysbmqcstpfpcpy=/oh_modules/@ohos/flutter_ohos/src/main/ets/embedding/engine/FlutterEngine.ets:133:7) ``` -12. 构建Hap命令直接执行`flutter build hap`即可,不再需要`--local-engine`参数,直接从云端获取编译产物。 +9. 构建Hap命令直接执行`flutter build hap`即可,不再需要`--local-engine`参数,直接从云端获取编译产物。 -13. 配置环境完成后执行 flutter 命令 出现闪退。 +10. 配置环境完成后执行 flutter 命令 出现闪退。 1. 解决方案:windows环境中添加git环境变量配置。 ``` export PATH=/cmd:$PATH ``` -14. 执行`flutter pub cache clean` 正常 执行`flutter clean` 报错,按照报错信息执行 update 命令也没有效果。 +11. 执行`flutter pub cache clean` 正常 执行`flutter clean` 报错,按照报错信息执行 update 命令也没有效果。 1. 解决方案:通过注释掉 build.json5 文件中的配置规避: "modules":[{ // 删除报错对应的整个对象 }] 2. 报错信息: ``` @@ -225,7 +220,7 @@ Flutter SDK 仓库 #https://gitee.com/openharmony-sig/flutter_samples/tree/master/ohos/docs/09_specifications/update_flutter_plugin_structure.md ``` -15. 执行`flutter build hap` 时遇到路径校验报错。 +12. 执行`flutter build hap` 时遇到路径校验报错。 1. 解决方案: ·打开 deveco 安装路径 D:\DevEco Studio\tools\hvigor\hvigor-ohos-plugin\res\schemas 下的 ohos-project-build-profile-schema.json文件。 ·在该文件中找到包含:"pattern": "^(\\./|\\.\\./)[\\s\\S]+$"的行,并删除此行。 @@ -240,7 +235,7 @@ Flutter SDK 仓库 #location: 'D:/work/videoplayerdemo/video_cannot_stop_at_background/ohos/build-profile.json:42:146' ``` -16. 执行`flutter build hap` 报错。 +13. 执行`flutter build hap` 报错。 1. 解决方案:打开 deveco 安装路径 D:\DevEco Studio\tools\hvigor\hvigor-ohos-plugin\src\model\module 下的 core-module-model-impl.js, 修改 findBelongProjectPath 方法(需要管理员权限,可另存为后替换) ``` @@ -260,7 +255,7 @@ Flutter SDK 仓库 #A crash report has been written to D:\work\videoplayerdemo\video_cannot_stop_at_background\flutter_03.log. ``` -17. 在.ohos的项目执行`flutter clean` 报错,然后再执行`flutter pub get`也报错。 +14. 在.ohos的项目执行`flutter clean` 报错,然后再执行`flutter pub get`也报错。 1. 解决方案:删除.ohos文件夹,重新flutter pub get 即可 2.报错信息: ``` -- Gitee From c5c771870543db3bd4fa96352c91a951f42e531f Mon Sep 17 00:00:00 2001 From: huangxiaoyao <976125628@qq.com> Date: Sat, 7 Sep 2024 16:33:12 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=9B=B4=E6=96=B0readme=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: huangxiaoyao <976125628@qq.com> --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 3d1c7d5fba..210f74d511 100644 --- a/README.md +++ b/README.md @@ -100,7 +100,7 @@ Flutter SDK 仓库 ``` # 进入工程根目录编译 - # 示例:flutter build hap [--target-platform ohos-arm64] [--local-engine=/src/out/ohos_release_arm64] --release + # 示例:flutter build hap [--target-platform ohos-arm64] --release flutter build hap --release ``` @@ -113,12 +113,12 @@ Flutter SDK 仓库 方式二:进入项目目录,直接运行安装到鸿蒙手机中 ```sh - flutter run --debug [--local-engine=/Users/lihui/Documents/flutter_engine/src/out/ohos_debug_unopt_arm64] -d + flutter run --debug -d ``` 5. 构建app包命令: ``` - # 示例:flutter build app --release [--local-engine=/src/out/ohos_release_arm64] local-engine为可选项 + # 示例:flutter build app --release flutter build app --release ``` @@ -137,9 +137,9 @@ Flutter SDK 仓库 | devices | 已连接设备查找 | flutter devices | | install | 应用安装 | flutter install -t \ \ | | assemble | 资源打包 | flutter assemble | -| build | 测试应用构建 | flutter build hap --debug [--target-platform ohos-arm64] [--local-engine=\<兼容ohos的debug engine产物路径\>] | -| build | 正式应用构建 | flutter build hap --release [--target-platform ohos-arm64] [--local-engine=\<兼容ohos的release engine产物路径\>] | -| run | 应用运行 | flutter run [--local-engine=\<兼容ohos的engine产物路径\>] | +| build | 测试应用构建 | flutter build hap --debug [--target-platform ohos-arm64] | +| build | 正式应用构建 | flutter build hap --release [--target-platform ohos-arm64] | +| run | 应用运行 | flutter run | | attach | 调试模式 | flutter attach | | screenshot | 截屏 | flutter screenshot | | pub | 获取依赖 | flutter pub get | -- Gitee