Vitamio:UnsatisfiedLinkError,找不到Native方法

时间:2015-05-28 07:01:58

标签: android android-ndk native-code unsatisfiedlinkerror vitamio

您好我正在使用Vitamio开发Android应用程序来播放实时音频流。当我第一次在Sony Experia J(android 4.1.2)中安装应用程序时,它崩溃了。但当我再次打开它时,它开始播放。因此,每当我第一次安装应用程序时,收音机都会在此设备中崩溃。以下是崩溃日志:

UIDatePickerMode.Date

在此行发生崩溃:

java.lang.UnsatisfiedLinkError: Native method not found: 

io.vov.vitamio.MediaPlayer.native_init:()V
                at io.vov.vitamio.MediaPlayer.native_init(Native Method)
                at io.vov.vitamio.MediaPlayer.<init>(MediaPlayer.java:238)
                at io.vov.vitamio.MediaPlayer.<init>(MediaPlayer.java:192)

但是在调试应用程序时没有遇到此崩溃。所以没有得到这次崩溃的确切原因。

我知道当它无法找到库时会发生此崩溃。但是,当我再次启动应用程序时,它会正常播放。只有当我安装新版本时,应用程序才会崩溃。

有谁知道,为什么会发生这种情况..?

2 个答案:

答案 0 :(得分:3)

关于在调试时无法捕获这个,这是因为在调试时,它的方式是 SLOWER ,而不是。因此,简单而肮脏的修复只会造成延迟。

根本原因是:在调用本机方法时,库应该已经加载(通过System.loadLibrary())。

所以我最好的猜测是MediaPlayer.native_init在第一次进行实际加载之前被调用。

解决方案:checkout加载.so库的位置,并在加载后启动MediaPlayer。

答案 1 :(得分:1)

如果您使用致电 Vitamio.isInitialized(this);

MyApplication extend Application

初始化****的路径。所以

我希望此提示可以帮助您解决问题