HarmonyOS鸿蒙Next中Flutter适配出现当前报错,应该如何解决?

HarmonyOS鸿蒙Next中Flutter适配出现当前报错,应该如何解决? 【问题描述】:flutter适配鸿蒙出现报错,应该如何解决?

【问题现象】: cke_2883.png cke_280.png

【版本信息】:FlutterSDK3.22.0


更多关于HarmonyOS鸿蒙Next中Flutter适配出现当前报错,应该如何解决?的实战教程也可以访问 https://www.itying.com/category-92-b0.html

6 回复

开发者您好,

请问您使用的是3.22.0-ohos版本,HarmonyOS化的chewie版本是否是fluttertpc_chewie

本地测试可以正常使用,使用的flutter版本3.22.0-ohos,flutter源码地址:FLUTTER_GIT_URL,Dart version 3.4.0。chewie依赖地址:fluttertpc_chewie,基于chewie@1.8.5开发,测试代码:

import 'package:flutter_chewie/app/app.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(
    const ChewieDemo(),
  );
}
import 'package:flutter/material.dart';

// ignore: avoid_classes_with_only_static_members
class AppTheme {
  static final light = ThemeData(
    brightness: Brightness.light,
    useMaterial3: true,
    colorScheme: const ColorScheme.light(secondary: Colors.red),
    disabledColor: Colors.grey.shade400,
    visualDensity: VisualDensity.adaptivePlatformDensity,
  );

  static final dark = ThemeData(
    brightness: Brightness.dark,
    colorScheme: const ColorScheme.dark(secondary: Colors.red),
    disabledColor: Colors.grey.shade400,
    useMaterial3: true,
    visualDensity: VisualDensity.adaptivePlatformDensity,
  );
}

app.dart,里面的链接可以根据具体使用情况调整。

chewie安装使用参考安装与使用

更多关于HarmonyOS鸿蒙Next中Flutter适配出现当前报错,应该如何解决?的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


开发者您好,本地测试使用以下方案正常,在dependency_overrides中指定chewie的版本

dependencies:
  flutter:
    sdk: flutter
  chewie:
    git:
      url: https://gitcode.com/openharmony-sig/fluttertpc_chewie.git

  flutter_widget_from_html:
    git: 
      url: https://gitcode.com/openharmony-sig/flutter_widget_from_html.git
      path: ./packages/enhanced
      ref: br_v0.15.2_ohos

dev_dependencies:
  chewie_ohos:
    git:
      url: https://gitcode.com/openharmony-sig/fluttertpc_chewie.git
      path: ohos

dependency_overrides:
  chewie:
    git:
      url: https://gitcode.com/openharmony-sig/fluttertpc_chewie.git

flutter_widget_from_html: git: url: "https://gitcode.com/openharmony-sig/flutter_widget_from_html.git" path: "packages/enhanced" ref: "br_v0.15.2_ohos"

问题出现在这个插件的,他的依赖是chewie1.0.0,所以单独升级chewie,不起作用,是否可以结合上述的插件调试下?

flutter_widget_from_html:
  git:
    url: "https://gitcode.com/openharmony-sig/flutter_widget_from_html.git"
    path: "packages/enhanced"
    ref: "br_v0.15.2_ohos"

问题出现在这个插件的,他的依赖是chewie1.0.0,所以单独升级chewie,不起作用,是否可以结合上述的插件调试下?

鸿蒙Next中Flutter适配报错,主要原因是鸿蒙Next不再支持Android原生库。

解决步骤:

  1. 确保Flutter版本≥3.19.0,并启用HarmonyOS支持。
  2. pubspec.yaml中检查并移除对Android特定插件(如android_intent)的依赖,替换为鸿蒙兼容版本或移除。
  3. 运行flutter clean清除缓存,重新构建项目。
  4. 若使用第三方插件,需确认其是否已适配鸿蒙Next,未适配则需等待更新或寻找替代方案。

从您提供的错误信息来看,核心问题是Flutter引擎在HarmonyOS Next上运行时,其Skia图形后端无法找到或正确加载名为libopenharmony.so的关键本地库。

错误分析:

  1. 根本原因:Flutter引擎在初始化其图形渲染接口(具体是GrGL接口)时,尝试加载一个名为libopenharmony.so的动态库,但系统未能找到该库。这通常意味着当前Flutter SDK版本或您项目配置的Flutter引擎(engine)尚未包含或未正确指向为HarmonyOS Next编译的特定图形后端实现。
  2. 版本关联:您使用的Flutter SDK 3.22.0是一个通用版本,其默认的iOS/Android引擎二进制文件不包含针对HarmonyOS Next的适配层。HarmonyOS Next需要特定的引擎变体(Flutter Engine with OpenHarmony backend)。

解决方案: 要解决此问题,您需要使用为HarmonyOS Next专门构建或配置的Flutter工具链和引擎。

  1. 使用HarmonyOS Next专属的Flutter版本

    • 目前,Flutter对HarmonyOS Next的适配主要由华为官方在推进。您需要获取华为官方提供的、针对HarmonyOS Next适配的Flutter SDK分发版,而不是直接从flutter.dev下载的标准版。
    • 该专属版本会包含一个修改后的Flutter引擎,该引擎集成了适用于OpenHarmony的图形后端(替换了原生的iOS/Android后端),从而能够正确调用libopenharmony.so等系统库。
  2. 检查并配置构建目标

    • 确保您的flutter命令行工具、项目配置(如flutter_config)都指向了正确的HarmonyOS Next工具链和构建目标(ohos)。
    • 运行flutter doctor -v,检查输出中是否识别到了HarmonyOS的工具链。标准Flutter SDK不会包含此识别。

具体操作步骤(概要):

  1. 替换SDK:从华为开发者联盟官网或HarmonyOS应用开发的相关资源渠道,下载并安装官方提供的“HarmonyOS Next Flutter SDK”或“Flutter for HarmonyOS”工具包。
  2. 更新环境:将您的PATH环境变量指向新SDK中的flutter/bin目录,替代原有的Flutter路径。
  3. 清理并重建项目
    • 在项目根目录下,执行 flutter clean 彻底清理之前的构建缓存。
    • 使用新的Flutter命令重新获取依赖并构建:flutter pub get 然后 flutter build ohos (或对应的HarmonyOS构建命令)。
  4. 验证:重新运行应用,上述关于libopenharmony.so的加载错误应被解决。

总结: 此错误非代码逻辑问题,而是环境配置问题。关键在于必须使用华为官方为HarmonyOS Next定制的Flutter开发套件,该套件中的引擎已集成必要的本地适配层。请使用官方指定渠道获取正确的开发工具。

回到顶部