java.lang.UnsatisfiedLinkError: dlopen failed: library "xxx.so" not found
今天在开发中遇到了标题中的问题。场景:我的app依赖于一个用c++开发的so库,然后在app的CmakeLists.txt中也依赖了这个库,如下:target_link_libraries( # Specifies the target library.native-libxxx#...
·
今天在开发中遇到了标题中的问题。
场景:
我的app依赖于一个用c++开发的so库,然后在app的CmakeLists.txt中也依赖了这个库,如下:
target_link_libraries( # Specifies the target library.
native-lib
xxx #so库的名称
# Links the target library to the log library
# included in the NDK.
${log-lib} )
在app/libs目录下也可以找到上面的xxx.so库。
并且可以成功编译出apk,但是在运行的时候,发生了上面的错误。
问题原因:
没有在app的build.gradle文件中添加下面这就话:
// sourceSets用于指定依赖的第三方so库的存放地址
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
解决方法:
在android节点下添加上述的sourceSets的配置即可。
问题2:
上面的问题解决之后,又提示找不到其它的so库,这些so库是被xxx.so库所依赖的。
解决方法是将xxx.so库所依赖的so库都拷贝到app/libs目录下。
这样就不会出现找不到so库的问题了。
参考博客:
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)