java.lang.UnsatisfiedLinkError:无法从loader dalvik.system.PathClassLoader加载echoprint-jni

时间:2014-07-17 12:38:28

标签: android android-ndk metaio codegen

我在我的android项目中使用Echoprint,如here所述,它可以正常工作。但是,当我尝试将metaioSDK库添加到项目中时(只需添加它,甚至不使用它),我就不能再运行Echoprint了。我明白了:

07-17 14:20:34.194: E/AndroidRuntime(3681):     FATAL EXCEPTION: Thread-92046    
07-17 14:20:34.194: E/AndroidRuntime(3681):     java.lang.UnsatisfiedLinkError: Couldn't load echoprint-jni from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.example.kkt-1.apk,libraryPath=/data/app-lib/com.example.kkt-1]: findLibrary returned null    
07-17 14:20:34.194: E/AndroidRuntime(3681):     at java.lang.Runtime.loadLibrary(Runtime.java:355)    
07-17 14:20:34.194: E/AndroidRuntime(3681):     at java.lang.System.loadLibrary(System.java:525)    
07-17 14:20:34.194: E/AndroidRuntime(3681):     at edu.gvsu.masl.echoprint.Codegen.<clinit>(Codegen.java:44)    
07-17 14:20:34.194: E/AndroidRuntime(3681):     at edu.gvsu.masl.echoprint.AudioFingerprinter.run(AudioFingerprinter.java:199)    
07-17 14:20:34.194: E/AndroidRuntime(3681):     at java.lang.Thread.run(Thread.java:841)

文件libechoprint-jni.so位于&#34; / libs / armeabi /&#34;文件夹,我称之为System.loadLibrary("echoprint-jni"),它在添加metaio库之前有效。怎么没有工作呢?询问是否需要任何其他细节/ printscreens / etc.

修改

我注意到EchoprintLibrary中有libechoprint-jni.so/libs/armeabi/

metaioSDK在/libs/armeabi-v7a/

中有大约7个.so文件

在我的手机上,当应用仅使用Echoprint时,我可以在

中找到libechoprint-jni.so
/data/data/com.example/kkt/lib/
/data/app-lib/com.example.kkt-2/

当我还添加了metaioSDK时,libechoprint-jni.so无处可寻,但所有的metaio .so文件都可以在

中找到
/data/data/com.example/kkt/lib/
/data/app-lib/com.example.kkt-1/

所以我想最后,这可能是一个如何从多个来源获得.so库的问题..

1 个答案:

答案 0 :(得分:1)

我已经设法通过在我自己的项目中移动Echoprint源文件并将libechoprint-jni.so移动到metaio libs / armeabi-v7a文件夹中,与其他.so文件相邻。基本上所有.so文件必须分组在一个文件夹/项目下。可能不适合所有人,但它对我有用。