前言

欢迎加入开源鸿蒙跨平台社区: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 平台同时指定了 pluginClassfileName。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 创建必要文件

  1. ohos/index.ets — 入口导出
  2. ohos/oh-package.json5 — 包配置
  3. ohos/build-profile.json5 — 构建配置
  4. ohos/src/main/module.json5 — 模块声明
  5. 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 配置:

  1. 五平台声明:Android、iOS、Web、Windows、OpenHarmony
  2. pluginClass:每个平台的插件入口类名
  3. fileName:Web 和 OpenHarmony 需要指定文件名
  4. rxdart 依赖:提供 BehaviorSubject 响应式流
  5. 环境约束:Dart >=2.12.0(空安全)、Flutter >=3.0.0

下一篇我们讲自定义锁屏界面与品牌化设计——如何用 lockedBuilder 打造专业的解锁体验。

如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!


相关资源:

请添加图片描述

pubspec.yaml 多平台插件配置

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐