Java 在android studio中引用.so文件时遇到问题
因此,我正在尝试将CLE集成到Android中,出于这个原因,我必须添加一些.So文件。我正在学习来自 在集成星形库之前,一切正常,但是当我运行该程序时,出现以下异常:Java 在android studio中引用.so文件时遇到问题,java,android,lua,android-ndk,Java,Android,Lua,Android Ndk,因此,我正在尝试将CLE集成到Android中,出于这个原因,我必须添加一些.So文件。我正在学习来自 在集成星形库之前,一切正常,但是当我运行该程序时,出现以下异常: Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: library "/data/data/com.srplab.starcore/lib/libstar_java.so" not found 现在,为了包含这些.so文件,我创建了一个文件夹JNILBS,并放置了
Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: library "/data/data/com.srplab.starcore/lib/libstar_java.so" not found
现在,为了包含这些.so文件,我创建了一个文件夹JNILBS,并放置了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文件没有加载
这样做的正确方式是什么 您的“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/
上看到它。您的“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/