在 android studio 中引用 .so 文件时遇到问题
Posted
技术标签:
【中文标题】在 android studio 中引用 .so 文件时遇到问题【英文标题】:Trouble referencing a .so file in android studio 【发布时间】:2017-04-28 10:44:56 【问题描述】:所以我正在尝试将 CLE 集成到 android 中,因此我必须添加一些 .so 文件。我正在关注here的教程
在集成 Star 库之前一切正常,但是当我运行程序时出现以下异常:
Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: library "/data/data/com.srplab.starcore/lib/libstar_java.so" not found
现在为了包含这些 .so 文件,我创建了一个文件夹 jniLibs 并为 3 个架构放置了 .so 文件:
我在 build.gradle 中添加了以下代码行:
sourceSets
main
jniLibs.srcDirs = ['src/main/jnilibs']
但是,当我再次运行以下代码时:
try
//System.loadLibrary("mysharedlibrary");
System.load("/data/data/"+getPackageName()+"/libstar_java.so");
catch (UnsatisfiedLinkError use)
Log.e("JNI", "WARNING: Could not load libmysharedlibrary.so");
use.printStackTrace();
我遇到了一个异常,这意味着 .so 文件没有加载。
这样做的正确方法是什么?
【问题讨论】:
【参考方案1】:您的“armeabi-v7a”文件夹必须重命名为“armeabi-v7a”。 也有错别字:
jniLibs.srcDirs = ['src/main/jnilibs']
你的文件夹是大L:
jniLibs.srcDirs = ['src/main/jniLibs']
顺便说一句,“src/main/jniLibs”默认用于原生库,您不必在 gradle 脚本中指定它。上面没有完整的代码块,但是您是否从静态初始化程序加载您的库?喜欢:
static
System.loadLibrary("star_java");
并查看您的 apk 以确保您的库已成功收集。你可以在app/build/outputs/apk/
看到它
【讨论】:
以上是关于在 android studio 中引用 .so 文件时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章
在 android studio 中引用 .so 文件时遇到问题
Android NDK——使用Android Studio引用so库,jar包及module并使用JNI的正确姿势