Skip to content

feat: HarmonyOS/OHOS platform support — 移植完成,征求合入意见 #1330

Description

@pandaJuEned

feat: HarmonyOS/OHOS platform support — 移植完成,征求合入意见

背景

我已将 Server Box 移植到华为鸿蒙(OpenHarmony / HarmonyOS NEXT),应用可在 OHOS 设备上正常运行。完整的踩坑记录已整理成专栏:

环境:Flutter SDK 3.41.10-ohos-1.0.0(华为 fork,Dart 3.11.5)/ OpenHarmony 6.1.1.120 (API 24, aarch64)

想征求一下您是否愿意合入 OHOS 平台支持,以及期望的提交形式——因为改动涉及面较广,想先沟通再整理 PR,避免白做。

改动范围

1. OHOS 平台目录(ohos/

  • EntryAbility.ets:注册 path_provider / shared_preferences / flutter_secure_storage 三个 MethodChannel(OHOS 引擎不自动注册 Android/iOS 插件)
  • shared_preferences / flutter_secure_storage文件持久化实现(非内存 Map,重启不丢数据)
  • 预编译 libsqlite3.so(SQLite3MultipleCiphers,OHOS 无系统 SQLite)
  • hvigor 构建配置、资源、测试用例
  • 平板/横屏适配(module.json5

2. Rust FFI 交叉编译

  • OHOS target aarch64-unknown-linux-ohos(Tier 3,需 nightly + -Z build-std
  • native_toolchain_rust:target 映射 + 解除 nightly 禁令
  • 链接器 wrapper(OHOS ld.lld 不兼容 GNU ld 部分选项)
  • flutter_pty 的 C 代码绕过 CBuilder 直接调用 OHOS clang

3. 第三方库 OHOS 适配(pub cache 补丁)

改动
responsive_framework switch 补 TargetPlatform.ohos 分支
flutter_math_fork selectable.dart / line_editable.dart 同上
flutter_secure_storage 复用 AndroidOptions 作 fallback
sqlite3 load_library.dart 加 OHOS 分支 DynamicLibrary.open('libsqlite3.so')

4. fl_lib 的 OHOS 适配

  • TargetPlatform.ohos 相关处理
  • Flutter 3.41 API 变更适配(SizeTransition.alignmentaxisAlignmentsqlite3 close()dispose()onReorderItemonReorder 等)

需要沟通的点

  1. 是否接受 OHOS 作为第六个平台? 项目目前支持 Android/iOS/macOS/Linux/Windows。
  2. 提交形式:改动涉及 fl_lib(需单独向 lollipopkit/fl_lib 提 PR)、若干第三方库的 OHOS 补丁(提 PR 到上游库 or fork)、以及本仓库的 ohos/ 目录。您希望怎么拆分?
  3. 第三方库补丁:pub cache 补丁不持久,正式做法是 dependency_overrides 指向 fork 或向上游库提 PR。您倾向哪种?
  4. 依赖版本:为配合华为 fork 的 Flutter 3.41,我本地降级了 drift_dev/freezed/riverpod_generator 等。这部分不会进 PR,仅说明背景。

当前状态

移植已完成,应用正常启动(服务器列表、SSH 终端、SFTP、Docker 等功能可用),重启不白屏。如果您有意合入,我会按您的要求整理成干净的 PR。

期待您的意见 🙌

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    featurequestionFurther information is requested

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions