Files
kitchen/packages/开发FFI plugin.md
Developer 8d27c67d3a api实现
2026-04-09 08:54:36 +08:00

4.3 KiB
Raw Permalink Blame History

开发FFI plugin

可参考 开发FFI插件

1. 创建 package

flutter create --template=plugin_ffi hello --platforms=android,ios,ohos

2. 构建和绑定本地原生代码

pubspec.yaml 中指定 FFI插件的平台如下

  plugin:
    platforms:
      android:
        ffiPlugin: true
      ohos:
        ffiPlugin: true
      ios:
        ffiPlugin: true

3. 绑定本地原生代码

为了使用本地原生代码,需要在 Dart 中进行绑定。

为了避免手工编写,它们由头文件 (src/hello.h) 中的 package:ffigen 生成。运行以下指令重新生成绑定:

dart run ffigen --config ffigen.yaml

4. 调用本地原生代码

运行时间很短的本地原生函数可以在任何 isolate 中直接调用。例如,请查看 lib/hello.dart 中的 sum。

运行时间较长的本地原生函数应在 helper isolate 上调用,以避免在 Flutter 应用程序中掉帧。例如,请查看 lib/hello.dart 中的 sumAsync。

开发plugin

本文介绍了如何开发ohos平台的 Flutter Packages。

开发原生插件类型的Packages

1. 创建Package

flutter create --org com.example --template=plugin --platforms=android,ios,ohos hello

这将在 hello 目录下创建一个插件项目,其中包含以下内容:

lib/hello.dart 文件Dart 插件 API 实现。

android/src/main/java/com/example/hello/HelloPlugin.kt 文件Android 平台原生插件 API 实现(使用 Kotlin 编程语言)。

ios/Classes/HelloPlugin.m 文件iOS 平台原生插件 API 实现(使用 Objective-C 编程语言)。

ohos/hello/src/main/ets/components/plugin/HelloPlugin.ets 文件ohos 平台原生插件 API 实现 (使用 ArkTS 编程语言)。

example/ 文件: 一个依赖于该插件并说明了如何使用它的 Flutter 应用。

指定支持ohos平台

插件可以通过向 pubspec.yaml 中的 platforms map 添加 keys 来指定其支持的平台。例如,以下是 hello 插件的 flutter: map它支持Android、iOS和Ohos

flutter:
  plugin:
    platforms:
      android:
        package: com.example.hello
        pluginClass: HelloPlugin
      ios:
        pluginClass: HelloPlugin
      ohos:
        pluginClass: HelloPlugin

environment:
  sdk: ">=2.19.6 <3.0.0"
  flutter: ">=2.5.0"

2. 实现Package

2.1 定义package API

打开 hello 主目录,并找到 lib/hello.dart 文件。

2.2 编译example

cd hello/example
flutter pub get
flutter build hap --debug

2.3 添加 ohos 平台代码 (.ets)

建议使用 DevEco-Studio 来编译 ohos 代码。

  1. 启动 DevEco-Studio打开 hello/example/ohos 目录。
  2. 配置签名信息: File->Project Structure->Signing Configs->Support HarmonyOS & Automatically generate signature->Sign in。
  3. 在打开的网页中登录华为开发者账号然后回到DevEco-Studio保存签名信息。
  4. 运行项目。

为现有的插件项目加入ohos平台的支持

如果现有plugin类型插件未支持ohos平台可在插件根目录执行如下指令用于添加对ohos平台的支持。

flutter create . --template=plugin --platforms=ohos

开发FFI插件

flutter create hello --template=plugin_ffi --platforms=ohos

参考文档

  1. Flutter Packages 的开发和提交
  2. 开发原生插件
  3. OpenHarmony文档
  4. HarmonyOS文档

开发package

可参考 开发纯Dart的packages

1. 创建 package

flutter create --template=package hello

2. 实现 package

对于纯 Dart 库的 package只要在 lib/<package name>.dart 文件中添加功能实现,或在 lib 目录中的多个文件中添加功能实现。

https://docs.flutter.cn/packages-and-plugins/developing-packages