![](/img/trans.png)
[英]Flutter C++ Memory allocation causes jank on raster thread - Android NDK Dart FFI
[英]Flutter / Dart FFI existing .so file for Android
我正在嘗試將 pre-compiled.so 文件與 Flutter/Dart FFI 一起使用。
我已經用 dart-ffigen 生成了綁定,這似乎沒有任何問題。
我已將以下內容添加到android
塊內的 build.gradle 文件中。
externalNativeBuild {
// Encapsulates your CMake build configurations.
cmake {
// Provides a relative path to your CMake build script.
path "CMakeLists.txt"
}
}
CMakeLists.txt:
cmake_minimum_required(VERSION 3.4.1) # for example
find_library( stl_android
../ios/Classes/libstl.so )
add_library( stl_android SHARED IMPORTED )
我還嘗試了 FFI 頁面上記錄的 cmakelists.txt 文件,但這給出了一個與它相關的異常,不知道 .so 文件的語言。 我假設那是因為它是一個編譯庫,而不是源代碼。
在 Dart 中,我使用以下代碼:
Platform.isAndroid
? DynamicLibrary.open('libstl.so')
: DynamicLibrary.process();
但這給出了以下異常:
Invalid argument(s): Failed to load dynamic library 'libstl.so': dlopen failed: library "libstl.so" not found
我不完全確定我在這里做錯了什么,我希望 makelist 文件中的某些東西是錯誤的。
我用這個 CMakeLists.txt 解決了這個問題
add_library(
stl_android
SHARED
IMPORTED
GLOBAL
)
set_target_properties(stl_android PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libstl.so)
需要在以下目錄添加.so文件:
android/app/src/main/jniLibs/arm64-v8a
android/app/src/main/jniLibs/armeabi-v7a
android/app/src/main/jniLibs/x86
android/app/src/main/jniLibs/x86_64
以及您可能想要支持的任何其他平台。
當然,需要為正確的目標編譯 .so 文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.