ExceptionInInitializerError Android NDK由以下原因引起:不满足链接错误:findL

ExceptionInInitializerError Android NDK Caused by: UnsatisfiedLinkError: findLibrary returned null

本文关键字:不满足 链接 findL 错误 NDK Android ExceptionInInitializerError      更新时间:2023-10-16

我在我的应用程序中使用NDK支持,并且正在加载这样的库:

 static {
     System.loadLibrary("sensorgraph");
 }

sensorgraph.cpp中的所有本机方法都以包名称和JNI活动名称开头,如:

 Java_sensor_com_ms_android_knowursensor_controller_jni_SensorGraphJNI_init(JNIEnv *env, jclass type, jobject assetManager) {
        (void)type;
        AAssetManager *nativeAssetManager = AAssetManager_fromJava(env, assetManager);
        gSensorGraph.init(nativeAssetManager);
    }

我正在获得运行应用程序的ExceptionInInitializerError

  FATAL EXCEPTION: GLThread 1042
 java.lang.ExceptionInInitializerError
 at sensor.com.ms.android.knowursensor.ui.view.AccelGLSV$2.run(AccelGLSV.java:58)
 at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1470)
 at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1248)
Caused by: java.lang.UnsatisfiedLinkError: Couldn't load sensorgraph from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.ms.android.knowursensor-41.apk,libraryPath=/data/app-lib/com.ms.android.knowursensor-41]: findLibrary returned null
 at java.lang.Runtime.loadLibrary(Runtime.java:365)
 at java.lang.System.loadLibrary(System.java:535)
 at sensor.com.ms.android.knowursensor.controller.jni.SensorGraphJNI.<clinit>(SensorGraphJNI.java:26)
 at sensor.com.ms.android.knowursensor.ui.view.AccelGLSV$2.run(AccelGLSV.java:58) 
 at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1470) 
 at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1248) 

我已经尝试了SO的所有答案,但没有一个解决方案是正确的。请帮忙。

  1. 没有合适的共享库-----你的设备是arm类型的,但你构建了x86类型的共享库
  2. 找不到合适的函数-----您可以先在NDK示例文件夹中尝试hellojni
  3. 安装程序包时复制共享库失败--------您可以尝试KeepSafe/ReLinker