HarmonyOS鸿蒙Next中已有flutter项目鸿蒙化,编译正常,启动白屏

HarmonyOS鸿蒙Next中已有flutter项目鸿蒙化,编译正常,启动白屏 请教各位大佬,如何解决


更多关于HarmonyOS鸿蒙Next中已有flutter项目鸿蒙化,编译正常,启动白屏的实战教程也可以访问 https://www.itying.com/category-92-b0.html

17 回复

应该是你的一些插件没有适配鸿蒙导致的。看看你有哪些插件是在main里面初始化的。逐个排查一下

更多关于HarmonyOS鸿蒙Next中已有flutter项目鸿蒙化,编译正常,启动白屏的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


是shared_preferences的问题,谢谢

参考:Flutter开发HarmonyOS应用典型问题集

应用编译成功,安装后出现白屏的情况可能是使用的engine产物和运行模式不一致,导致运行白屏。 解决方案:运行或编译命令中,使用的engine产物和运行模式需要保持一致。 参考链接:https://gitcode.com/openharmony-tpc/flutter_samples/tree/master/ohos/docs/08_FAQ/ 或者在编译中出现错误,可参考文档修改:https://gitcode.com/openharmony-tpc/flutter_flutter/tree/3.22.0-ohos

大佬,参考链接打不卡

更新了~

大佬,我小白不是太理解参考链接里面的目的,是除了flutter环境自带的engine外,还要再构建一个engine吗?我的开发设备是win11,在flutter环境目录下发现了engine目录,在bin/cache/artifacts/engine目录下也发现了 ohos-arm64、ohos-x64、windows-x64的flutter.har,使用的鸿蒙手机模拟器是x86的。

cke_3531.png

cke_4494.png

我的情况一共有三个问题,谢谢各位回答的大佬。

  1. 依赖在编译过程中没有报错,在main里面逐个排除后,是shared_preferences不兼容。
  2. engine产物hat的问题,大佬们说他们的flutter.hat的路径我没查到,使用flutter clean 也没用,后来查看我的产物是在flutter_flutter\bin\cache\artifacts\engine下面的,我手动删除后,执行flutter run -debug才正常
  3. 我是win系统,使用的模拟器调试,后来看到要mac(arm)才行,用真机就可以了

尊敬的开发者,您好,关于您反馈的问题:

应用在编译成功的情况下,安装运行时出现白屏。

原因:
使用的engine产物和运行模式不一致,导致运行白屏。

解决方案:
可参考文档:应用编译成功,安装后出现白屏的情况,您可以先执行flutter clean命令,清理旧编译产物,然后通过flutter run命令执行时,明确指定运行模式,如flutter run -d device_id --debug

参考这个回复,看下是不是调试flutter.har包和发布的包混用了,删除现有的ohos/har/flutter.har,重新编译生成试试。https://developer.huawei.com/consumer/cn/forum/topic/0207211149095004035?fid=0109140870620153026

试过多次清理项目,重新构建。我没找到ohos/har目录

cke_1385.png

要先flutter run生成这个har包,再编译hap包

执行这个命令也没有生成,在flutter sdk环境目录bin/cache下倒是有har

  1. Flutter Engine初始化问题
import { FlutterAbility } from '@ohos/flutter_ohos';

export default class EntryAbility extends FlutterAbility {
  onCreate(want, launchParam) {
    // 确保调用了 super.onCreate
    super.onCreate(want, launchParam);
  }
  
  onWindowStageCreate(windowStage) {
    // 检查这里是否正确设置了主窗口
    super.onWindowStageCreate(windowStage);
  }
}
  1. webview_flutter_android: ^4.11.0 webview_flutter_android 是Android 专属实现

    path_provider
    i mage_picker:
    video_player
    查看是否ohos后缀版本

  2. 尝试清理所有产物flutter clean → 删除 ohos/entry/build → flutter pub get 查看 ohos插件注册 ohos/entry/src/main/ets/plugin/GeneratedPluginRegistrant.ets

大佬还是不行,我把你提到的依赖全都去掉了, cke_855.png cke_1421.png cke_1721.png cke_2105.png

请提供需要转换的HTML内容,我才能按照要求处理。您粘贴的内容是链接地址,我无法直接访问。请将HTML代码粘贴在此处。

编译正常但启动白屏,常见原因包括:Flutter引擎启动时未正确绑定鸿蒙平台通道;ohos插件中未注册FlutterActivity或FlutterFragment;Dart入口main()中未调用runApp()或Widget树构建异常;鸿蒙侧manifest文件中未配置主页面路径或缺失资源索引。检查这些配置项即可定位。

针对Flutter项目鸿蒙化后启动白屏、编译正常的情况,通常是在引擎初始化或页面渲染环节出现异常。可排查以下关键点:

  • 检查 MainAbility 是否正确继承自 FlutterActivity,并在 onCreate 中调用了 super.onCreate(savedInstanceState),确保 Flutter 引擎正常启动。
  • 确认自定义的 FlutterActivity 或容器是否通过 FlutterEngine 实例的 getDartEntrypointExecutor() 执行了 Dart 入口,且入口函数名与 main.dart 中的一致。
  • 查看 DevEco Log 或 hilog 输出,搜索 “Flutter” 相关异常,常见错误包括 so 库缺失、插件未注册等。缺少平台插件实现可能导致引擎初始化失败白屏。
  • 检查 pubspec.yaml 中引入的插件是否已适配 HarmonyOS,部分第三方插件没有鸿蒙平台代码,可暂时注释掉并重新编译测试。
  • 若使用了自定义 FlutterEngine,需确保在 onStart 前已通过 FlutterEngineCache 或直接传递引擎实例给 FlutterView,否则渲染内容为空。
  • 尝试最小化复现:新建一个 Hello World 项目逐步添加原有配置,定位是项目代码问题还是引擎集成问题。
回到顶部