Repository navigation
feat(ohos): support native assets builds - #43
Conversation
|
有一个小问题,我们为什么为 code_asserts 之类的依赖项添加了版本上限 在正常情况下,如果 sdk 或是其他依赖不支持高版本,我们应该会自动使用较低版本 |
|
感谢指出,Pub 会根据 SDK 和其他依赖的约束自动选择兼容版本,这点是对的。 这里其实没有新增上限:原来的 本次主要是降低下限,让 Flutter-OH 固定 保留原有上限是考虑未来可能出现的破坏性 API 变更;即使 SDK 和依赖约束满足,Pub 也无法判断我们的代码是否兼容新版 API。PR 中显式写出范围,容易让人以为额外增加了限制,这里说明一下。 |
|
如果我的理解没有问题,当前这个稍微有些 hack 的实现更多依赖鸿蒙工具链的特定行为而不是 flutter/dart 工具链行为,如果出现破坏性变更,其他平台一样大概率会被破坏,在这种情况下我们为什么仍然要添加上限 |
原来的写法 |
|
我原来从未指定上限,关于上限的约束即使存在,也是相关工具链的内部细节,不需要我们关注,但是此PR将其显式化了 |
|
感谢你的指正,我之前没有关注过类似问题,我已经理解这里的跨版本兼容问题了 |

问题与结果
Flutter-OH 当前通过 Linux target 向 Native Assets hook 传入 OHOS 构建参数。现有 hook 会选择 Linux 原生库及编译目标,导致新版 media-kit 的 OHOS 构建无法正确完成。本 PR 补齐 OHOS arm64 的原生库打包和事件循环桥接,复用仓库已有的鸿蒙 libmpv 与 ArkTS 纹理渲染实现。
改动
target: ohos和 SDK 配置;仅设置 OHOS 环境变量不会把普通 Linux 构建识别成 OHOS。libmpv.so,并在 bundle 缺少时补充 SDK 的libc++_shared.so。meta 1.17,同时保留较新版本的可选范围:code_assets >=1.2.1 <3.0.0、hooks >=2.0.2 <3.0.0、native_toolchain_c >=0.19.1 <0.20.0。这不是强制降级依赖。验证
dart test test/hook test/src/player/native/core/native_library_test.dart test/src/player/native/core/native_property_test.dart --reporter expanded)。该次解析版本为 code_assets 2.1.0、hooks 2.2.0、native_toolchain_c 0.19.5。dart analyze hook test/hook无问题;修改的 Dart 文件格式检查通过,git diff --check通过。ohcodec硬解、同步及异步播放器模式、纹理画面显示,以及重复/并发销毁。Release 两轮共通过 24 次播放/销毁和 6 次初始化期间销毁,最终 native handle 归零。当前 OHOS 验证范围为 arm64 真机,未覆盖模拟器及其他架构。本地未重新执行完整多平台构建矩阵,其他平台回归仍需由仓库现有 CI 确认。