我已按照 here 中的说明进行操作和 here
虽然.a
库和函数在调试(模拟器和真实设备)上按预期工作,当我通过 TestFlight 存档和测试时,Flutter 应用程序以灰色背景开始(我读到这意味着某种错误)。
如果我继续删除 Rust 库的所有调用,那么 Testflight 会正常打开。
注意:我还添加了 .a
库作为来自 XCode 的链接框架,我已经包含了 .h
文件到项目的 bridging-header.h。
我也有
flutter build --release
从头开始。
还有什么我在这里想念的吗?
最佳答案
我设法通过创建 Flutter 插件使其工作 flutter create -t plugin
然后我导入了 .a
/iOS
上的文件文件夹并包含 全部 .h
上的 Rust 函数里面的文件 /iOS/Classes
(这些是自动创建的)。
然后为 .Swift
中的每个 rust 函数添加一个示例函数文件在 /iOS/Classes
并确保包括
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"
以供引用:Pod::Spec.new do |s|
s.name = 'approver_rust'
s.version = '0.0.1'
s.summary = 'A new flutter plugin project.'
s.description = <<-DESC
A new flutter plugin project.
DESC
s.homepage = 'http://example.com'
s.license = { :file => '../LICENSE' }
s.author = { 'Your Company' => 'email@example.com' }
s.source = { :path => '.' }
s.public_header_files = 'Classes**/*.h'
s.source_files = 'Classes/**/*'
s.static_framework = true
s.vendored_libraries = "**/*.a"
s.dependency 'Flutter'
s.platform = :ios, '9.0'
# Flutter.framework does not contain a i386 slice.
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' }
s.swift_version = '5.0'
end
关于ios - 将静态库(Rust .a)导入到 iOS 中的 Flutter 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64064580/