Flutter三方库适配OpenHarmony【secure_application】— pubspec.yaml 多平台配置与依赖管理
欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.netpubspec.yaml 是 Flutter 插件的"身份证"——它告诉 Flutter 框架这个插件支持哪些平台、每个平台的入口类是什么、依赖了哪些包。secure_application 支持五个平台,配置比一般插件复杂不少。这篇把每一行配置都讲清楚,特别是 OpenHarmony 平
前言
欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net
pubspec.yaml 是 Flutter 插件的"身份证"——它告诉 Flutter 框架这个插件支持哪些平台、每个平台的入口类是什么、依赖了哪些包。secure_application 支持五个平台,配置比一般插件复杂不少。这篇把每一行配置都讲清楚,特别是 OpenHarmony 平台的声明方式。
一、完整的 pubspec.yaml
1.1 源码
name: secure_application
description: Secure app content visibility when user leave app
version: 4.1.0
homepage: https://github.com/neckaros/secure_application
environment:
sdk: ">=2.12.0 <4.0.0"
flutter: ">=3.0.0"
dependencies:
flutter:
sdk: flutter
rxdart: ^0.28.0
dev_dependencies:
flutter_test:
sdk: flutter
flutter:
plugin:
platforms:
android:
package: org.jezequel.secure_application
pluginClass: SecureApplicationPlugin
ios:
pluginClass: SecureApplicationPlugin
web:
pluginClass: SecureApplicationWeb
fileName: secure_application_web.dart
windows:
pluginClass: SecureApplicationPlugin
ohos:
pluginClass: SecureApplicationPlugin
fileName: secure_application_plugin.ets
二、基础信息配置
2.1 包名与描述
name: secure_application
description: Secure app content visibility when user leave app
version: 4.1.0
homepage: https://github.com/neckaros/secure_application
| 字段 | 值 | 说明 |
|---|---|---|
| name | secure_application | 包名,import 时使用 |
| description | Secure app content… | pub.dev 上的描述 |
| version | 4.1.0 | 语义化版本号 |
| homepage | GitHub URL | 项目主页 |
2.2 版本号规范
4.1.0
│ │ │
│ │ └── 补丁版本(bug 修复)
│ └──── 次版本(新功能,向后兼容)
└────── 主版本(破坏性变更)
| 版本变更 | 场景 |
|---|---|
| 4.1.0 → 4.1.1 | 修复 OpenHarmony 上的窗口获取问题 |
| 4.1.0 → 4.2.0 | 添加 OpenHarmony 平台支持 |
| 4.1.0 → 5.0.0 | 修改 SecureApplicationController 的 API |
三、环境约束
3.1 SDK 版本
environment:
sdk: ">=2.12.0 <4.0.0"
flutter: ">=3.0.0"
| 约束 | 值 | 说明 |
|---|---|---|
| Dart SDK | >=2.12.0 <4.0.0 | 支持空安全(2.12+) |
| Flutter SDK | >=3.0.0 | 需要 Flutter 3.0 以上 |
3.2 为什么需要 Dart 2.12+
// 空安全语法,需要 Dart 2.12+
final Widget Function(BuildContext, SecureApplicationController?)? lockedBuilder;
// ^ ^
// 可空参数 可空回调
secure_application 使用了 Dart 的空安全特性,所以最低要求 2.12。
3.3 Flutter-OHOS 的版本兼容
| Flutter-OHOS 版本 | Dart 版本 | 兼容性 |
|---|---|---|
| 3.35.7-dev | >=3.0.0 | ✅ |
| 3.22.0 | >=3.0.0 | ✅ |
| 3.7.0 | >=2.19.0 | ✅ |
📌 Flutter-OHOS SDK 的 Dart 版本通常高于 2.12,所以环境约束不会成为问题。
四、依赖管理
4.1 运行时依赖
dependencies:
flutter:
sdk: flutter
rxdart: ^0.28.0
| 依赖 | 版本 | 用途 |
|---|---|---|
| flutter | SDK 自带 | Flutter 框架 |
| rxdart | ^0.28.0 | BehaviorSubject 响应式流 |
4.2 rxdart 的作用
// 在 SecureApplicationController 中使用
final BehaviorSubject<SecureApplicationAuthenticationStatus>
_authenticationEventsController =
BehaviorSubject<SecureApplicationAuthenticationStatus>.seeded(
SecureApplicationAuthenticationStatus.NONE);
rxdart 提供了 BehaviorSubject,这是标准 Dart Stream 不具备的功能——新订阅者立即收到最新值。
4.3 为什么没有 flutter_plugin_android_lifecycle
有些 Flutter 插件会依赖 flutter_plugin_android_lifecycle:
# 某些插件需要这个依赖
dependencies:
flutter_plugin_android_lifecycle: ^2.0.0
secure_application 不需要,因为它的 Android 端直接实现了 ActivityAware 接口,不需要额外的生命周期管理包。
4.4 开发依赖
dev_dependencies:
flutter_test:
sdk: flutter
只有 flutter_test,用于单元测试和 Widget 测试。
五、plugin.platforms 五平台配置
5.1 Android 平台
android:
package: org.jezequel.secure_application
pluginClass: SecureApplicationPlugin
| 字段 | 值 | 说明 |
|---|---|---|
| package | org.jezequel.secure_application | Java/Kotlin 包名 |
| pluginClass | SecureApplicationPlugin | 插件类名 |
5.2 iOS 平台
ios:
pluginClass: SecureApplicationPlugin
iOS 不需要 package 字段,因为 Swift/ObjC 不使用包名。
5.3 Web 平台
web:
pluginClass: SecureApplicationWeb
fileName: secure_application_web.dart
| 字段 | 值 | 说明 |
|---|---|---|
| pluginClass | SecureApplicationWeb | Dart 类名 |
| fileName | secure_application_web.dart | Dart 文件名 |
Web 平台的插件是纯 Dart 实现,所以需要指定 fileName。
5.4 Windows 平台
windows:
pluginClass: SecureApplicationPlugin
Windows 使用 C++ 实现,只需要指定类名。
5.5 OpenHarmony 平台
ohos:
pluginClass: SecureApplicationPlugin
fileName: secure_application_plugin.ets
| 字段 | 值 | 说明 |
|---|---|---|
| pluginClass | SecureApplicationPlugin | ArkTS 类名 |
| fileName | secure_application_plugin.ets | ArkTS 文件名 |
💡 注意:ohos 平台同时指定了
pluginClass和fileName。Flutter-OHOS 框架会根据 fileName 找到对应的文件,然后导入默认导出的类。
六、各平台配置字段对比
6.1 必填字段
| 平台 | package | pluginClass | fileName |
|---|---|---|---|
| Android | ✅ 必填 | ✅ 必填 | ❌ |
| iOS | ❌ | ✅ 必填 | ❌ |
| Web | ❌ | ✅ 必填 | ✅ 必填 |
| Windows | ❌ | ✅ 必填 | ❌ |
| OpenHarmony | ❌ | ✅ 必填 | ✅ 必填 |
6.2 pluginClass 命名规范
| 平台 | pluginClass | 命名来源 |
|---|---|---|
| Android | SecureApplicationPlugin | Kotlin 类名 |
| iOS | SecureApplicationPlugin | Swift 类名 |
| Web | SecureApplicationWeb | Dart 类名 |
| Windows | SecureApplicationPlugin | C++ 类名 |
| OpenHarmony | SecureApplicationPlugin | ArkTS 类名 |
6.3 fileName 的作用
| 平台 | fileName | 作用 |
|---|---|---|
| Web | secure_application_web.dart | 定位 Dart 文件 |
| OpenHarmony | secure_application_plugin.ets | 定位 ArkTS 文件 |
📌 只有 Web 和 OpenHarmony 需要 fileName。Android/iOS/Windows 通过编译系统自动定位插件类。
七、添加 OpenHarmony 平台的步骤
7.1 修改 pubspec.yaml
# 在 flutter.plugin.platforms 下添加
ohos:
pluginClass: SecureApplicationPlugin
fileName: secure_application_plugin.ets
7.2 创建 ohos 目录
mkdir -p ohos/src/main/ets/components/plugin
7.3 创建必要文件
ohos/index.ets— 入口导出ohos/oh-package.json5— 包配置ohos/build-profile.json5— 构建配置ohos/src/main/module.json5— 模块声明ohos/src/main/ets/components/plugin/SecureApplicationPlugin.ets— 核心实现
7.4 验证配置
# 检查 Flutter 是否识别到 OpenHarmony 平台
flutter pub get
flutter doctor -v
八、发布注意事项
8.1 pub.dev 发布
# 检查发布前的问题
flutter pub publish --dry-run
# 正式发布
flutter pub publish
8.2 发布前检查清单
- version 已更新
- description 准确描述了功能
- homepage 链接有效
- 所有平台的 pluginClass 正确
- ohos 目录包含所有必要文件
- README 包含 OpenHarmony 使用说明
- CHANGELOG 记录了变更
- 所有测试通过
8.3 版本同步
# pubspec.yaml
version: 4.1.0
// ohos/oh-package.json5
"version": "1.0.0"
⚠️ 注意:pubspec.yaml 的 version 和 oh-package.json5 的 version 是独立的。建议保持一致或建立明确的对应关系。
总结
本文详细讲解了 secure_application 的 pubspec.yaml 配置:
- 五平台声明:Android、iOS、Web、Windows、OpenHarmony
- pluginClass:每个平台的插件入口类名
- fileName:Web 和 OpenHarmony 需要指定文件名
- rxdart 依赖:提供 BehaviorSubject 响应式流
- 环境约束:Dart >=2.12.0(空安全)、Flutter >=3.0.0
下一篇我们讲自定义锁屏界面与品牌化设计——如何用 lockedBuilder 打造专业的解锁体验。
如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!
相关资源:
- pubspec.yaml 规范
- Flutter Plugin 平台声明
- 语义化版本
- pub.dev 发布指南
- rxdart pub.dev
- secure_application pub.dev
- Flutter-OHOS 插件开发
- 开源鸿蒙跨平台社区

pubspec.yaml 多平台插件配置
更多推荐




所有评论(0)