写点什么

harmony_flutter_ 更新 Flutter 插件项目结构

作者:flfljh
  • 2024-12-18
    湖南
  • 本文字数:1754 字

    阅读完需:约 6 分钟

更新 Flutter 插件项目结构

更新内容

  • flutter 插件项目中的 ohos 目录,将从鸿蒙工程 project 结构,替换为鸿蒙工程 module 结构。

  • flutter 工程中引用的 har 文件,统一放到 ohos/har 目录下。

  • 更新后需要删除 ohos 插件中的旧模块目录。

更新步骤

flutter_flutter 中的 integration_test 为例的更新步骤如下

1. integration_test/ohos 目录由 project 结构修改为 module 结构

cd flutter_flutter/packages/integration_testmv ohos/ohos ./ohos2rm -rf ohosmv ohos2 ohoscd exampleflutter pub getflutter 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';
export default { 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';
复制代码

检查是否可以正常运行

  1. 使用 DevEco-Studio 打开 integration_test/example, 配置签名

  2. 使用命令运行 example


cd integration_test/exampleflutter run -d $DEVICE --debug
复制代码

运行鸿蒙应用时,需要注意配置文件中 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

日志信息:


hvigor ERROR: 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

日志信息:


hvigor ERROR: 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 结构整改前的部分目录,在更新代码后需要手动删除,例如


  1. flutter_packages/packages/webview_flutter_ohos/ohos/webview_flutter

  2. flutter_packages/packages/path_provider_ohos/ohos/path_provider

  3. flutter_packages/packages/file_selector_ohos/ohos/FileSelector


用户头像

flfljh

关注

还未添加个人签名 2024-10-29 加入

还未添加个人简介

评论

发布
暂无评论
harmony_flutter_更新Flutter插件项目结构_flfljh_InfoQ写作社区