HarmonyOS鸿蒙Next中开源鸿蒙使用Flutter插件,运行应用报错

HarmonyOS鸿蒙Next中开源鸿蒙使用Flutter插件,运行应用报错 【问题描述】:开发开源鸿蒙版本的app,我在matePad Pro上可以在正常运行,但是在工程样机上报这个错误:

Reason:TypeError
Error name:TypeError
Error message:Cannot read property nativeInit of undefined

报错信息是下列这行引入:

import flutter from 'libflutter.so';

【问题现象】:

Device info:A901
Build info:OpenHarmony 5.0.0.710
Fingerprint:8b0d35a879962205dafd7c0f78fd6df2852f62e8a133c6de14808e800481428a
Module name:com.ibatch.ibatchmesapp
Version:1.0.0
VersionCode:1
PreInstalled:No
Foreground:Yes
Pid:23149
Uid:20010044
Reason:TypeError
Error name:TypeError
Error message:Cannot read property nativeInit of undefined
Stacktrace:
    at init (oh_modules/.ohpm/@ohos+flutter_ohos@jpswocp16tgbfqocsejtgtiuigehmp09+b216z6sd7y=/oh_modules/@ohos/flutter_ohos/src/main/ets/embedding/engine/FlutterNapi.ets:93:39)
    at ensureInitializationComplete (oh_modules/.ohpm/@ohos+flutter_ohos@jpswocp16tgbfqocsejtgtiuigehmp09+b216z6sd7y=/oh_modules/@ohos/flutter_ohos/src/main/ets/embedding/engine/loader/FlutterLoader.ets:273:22)
    at checkLoader (oh_modules/.ohpm/@ohos+flutter_ohos@jpswocp16tgbfqocsejtgtiuigehmp09+b216z6sd7y=/oh_modules/@ohos/flutter_ohos/src/main/ets/embedding/engine/FlutterEngineGroup.ets:36:14)
    at setupFlutterEngine (oh_modules/.ohpm/@ohos+flutter_ohos@jpswocp16tgbfqocsejtgtiuigehmp09+b216z6sd7y=/oh_modules/@ohos/flutter_ohos/src/main/ets/embedding/ohos/FlutterAbilityAndEntryDelegate.ets:224:13)
    at onAttach (oh_modules/.ohpm/@ohos+flutter_ohos@jpswocp16tgbfqocsejtgtiuigehmp09+b216z6sd7y=/oh_modules/@ohos/flutter_ohos/src/main/ets/embedding/ohos/FlutterAbilityAndEntryDelegate.ets:69:12)
    at onCreate (oh_modules/.ohpm/@ohos+flutter_ohos@jpswocp16tgbfqocsejtgtiuigehmp09+b216z6sd7y=/oh_modules/@ohos/flutter_ohos/src/main/ets/embedding/ohos/FlutterAbility.ets:78:21)

【版本信息】:工程机的系统是openHarmony 5.0.0.710 发行版本是3.0.710,目前加入的插件仅有下面几个:

flutter:
  sdk: flutter
webview_flutter: ^4.4.2
file_picker: ^7.0.2
permission_handler:^11.0.1
shared_preferences:^2.2.2
printing: ^5.12.0
pdf: ^3.10.8

【复现代码】:无

【尝试解决方案】:遇到问题和该社区问答相同:https://developer.huawei.com/consumer/cn/forum/topic/0203199448515034300

尝试过该问答内的解决方案,包括:更改abi版本、清缓存、重启模拟器等方案,皆无法解决问题


更多关于HarmonyOS鸿蒙Next中开源鸿蒙使用Flutter插件,运行应用报错的实战教程也可以访问 https://www.itying.com/category-92-b0.html

8 回复

1、开发者你好,辛苦你这边提供一下flutter_flutter版本号,当前部分版本模拟器不支持;

2、提供一下您这边使用的开发环境是windows还是mac(arm/x86)。

更多关于HarmonyOS鸿蒙Next中开源鸿蒙使用Flutter插件,运行应用报错的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


开发者你好,可以试下 flutter build hap --target-platform ohos-x64 --debug 这个命令编模拟器的包。

我的是真机,工程机,系统是openHarmony 5.0.0.710 发行版本是3.0.710

模拟器是harmonyos ,没问题

请问该问题是如何解决的呢

我的是harmonyOS应用,工程机是OpenHarmony的,改一下build-profile.json5文件,切换成OpenHarmony项目就行了

在HarmonyOS Next中使用Flutter插件报错,通常涉及插件与OpenHarmony内核的兼容性问题。Flutter插件可能依赖特定平台接口,而OpenHarmony的API与Android/iOS存在差异。需检查插件是否支持OpenHarmony,或存在未适配的本地代码。建议查看Flutter插件的OpenHarmony支持状态,并确认其依赖的Native API在OpenHarmony中是否可用。

这个错误 Cannot read property nativeInit of undefined 表明 libflutter.so 动态库未能正确加载或初始化。从你的描述来看,在商用设备(MatePad Pro)上正常,但在工程样机(OpenHarmony 5.0.0.710)上失败,这通常指向设备系统环境或构建配置的差异。

核心问题在于 import flutter from 'libflutter.so'; 这行代码。在HarmonyOS/OpenHarmony的NAPI框架中,这行代码期望从指定的动态库中加载一个名为 flutter 的模块。错误信息显示 undefined,意味着系统没有找到或无法正确初始化这个模块。

结合你提到的工程样机信息,最可能的原因和排查方向如下:

  1. Flutter引擎库缺失或版本不匹配:工程样机上的OpenHarmony系统镜像可能没有预置Flutter运行时库,或者预置的库版本与你的应用构建时链接的版本不兼容。在商用设备上,HarmonyOS Next通常会完整预置。

    • 检查:确认工程样机的系统版本是否确实支持你使用的Flutter for OpenHarmony版本。需要核对Flutter插件(flutter_ohos)要求的系统API版本与设备系统版本是否匹配。
  2. 动态库加载路径或权限问题:虽然错误指向导入语句,但根本原因可能是 libflutter.so 或其依赖的库在设备上不存在、路径错误,或应用没有权限加载它。

    • 检查:查看你的应用安装包(.hap),确认 libflutter.so 是否被打包到正确的ABI目录下(例如 arm64-v8a)。工程样机(A901)的架构可能与商用平板不同。
    • 检查:在 module.json5 中,确认 "compileMode" 设置为 "esmodule",并且 "buildMode" 设置正确。对于包含Native库的应用,通常需要 "buildMode": "release" 进行完整构建。
  3. Flutter插件(flutter_ohos)的OHPM依赖问题:堆栈跟踪显示路径中包含OHPM包的哈希ID,这表示Flutter框架是通过OHPM管理的。可能存在缓存或版本冲突。

    • 操作:尝试彻底清理OHPM缓存和项目构建缓存。可以删除项目根目录下的 oh_modules 文件夹、build 文件夹以及 openharmony 子目录下的 build 文件夹,然后重新执行 ohpm install 和构建。
  4. 工程样机系统镜像的完整性:工程样机的系统镜像可能是一个早期或测试版本,其ArkTS/NAPI运行时环境或系统库可能存在不完整性,导致动态库加载机制与商用版本有差异。

    • 操作:如果可能,尝试将你的应用在另一台同型号工程样机或更新系统版本的样机上运行,以排除单设备问题。

建议的排查步骤:

  1. 核对环境:确保你的DevEco Studio、SDK、以及Flutter for OpenHarmony插件版本与OpenHarmony 5.0.0.710系统要求兼容。
  2. 清理并完全重建
    • 删除项目中的 oh_modulesbuild(所有)目录。
    • 在项目根目录运行 ohpm install
    • 在DevEco Studio中执行 Build > Clean Project,然后进行 Build > Build HAP(s)
  3. 检查HAP包内容:将构建生成的.hap文件后缀改为.zip并解压,检查 lib/arm64-v8a/(或其他对应ABI目录)下是否存在 libflutter.so 文件。同时检查 ets/module.json5 中的配置。
  4. 简化测试:创建一个全新的、仅包含最基础Flutter for OpenHarmony模板代码的测试工程,在该工程样机上运行,以判断是项目特定问题还是环境普遍问题。
  5. 查看设备日志:通过 hdc shell 连接工程样机,使用 hilog 命令抓取更详细的应用运行日志,可能包含动态库加载失败的具体原因。

由于问题特定于工程样机环境,根本原因很可能在于该设备系统的Flutter运行时支持不完整。如果上述步骤无法解决,需要关注你所使用的Flutter for OpenHarmony SDK或插件是否有针对OpenHarmony 5.0.0.710的特定版本或已知问题。

回到顶部