Dart/Flutter钩子将lib代码和资源打包进macOS框架,并且不含点号字符

移动开发 2026-07-11

我的环境详情:

=== Dart信息 ===
- Dart 3.11.1(稳定版)(Tue Feb 24 00:03:07 2026 -0800) 在 "macos_arm64" 上
- 在macOS / 版本26.3.1 (a) (构建25D771280a)
- 区域设置为en-US

项目信息

  • sdk约束:'^3.11.1'
  • 依赖项:code_assets, dart_ipc, data_assets, ffi, flutter, hooks, logging, native_toolchain_c, path
  • 开发依赖:ffigen, flutter_lints, test

=============

我的问题:

我正在使用Dart Hook功能,将我的macOS Flutter应用与第三方动态库集成。
我的Hook的 build.dart脚本将这些库作为DynamicLoadingBundled() 代码资源添加。

问题:运行时这些库的代码资源找不到。

原因:第三方库的文件路径包含点字符,但Flutter构建在打包时会把它们移除。
例如,第三方代码想要加载动态库

Frameworks/bare-dns.2.1.4.framework/bare-dns.2.1.4

但Flutter构建把它打包成

Frameworks/bare-dns214.framework/bare-dns214

是否有一个Flutter构建设置,可以保留点字符?

解决方案

已将此问题反馈给Flutter团队。结果:Flutter构建过于严格,我应该准备一个PR来修复它。

参见:GitHub dart-lang issue 3268

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章