[英]java.lang.UnsatisfiedLinkError: Couldn't load echoprint-jni from loader dalvik.system.PathClassLoader
I am using Echoprint in my android project as explained here and it works ok. 我使用Echoprint在我的Android项目作为解释在这里 ,它工作正常。 However, when I try to add the metaioSDK library to the project (just add it, not even use it), I can't run Echoprint anymore.
但是,当我尝试将metaioSDK库添加到项目中时(仅添加它,甚至不使用它),我将无法再运行Echoprint。 I get:
我得到:
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)
The file libechoprint-jni.so
is in the "/libs/armeabi/" folder and I call it System.loadLibrary("echoprint-jni")
, which worked before adding the metaio library. 文件
libechoprint-jni.so
在“ / libs / armeabi /”文件夹中,我称它为System.loadLibrary("echoprint-jni")
,在添加metaio库之前可以使用。 How come it doesn't work after? 为什么以后不起作用? Ask if any other details are needed/printscreens/etc.
询问是否需要其他详细信息/ printscreens / etc。
EDIT: 编辑:
I've noticed that EchoprintLibrary has libechoprint-jni.so
in: /libs/armeabi/
我注意到
libechoprint-jni.so
在/libs/armeabi/
具有libechoprint-jni.so
metaioSDK has about 7 .so files in: /libs/armeabi-v7a/
metaioSDK在
/libs/armeabi-v7a/
有大约7个.so文件
On my phone, when the app only uses Echoprint, I can find the libechoprint-jni.so
in 在手机上,当应用仅使用Echoprint时,我可以在以下
libechoprint-jni.so
找到libechoprint-jni.so
/data/data/com.example/kkt/lib/
/data/app-lib/com.example.kkt-2/
When I also add metaioSDK to the mix, libechoprint-jni.so
is nowhere to be found, but all the metaio .so files can be found in 当我还将metaioSDK添加到混音中时,
libechoprint-jni.so
,但是可以在以下位置找到所有metaio .so文件。
/data/data/com.example/kkt/lib/
/data/app-lib/com.example.kkt-1/
So I guess in the end, it may be a question of how to have .so libraries from multiple sources.. 因此,我想最后可能是一个问题,即如何从多个来源获得.so库。
I've managed to make it work by moving the Echoprint source files inside my own project and moving the libechoprint-jni.so in the metaio libs/armeabi-v7a folder, next to the other .so files. 通过将Echoprint源文件移动到我自己的项目中,并将metaio libs / armeabi-v7a文件夹中的libechoprint-jni.so移动到其他.so文件旁边,我设法使其工作。 Basically all the .so files had to be grouped under one folder/project.
基本上,所有.so文件都必须分组在一个文件夹/项目下。 Might not work for everyone, but it worked for me.
可能不适合所有人,但对我有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.