我正在尝试集成Hyperledger indy SDK。但是,在运行我的代码时出现错误
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.UnsatisfiedLinkError: dlopen failed: library "libgnustl_shared.so" not found
at java.lang.Runtime.loadLibrary0(Runtime.java:1016)
at java.lang.System.loadLibrary(System.java:1657)
我正在尝试遵循项目回购中提供的文档。我尝试使用此博客上的示例项目。
- 我能够在 linux 虚拟机下构建 *.so 库,将构建的文件复制到我在 windows 上的 android studio 项目中。
- 我在项目的 jniLibs forlder 中为每个架构添加了文件。
- 添加了代码以在我的 mainActivity 中加载库
static{
System.loadLibrary("indy");
}
- 尝试创建一个 CMake 文件
cmake_minimum_required(VERSION 3.4.1)
add_library(indy SHARED IMPORTED)
include_directories(src/main/jniLibs/${ANDROID_ABI}/include)
我的 gradle 文件包括:
android{
defaultconfig{
...
ndk{
moduleName "indy"
abiFilters 'armeabi-v7a'
}
}
...
sourceSets {
main {
jniLibs.srcDir 'src/main/jniLibs'
}
}
externalNativeBuild {
cmake {
path file('../CMakeLists.txt')
}
}
}
尽管如此,当我启动应用程序时,仍然会出现同样的错误。我知道在 linux 上构建库的 bash 脚本使用 android-ndk-r16b-linux-x86_64 工具,所以我尝试在 android studio 中降级我的 ndk 以使用相同的版本,但没有运气。
构建脚本的输出是
include/
indy_anoncreds.h
indy_core.h
...
lib/
libindy.a
libindy.so
libindy_shared.so
如何在我的 android studio 项目中使用这个库?