我在我的应用程序中使用 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 的所有答案,但是没有一个解决方案是正确的。请帮忙。
最佳答案
- No proper shared library-----你的设备是arm类型的,但是你构建了x86类型的共享库。
- 未找到合适的函数-----您可以先尝试 NDK 示例文件夹中的 hello-jni。
- 安装包时复制共享库失败--------你可以试试KeepSafe/ReLinker
关于android - ExceptionInInitializerError Android NDK 由 : UnsatisfiedLinkError: findLibrary returned null 引起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34524709/