如何在基于Eclipse的Android项目中加载NDK生成的库时修复UnsatisfiedLinkError?

时间:2015-04-26 16:56:58

标签: android eclipse android-ndk

我已经为Eclipse(Juno)设置了一个Android项目。

该项目依赖于名为synth的本机库,该库通过命令行上的ndk-build生成,为{{1}内的每个不同体系结构创建各种libsynth.so个文件。文件夹,例如libs等。

库按代码加载如下:

libs/armeabi/libsynth.so

此行在运行时崩溃:

System.loadLibrary("synth");

似乎java.lang.UnsatisfiedLinkError: Couldn't load foo from loader dalvik.system.PathClassLoader... 文件存在,但没有链接。如何在导出Android包时告诉Eclipse链接该库?或者我还应该做些什么来解决这个问题?

完整堆栈跟踪:

  

E / AndroidRuntime(18030):致命异常:主要   E / AndroidRuntime(18030):处理:com.levien.synthesizer,PID:18030   E / AndroidRuntime(18030):java.lang.UnsatisfiedLinkError:无法从加载器dalvik.system.PathClassLoader加载synth [DexPathList [[zip文件“/data/app/com.levien.synthesizer-1.apk"],nativeLibraryDirectories = [/ data / app-lib / com.levien.synthesizer-1,/ vendor / lib,/ system / lib]]]:findLibrary返回null   E / AndroidRuntime(18030):at java.lang.Runtime.loadLibrary(Runtime.java:358)   E / AndroidRuntime(18030):at java.lang.System.loadLibrary(System.java:526)   E / AndroidRuntime(18030):at com.levien.synthesizer.android.AndroidGlue。(AndroidGlue.java:51)   E / AndroidRuntime(18030):at com.levien.synthesizer.android.service.SynthesizerService.onCreate(SynthesizerService.java:88)   E / AndroidRuntime(18030):在android.app.ActivityThread.handleCreateService(ActivityThread.java:2585)   E / AndroidRuntime(18030):在android.app.ActivityThread.access $ 1800(ActivityThread.java:139)   E / AndroidRuntime(18030):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1292)   E / AndroidRuntime(18030):在android.os.Handler.dispatchMessage(Handler.java:102)   E / AndroidRuntime(18030):在android.os.Looper.loop(Looper.java:136)   E / AndroidRuntime(18030):在android.app.ActivityThread.main(ActivityThread.java:5086)   E / AndroidRuntime(18030):at java.lang.reflect.Method.invokeNative(Native Method)   E / AndroidRuntime(18030):at java.lang.reflect.Method.invoke(Method.java:515)   E / AndroidRuntime(18030):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:785)   E / AndroidRuntime(18030):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)   E / AndroidRuntime(18030):at dalvik.system.NativeStart.main(Native Method)

0 个答案:

没有答案