HarmonyOS鸿蒙Next中使用Flutter做的项目想要运行到模拟器中报错

HarmonyOS鸿蒙Next中使用Flutter做的项目想要运行到模拟器中报错 我运行在真机上正常,不过我的真机版本5.0.0.135的我想要试试6.0,所以想要允许到模拟器,却出现下面错误

cke_139.png

cke_510.png cke_1712.png

cke_26495.png


更多关于HarmonyOS鸿蒙Next中使用Flutter做的项目想要运行到模拟器中报错的实战教程也可以访问 https://www.itying.com/category-92-b0.html

5 回复

不要纠结,真机升级到6.0测试吧

更多关于HarmonyOS鸿蒙Next中使用Flutter做的项目想要运行到模拟器中报错的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在HarmonyOS Next中运行Flutter项目到模拟器报错,通常是由于Flutter SDK与鸿蒙Next的兼容性问题。鸿蒙Next不再支持传统的Android模拟器,需使用华为提供的DevEco Studio和鸿蒙模拟器。请确保已安装鸿蒙Next的Flutter插件,并在pubspec.yaml中配置鸿蒙适配依赖。检查Flutter通道是否支持鸿蒙,目前可能需要使用特定分支或版本。

根据你提供的错误信息,问题核心在于Flutter引擎的ABI版本与HarmonyOS Next 6.0模拟器的ABI不兼容

具体分析如下:

  1. 根本原因:错误日志显示 flutter.so 加载失败,提示 dlopen failed: "/data/app/.../lib/arm/libflutter.so" is 32-bit instead of 64-bit。这表明你的Flutter项目编译生成了32位(armeabi-v7a) 的库文件,而你所使用的HarmonyOS Next 6.0模拟器很可能是64位(arm64-v8a) 的系统。ABI不匹配导致系统无法加载应用库。

  2. 问题背景:HarmonyOS Next 6.0作为新一代系统,其模拟器很可能仅支持64位应用。而你的Flutter项目默认或当前的构建配置是针对32位ARM架构的。

解决方案:

你需要将Flutter项目构建目标调整为64位ARM架构。

操作步骤:

  1. 检查并修改Flutter构建配置

    • 打开你的Flutter项目。
    • 定位到 android 目录(如果你的Flutter混合工程包含Android层)或直接关注Flutter的构建配置。
    • 关键点在于确保Flutter引擎和你的Dart代码编译为 arm64-v8a ABI。
    • 对于纯Flutter项目,主要配置在 android/app/build.gradle 文件中。你需要确保NDK的ABI过滤器包含 arm64-v8a,并排除32位ABI。在 android -> defaultConfigsplits 块中配置,示例:
      android {
          defaultConfig {
              ndk {
                  abiFilters 'arm64-v8a' // 只保留64位ARM
                  // 移除 'armeabi-v7a'
              }
          }
      }
      
    • 如果项目中有自定义的CMakeLists.txt或使用其他原生依赖,也需确保它们支持64位构建。
  2. 清理并重新构建

    • 在项目根目录执行 flutter clean 清理之前的构建缓存。
    • 然后重新运行到模拟器:flutter run 或通过IDE(DevEco Studio/IntelliJ)启动。
  3. 验证模拟器架构

    • 在DevEco Studio的设备管理器中,确认你选择的HarmonyOS Next 6.0模拟器是64位版本。

总结:此问题是由于Flutter应用构建的二进制文件ABI(32位)与模拟器系统要求的ABI(64位)不一致导致的。通过调整Flutter的构建配置,指定生成 arm64-v8a 架构的库文件,即可解决。

回到顶部