我正在尝试构建 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 构建一切都很好:
操作系统: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/