Я пытаюсь интегрировать библиотеку C ++ с Flutter с помощью FFI. У меня есть предварительно скомпилированный файл libmesh.so , и я хочу создать библиотеку обертки, которая ссылается на нее. Android/src/main/libs/x86_64/
[*] код моей обертки находится в src/line.cpp
my cmakelists.txt находится в Android/App/cmakelists.txt
Код: Выделить всё
cmake_minimum_required(VERSION 3.4.1)
include_directories(C:/Development/applications/Lib)
linking
add_library(
LineWrapper
target_link_libraries
SHARED
../../src/line.cpp
)
target_link_libraries(
LineWrapper
${CMAKE_CURRENT_SOURCE_DIR}/../src/main/jniLibs/${ANDROID_ABI}/libMesh.so
)
Код: Выделить всё
final DynamicLibrary meshLibrary = Platform.isAndroid
? DynamicLibrary.open("libMesh.so")
: DynamicLibrary.process();
final DynamicLibrary lineWrapperLibrary = Platform.isAndroid
? DynamicLibrary.open("libLineWrapper.so")
: DynamicLibrary.process();
< /code>
[b]build.gradle
android {
// ...
defaultConfig {
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
ndk {
abiFilters 'x86_64', 'arm64-v8a'
}
}
// ...
}
< /code>
Error
When I run flutter build, I get this error:
Could not find libMesh.so for arm64-v8a at:
C:/Development/applications/flutter_project/android/app/../src/main/libs/arm64-v8a/libMesh.so
< /code>
Я подтвердил, что файл библиотеки существует на этом пути. Я пробовал: < /p>
Использование find_library () вместо прямых путей < /li>
Ограничение ABIS в Build.Gradle только для того, что у меня есть библиотеки для < /li>
< /ul>
ЧТО Я упускаю? Как правильно связать мою новую библиотеку с существующим файлом .so?
Подробнее здесь: https://stackoverflow.com/questions/795 ... er-project