将静态库Rust .a导入iOS中的Flutter项目

问题描述

我已按照以下说明进行操作:https://github.com/brickpop/flutter-rust-ffi和此处:https://mozilla.github.io/firefox-browser-architecture/experiments/2017-09-06-rust-on-ios.html

尽管.a库和函数可以在Debug(模拟器和真实设备)上按预期工作,但是当我通过TestFlight存档和测试时,Flutter应用程序以灰色背景开始(我读到这意味着一些含义)。一种错误)。

如果我继续删除Rust库的所有调用,则Testflight将正常打开。

注意:我还从XCode中将.a库添加为链接框架,并将.h文件包含到项目的bridging-header.h中。

我也有

  • 运行flutter build --release
  • 清除了导出数据
  • pod缓存
  • 甚至重新制作了iOS文件夹 从头开始。

这里还有其他我想念的东西吗?

解决方法

我设法通过创建Flutter插件flutter create -t plugin使之工作,然后将.a文件导入了/iOS文件夹中,并包含了所有锈功能在.h内的/iOS/Classes文件中(这些文件是自动创建的)。

然后为.Swift/iOS/Classes文件内的每个rust函数添加一个示例函数 并确保包括

flutter:
  plugin:
    pluginClass: ApproverRustPlugin

在您插件的.yaml文件上。

还将这些内容包含在插件.podspec文件中

 s.public_header_files = 'Classes**/*.h'
 s.source_files = 'Classes/**/*'
 s.static_framework = true
 s.vendored_libraries = "**/*.a"

完成所有这些操作。确保在主应用程序.yaml文件中包含您的插件(假设它与主应用程序位于同一文件夹中)。

dependencies:
  flutter:
    sdk: flutter
  approver_rust:
    path: "./approver_rust"

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...