更新内容
- flutter插件项目中的ohos目录,将从OpenHarmony工程project结构,替换为OpenHarmony工程module结构。
- flutter工程中引用的har文件,统一放到 ohos/har 目录下。
- 更新后需要删除ohos插件中的旧模块目录。
更新步骤
以flutter_flutter中的 integration_test 为例的更新步骤如下:
1. integration_test/ohos 目录由 project 结构修改为 module 结构
💡 注意:以下命令默认在类 Unix 环境(Linux/macOS)下运行。Windows 用户请使用 WSL 或自行适配 PowerShell 命令。
cdflutter_flutter/packages/integration_testmvohos/ohos ./ohos2rm-rfohosmvohos2 ohoscdexample flutter pub get flutter build hap--debug执行flutter run后会出现报错,需要修改配置文件中的name字段,还需要修改 hvigorfile.ts。
2. 代码更新
2.1 修改 integration_test/ohos/oh-package.json5
修改前:
{"name":"ohos","version":"1.0.0","description":"Please describe the basic information.","main":"","author":"","license":"","dependencies": { },"devDependencies": {"@ohos/hypium":"1.0.11"} }修改后:
{"name":"integration_test",//和插件名(pubspec.yaml中的name)保持一致"version":"1.0.0","description":"Please describe the basic information.","main":"","author":"","license":"Apache-2.0","dependencies": {"@ohos/flutter_ohos":"file:har/flutter.har", } }2.2 修改 integration_test/ohos/src/main/module.json5
修改前:
{"module": {"name":"ohos","type":"har","deviceTypes": ["default","tablet","2in1"] } }修改后:
{"module": {"name":"integration_test",//和插件名(pubspec.yaml中的name)保持一致"type":"har","deviceTypes": ["default","tablet","2in1"] } }2.3 修改 integration_test/ohos/hvigorfile.ts
修改前:
import{ appTasks }from'@ohos/hvigor-ohos-plugin'; exportdefault{system: appTasks,/* Built-in plugin of Hvigor. It cannot be modified. */plugins:[]/* Custom plugin to extend the functionality of Hvigor. */}修改后:
export{ harTasks }from'@ohos/hvigor-ohos-plugin';检查是否可以正常运行
- 使用 DevEco-Studio 打开 integration_test/example, 配置签名。
- 使用命令运行example。
cdintegration_test/example flutter run -d$DEVICE--debug运行OpenHarmony应用时,需要注意配置文件中 har文件 的引用
引用的har文件在 ohos/har 目录下。
integration_test/example/ohos/oh-package.json5
修改后:
{//..."dependencies": {"@ohos/flutter_ohos":"file:./har/flutter.har"},"overrides": {"@ohos/flutter_ohos":"file:./har/flutter.har"} }integration_test/example/ohos/entry/oh-package.json5
修改前
{//..."dependencies": {"@ohos/integration_test":"file:./har/integration_test.har", } }修改后
{//..."dependencies": {"integration_test":"file:../har/integration_test.har", } }可能遇到的问题
1. no such file or directory
日志信息:
hvigorERROR:ENOENT: no such file or directory, stat'xxx/flutter_flutter/packages/integration_test/ohos/build/default/cache/default/default@packageHar/ohos/oh_modules/@ohos/flutter_ohos'解决方案:
手动删除报错信息提示的文件。
2. operation not permitted, symlink
日志信息:
hvigorERROR:ENOENT: operation not permitted, symlink'xxx/webview_flutter_ohos/ohos/webview_flutter/oh_modules/.ohpm/@ohos+flutter_ohos@file+libs+flutter.har/oh_modules/@ohos/flutter_ohos' ->'xxx/webview_flutter_ohos/ohos/build/default/cache/default/default@PackageHar/webview_flutter/oh_modules/@ohos/flutter_ohos'解决方案:
har结构整改前的部分目录,在更新代码后需要手动删除,例如
- flutter_packages/packages/webview_flutter_ohos/ohos/webview_flutter
- flutter_packages/packages/path_provider_ohos/ohos/path_provider
- flutter_packages/packages/file_selector_ohos/ohos/FileSelector