欢迎光临
我们一直在努力

Flutter三方库torch_light鸿蒙化实战笔记

Flutter三方库鸿蒙化实战笔记


一、核心设计思想

开发 Flutter 三方库需兼顾跨平台(Android/iOS/鸿蒙 等),核心是:抽象跨平台接口 + 鸿蒙端实现 本文目标:已知三房库已实现Android/iOS,需要适配鸿蒙,接下来看操作步骤


二、环境搭建与项目创建

参考:【开源鸿蒙Flutter跨平台开发学习笔记 】DAY01:在 Mac 上搭建 flutter 跨平台开发环境


三、项目结构设计

标准三方库结构(flutter_my_plugin)

flutter_my_plugin/
├─ lib/
│ ├─ flutter_my_plugin.dart # 对外暴露的 Dart API(抽象层)
│ └─ src/
│ ├─ interface/ # 跨平台接口抽象
│ │ └─ my_plugin_interface.dart
│ └─ method_channel/ # MethodChannel 实现(统一调用原生)
├─ android/ # Android 端实现
├─ ios/ # iOS 端实现
├─ ohos/ # 鸿蒙端实现(核心)
│ ├─ entry/ # 鸿蒙原生代码
│ └─ ohos_build.gradle # 鸿蒙构建配置
├─ example/ # 示例工程(包含鸿蒙运行示例)
├─ pubspec.yaml # 库配置(声明支持 ohos 平台)
└─ README.md # 使用文档(标注鸿蒙适配说明)


四、三方库适配流程

1. 添加ohos目录

  • 在插件项目根目录下新增 ohos 目录
  • 用于存放鸿蒙平台的原生实现代码

2. 实现原生功能

  • 使用 ArkTS 或 NAPI 实现插件所需的原生功能
  • 包括系统API调用和权限处理

3. 定义通信接口

  • 通过 Platform Channel 或 FFI 在Dart层和鸿蒙原生层之间建立通信机制

4. 修改 pubspec.yaml

  • 声明对 ohos 平台的支持
  • 指定鸿蒙原生代码的入口

5. 调试与发布

  • 在鸿蒙设备或模拟器上测试适配后的插件
  • 确保功能正常后发布

适配要点

  • 关注平台差异,合理处理权限申请、文件系统路径、后台任务限制等问题
  • 通过模块化设计和平台判断隔离,确保代码的可维护性和兼容性

五、实操步骤

  • 获取源码 进入 pub.dev,找到目标三方库,点击其 GitHub 地址,将代码克隆到本地。

    git clone https://github.com/svprdga/torch_light.git

  • 创建鸿蒙插件模板 在本地创建一个鸿蒙插件项目,使用如下命令:

    flutter create –template=plugin –platforms=ohos –org com.torch_flashlight .

  • 迁移核心代码 将原库(origin)中 lib 目录下的所有文件,复制到新创建的鸿蒙插件项目的对应目录中。

  • 参考安卓实现 参考原库 Android 端的实现逻辑,项目代码通常位于 android/src/main 目录下,为鸿蒙端实现提供参考。

  • 生成鸿蒙端实现 在 AI 对话窗口中,输入提示词:

    参考安卓端的插件实现方式,实现鸿蒙端的插件 @web

    让 AI 生成鸿蒙端的插件代码。

  • 检查鸿蒙端代码 检查 AI 生成的鸿蒙端代码,确保语法和逻辑正确。

  • 修复代码问题 如果鸿蒙端代码存在问题,手动在鸿蒙系统文档中搜索相关内容,将资料提供给 AI 进行学习和修正,记得添加 @web 标签。

  • 整合到原库 鸿蒙端代码验证无误后:

    • 将新插件 pubspec.yaml 中 platforms 下的 ohos 配置,复制到原库的 pubspec.yaml 中,与 android、ios 等平台同级。
    • 如果需要,将新插件 example 目录下的 ohos 文件夹,复制到原库的 example 目录中。

  • 六、Flutter图形渲染引擎Skia

    1. Skia是什么

    • 由Google开发的跨平台、开源2D图形渲染引擎
    • 为多种知名软件和操作系统提供图形绘制能力
    • Flutter是其最重要的应用之一

    2. 核心职责

    • 将Flutter框架提供的绘制指令(如画线、填充颜色、绘制图片等)转化为屏幕上可见的像素
    • 管理图形管道的各个阶段:从解析指令到光栅化,最终输出到屏幕

    3. 跨平台支持

    • 通过封装不同平台的图形API(如GPU的Vulkan、Metal,CPU的CPU指令集)
    • 向上层提供统一的C++接口
    • 使Flutter可以“一次编写”,利用Skia轻松实现“到处运行”的跨平台目标

    七、Flutter鸿蒙化技术架构

    1. 整体策略

    由OpenHarmony TPC社区主导,在 Flutter Engine层 增加对OpenHarmony平台的适配,复用上层Dart代码和框架。

    2. 核心组件

    • Flutter Framework (Dart):位于最上层,包含UI库、Widget等
    • Flutter Engine (C++):核心运行时,负责渲染、文本布局等底层能力
    • OpenHarmony Embedding Layer:新增嵌入层,负责与鸿蒙系统集成

    八、项目创建与运行

  • 创建支持鸿蒙的Flutter项目

    flutter create –platforms ohos my_harmony_flutter_app

  • 运行应用

    flutter run –debug -d <device-id>

  • 打包应用

    flutter build hap –release –target-platform ohos-arm64

  • 赞(0)
    未经允许不得转载:171主机测评 » Flutter三方库torch_light鸿蒙化实战笔记
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址