android - 为 Android 构建 libflutter_rust_bridge_example 时出现 Flutter 错误 : Failed to load dynamic library 'libflutter_rust_bridge_example.so'

标签 android flutter rust ffi

我正在尝试构建 flutter_rust_bridge project (frb_example/with_flutter) 适用于 Android,但在尝试运行时多次收到以下错误:

E/flutter (10161): [ERROR:flutter/lib/ui/ui_dart_state.cc(198)] Unhandled Exception: Invalid argument(s): Failed to load dynamic library 'libflutter_rust_bridge_example.so': dlopen failed: library "libflutter_rust_bridge_example.so" not found
E/flutter (10161): #0      _open (dart:ffi-patch/ffi_dynamic_library_patch.dart:12:43)
E/flutter (10161): #1      new DynamicLibrary.open (dart:ffi-patch/ffi_dynamic_library_patch.dart:23:12)
E/flutter ( 9864): #2      dylib
package:flutter_rust_bridge_example/main.dart:19
E/flutter ( 9864): #3      dylib (package:flutter_rust_bridge_example/main.dart)
package:flutter_rust_bridge_example/main.dart:1
E/flutter ( 9864): #4      api
package:flutter_rust_bridge_example/main.dart:20
E/flutter ( 9864): #5      api (package:flutter_rust_bridge_example/main.dart)
package:flutter_rust_bridge_example/main.dart:1
E/flutter ( 9864): #6      _MyAppState._callExampleFfiOne
package:flutter_rust_bridge_example/main.dart:49
E/flutter ( 9864): #7      runPeriodically.<anonymous closure>
package:flutter_rust_bridge_example/off_topic_code.dart:126
E/flutter ( 9864): #8      _rootRunUnary (dart:async/zone.dart:1434:47)
E/flutter ( 9864): #9      _CustomZone.runUnary (dart:async/zone.dart:1335:19)
E/flutter ( 9864): #10     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1244:7)
E/flutter ( 9864): #11     _CustomZone.bindUnaryCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1281:26)
E/flutter ( 9864): #12     _rootRunUnary (dart:async/zone.dart:1442:13)
E/flutter ( 9864): #13     _CustomZone.runUnary (dart:async/zone.dart:1335:19)
E/flutter ( 9864): #14     _CustomZone.bindUnaryCallback.<anonymous closure> (dart:async/zone.dart:1265:26)
E/flutter ( 9864): #15     _Timer._runTimers (dart:isolate-patch/timer_impl.dart:398:19)
E/flutter ( 9864): #16     _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:429:5)
E/flutter ( 9864): #17     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:192:12)

提到的 libflutter_rust_bridge_example.so 文件应该在哪里?

我还收到以下警告:

Warning: Mapping new ns http://schemas.android.com/repository/android/common/02 to old ns http://schemas.android.com/repository/android/common/01
Warning: Mapping new ns http://schemas.android.com/repository/android/generic/02 to old ns http://schemas.android.com/repository/android/generic/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/addon2/02 to old ns http://schemas.android.com/sdk/android/repo/addon2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/repository2/02 to old ns http://schemas.android.com/sdk/android/repo/repository2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/sys-img2/02 to old ns http://schemas.android.com/sdk/android/repo/sys-img2/01

Android 模拟器 (Nexus 5 android-x86) 如下所示:

正如您所看到的,应该由 Rust 生成的图像丢失了。如果我为 Windows 构建一切都很好:

enter image description here

操作系统:Windows 10

Flutter版本:Flutter 3.0.0

使用rust 版本:1.60.0

启动模拟器的IDE:Vs Code

用于创建模拟器的IDE:Android Studio

最佳答案

我在我的 Arch Linux KDE 笔记本电脑上遇到了同样的问题。 对我来说,这是由于忘记运行所需的上一步而引起的(请参阅 tutorial description ):

cd ~/Development/git/flutter_rust_bridge/frb_example/with_flutter/rust
cargo ndk -o ../android/app/src/main/jniLibs build

之后,由于缺少依赖项,该步骤失败,在我的情况下,通过安装修复了该问题:

cargo install cargo-ndk
rustup target add armv7-linux-androideabi
rustup target add aarch64-linux-android

(所需的目标架构取决于所使用的手机型号/模拟器)

如果仍然无法解决问题,也许可以尝试将存储库重置为新克隆的状态:

cd ~/Development/git/flutter_rust_bridge
git clean -d -x -f

关于android - 为 Android 构建 libflutter_rust_bridge_example 时出现 Flutter 错误 : Failed to load dynamic library 'libflutter_rust_bridge_example.so' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72273201/

相关文章:

Android Studio 调试器 - "alternative source"弹出窗口中缺少平台

java - android.R 的 Android 开发问题

flutter - flutter ,显示问题实例

rust - 如何为 actix_web() 配置 app_data()

sorting - 使用动态改变其行为的比较器对向量进行排序

android - socket有数据可读时android有回调机制吗

java - 如何从移动元素创建变量?

android - 如何在 Flutter 中的文本之间加载图像

ios - iOS-需要iOS 13+

enums - 从没有模式匹配的枚举中读取