4.3 KiB
开发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 代码。
- 启动 DevEco-Studio,打开 hello/example/ohos 目录。
- 配置签名信息: File->Project Structure->Signing Configs->Support HarmonyOS & Automatically generate signature->Sign in。
- 在打开的网页中登录华为开发者账号,然后回到DevEco-Studio,保存签名信息。
- 运行项目。
为现有的插件项目加入ohos平台的支持
如果现有plugin类型插件未支持ohos平台,可在插件根目录执行如下指令,用于添加对ohos平台的支持。
flutter create . --template=plugin --platforms=ohos
开发FFI插件
flutter create hello --template=plugin_ffi --platforms=ohos
参考文档
开发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