HarmonyOS 鸿蒙Next Flutter打包成module的形式嵌入原生工程的若干问题

发布于 1周前 作者 ionicwang 来自 鸿蒙OS

HarmonyOS 鸿蒙Next Flutter打包成module的形式嵌入原生工程的若干问题 Flutter打包成module的形式嵌入鸿蒙原生工程遇到了若干问题,请问是否有相关文档?

1、flutter create -t module 生成模版工程
2、flutter build har --local-engine=xxx,进行打包
3、引入har包,class EntryAbility extends FlutterAbility
4、通过FlutterPage打开页面
FlutterPage页面无法正常打开,经分析,embedding/engine/loader/FlutterLoader.ets文件,copyICU函数:

await this.context.resourceManager.getRawFileContent(this.flutterApplicationInfo!.flutterAssetsDir + "/icudtl.dat")

读取资源失败导致。简单通过try catch规避的话,页面能正常展示,就是图片等资源会缺失。


更多关于HarmonyOS 鸿蒙Next Flutter打包成module的形式嵌入原生工程的若干问题的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

2 回复

你好,当前提供两种混入方式

  1. 编译生成 flutter_module.har
flutter build har --local-engine=/Users/xxx/ohos/src/out/ohos_debug_unopt_arm64 --debug
  1. 复制 EntryAbility.ets 和 Index.ets 到 鸿蒙工程 中
cp my_flutter_module/.ohos/entry/src/main/ets/entryability/EntryAbility.ets MyApplication/entry/src/main/ets/entryability/EntryAbility.ets
cp my_flutter_module/.ohos/entry/src/main/ets/pages/Index.ets MyApplication/entry/src/main/ets/pages/Index.ets

一:ohos工程 引用 flutter_module.har

  1. 复制 flutter_module.har到鸿蒙工程中
cp my_flutter_module/.ohos/flutter_module/build/default/outputs/default/flutter_module.har MyApplication/har/flutter_module.har
  1. 修改 MyApplication/entry/oh-package.json5
{
  // ...
  "dependencies": {
    "@ohos/flutter_module": "../har/flutter_module.har"
  }
}
  1. 使用 Deveco Studio 配置 MyApplication 的签名
  2. 运行 MyApplication

二:ohos工程 直接引用 flutter_module 源码

  1. 复制 flutter_module 源码
cp -r my_flutter_module/.ohos/flutter_module MyApplication/
  1. 修改 MyApplication/build-profile.json5
{
  // ...
  "modules": [
    {
      "name": "entry",
      "srcPath": "./entry",
      "targets": [
        {
          "name": "default",
          "applyToProducts": [
            "default"
          ]
        }
      ]
    },
    // 以下为新增内容
    {
      "name": "flutter_module",
      "srcPath": "./flutter_module",
      "targets": [
        {
          "name": "default",
          "applyToProducts": [
            "default"
          ]
        }
      ]
    }
  ]
}
  1. 修改 MyApplication/entry/oh-package.json5
{
  // ...
  "dependencies": {
    "@ohos/flutter_module": "../flutter_module"
  }
}
  1. 使用 Deveco Studio 配置 MyApplication 的签名
  2. 运行 MyApplication

更多关于HarmonyOS 鸿蒙Next Flutter打包成module的形式嵌入原生工程的若干问题的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


针对“HarmonyOS 鸿蒙Next Flutter打包成module的形式嵌入原生工程的若干问题”,以下是一些直接相关的回答:

在HarmonyOS中将Flutter打包为module并嵌入原生工程时,可能会遇到以下常见问题及解决方法:

  1. 依赖冲突:确保Flutter module和原生工程的依赖库版本兼容,避免版本冲突导致编译错误。

  2. 配置同步:在Flutter module和原生工程中正确配置build.gradle等文件,确保编译配置同步。

  3. 插件支持:检查所需插件是否支持HarmonyOS,部分插件可能仅支持Android或iOS,需要寻找或开发HarmonyOS版本的插件。

  4. 通信机制:实现Flutter与原生工程之间的通信,通常通过平台通道(Platform Channel)进行,确保通信机制正确实现以避免数据传递错误。

  5. 资源文件:合理管理Flutter module和原生工程中的资源文件,避免资源冲突或加载失败。

  6. 编译路径:确保编译路径设置正确,避免路径错误导致编译失败。

若遇到具体问题,如编译错误、运行时崩溃等,需根据错误日志进行详细分析。通常,这些日志会提供足够的信息来定位问题原因。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部