我在我的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/
在我的手机上,当应用仅使用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库的问题..
答案 0 :(得分:1)
我已经设法通过在我自己的项目中移动Echoprint源文件并将libechoprint-jni.so移动到metaio libs / armeabi-v7a文件夹中,与其他.so文件相邻。基本上所有.so文件必须分组在一个文件夹/项目下。可能不适合所有人,但它对我有用。