所以我想在Android中集成CLE,因此我必须添加一些.so文件。我正在关注here
的教程在集成Star库之前一切正常,但是当我运行程序时,我得到以下异常:
Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: library "/data/data/com.srplab.starcore/lib/libstar_java.so" not found
现在要包含这些.so文件我为3个架构创建了一个文件夹jniLibs并放置了.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文件没有加载。
这样做的正确方法是什么?
答案 0 :(得分:2)
你的" armeabiv7a "必须将文件夹重命名为" armeabi-v7a "。 还有拼写错误:
jniLibs.srcDirs = ['src/main/jnilibs']
你的文件夹是大L:
jniLibs.srcDirs = ['src/main/jniLibs']
顺便说一下," src / main / jniLibs "默认情况下用于本机库,您不必在gradle脚本中指定它
上面没有完整的代码块,但是您是否从静态初始化程序加载库?喜欢:
static
{
System.loadLibrary("star_java");
}
看看你的apk,确保你的lib成功收集。您可以在app/build/outputs/apk/