Android Studio在加载我已包含在项目中的库时提供UnsatisfiedLinkError

时间:2017-06-04 19:49:12

标签: java android

我在为Android Studio项目制作Jzy3d的依赖项时遇到了麻烦。导致错误的堆栈跟踪是:

sizeof(void*) != sizeof(uintptr_t)

在爬行堆栈跟踪时,我在Platform.run:249

中找到了以下行
at java.lang.Runtime.loadLibrary(Runtime.java:367)
at java.lang.System.loadLibrary(System.java:1076)
at com.jogamp.common.jvm.JNILibLoaderBase.loadLibraryInternal(JNILibLoaderBase.java:454)
at com.jogamp.common.jvm.JNILibLoaderBase.access$000(JNILibLoaderBase.java:59)
at com.jogamp.common.jvm.JNILibLoaderBase$DefaultAction.loadLibrary(JNILibLoaderBase.java:90)
at com.jogamp.common.jvm.JNILibLoaderBase.loadLibrary(JNILibLoaderBase.java:328)
at com.jogamp.common.os.DynamicLibraryBundle$GlueJNILibLoader.loadLibrary(DynamicLibraryBundle.java:390)
at com.jogamp.common.os.Platform$2.run(Platform.java:249)
at java.security.AccessController.doPrivileged(AccessController.java:45)
at com.jogamp.common.os.Platform.loadGlueGenRTImpl(Platform.java:231)
at com.jogamp.common.os.Platform.<clinit>(Platform.java:183)
at com.jogamp.common.os.Platform.initSingleton(Platform.java:258)
at javax.media.opengl.GLProfile.<clinit>(GLProfile.java:99)
at javax.media.opengl.GLProfile.isAvailable(GLProfile.java:284)
at org.jzy3d.chart.Settings.<init>(Settings.java:19)
at org.jzy3d.chart.Settings.getInstance(Settings.java:48)
at org.jzy3d.chart.Chart.<init>(Chart.java:60)
at org.jzy3d.chart.Chart.<init>(Chart.java:48)

所以我最好的猜测是它正在尝试加载我的gluegen-rt.jar,但由于某种原因无法找到它。

I've included gluegen-rt in my libs directory

我还尝试将libgluegen-rt.so添加到src / main / jniLibs并将我的.grade更改为include

GlueJNILibLoader.loadLibrary("gluegen-rt", false, Platform.class.getClassLoader());

所以基本上我的问题是错误在哪里?是否无法加载我的gluegen-rt.jar,或者它无法加载libgluegen-rt.so?问题是由于我错过了一个不同的库吗?

启动问题的代码是从Jzy3d库中调用图表构造函数

compile fileTree(dir: 'libs', include: ['*.jar','*.so'])

在方法调用行中,执行以下行

Chart chart = new Chart(Quality.Advanced);

gluegen-rt中使用的代码行是

GLProfile.isAvailable("GL2")

1 个答案:

答案 0 :(得分:0)

按照Android Studio: Add jar as a library?

中的说明操作

您缺少以下步骤:

  1. 将Jzy3d jar放入libs文件夹。
  2. 右键单击它并点击“添加为库”
  3. 依赖关系中添加以下行:

    compile 'org.jogamp.gluegen:gluegen-rt-android:2.1.3'
    
  4. 您可以从

    中删除* .so
    compile fileTree(dir: 'libs', include: ['*.jar','*.so'])