android - ExceptionInInitializerError Android NDK 由 : UnsatisfiedLinkError: findLibrary returned null 引起

标签 android c++ android-ndk java-native-interface native

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

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

sensorgraph.cpp 中的所有本地方法都以包名称和 JNI Activity 名称开头,例如:

 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. No proper shared library-----你的设备是arm类型的,但是你构建了x86类型的共享库。
  2. 未找到合适的函数-----您可以先尝试 NDK 示例文件夹中的 hello-jni。
  3. 安装包时复制共享库失败--------你可以试试KeepSafe/ReLinker

关于android - ExceptionInInitializerError Android NDK 由 : UnsatisfiedLinkError: findLibrary returned null 引起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34524709/

相关文章:

android - 如何在 Android Studio 上配置 Ninja 安装

c++ - 滚动条在Qt中控制滚动滚动区域

c++ - OpenCV 错误 : ‘MAT’ is not a member of ‘cv’

java - 将字符串转换为整数不起作用,抛出 NumberFormatException

android - 以编程方式检查 Xamarin.Android 的版本

c++ - 如何使用 Win32APi c++ 将图像设置为按钮?

java - Android NDK 性能优于常规 Java 代码

java - 返回在 JNI 中创建的对象时的 NewGlobalRef/DeleteGlobalRef

android - org.apache.http.ContentTooLongException消息{种类=错误,文本=程序类型已存在:org.apache.http.ContentTooLongException

java - 运行应用程序抛出 android.support.v7.app.AppCompatActivity 但使用 "extends Activity"工作