Vitamio:UnsatisfiedLinkError,找不到本机方法

Vitamio: UnsatisfiedLinkError ,Native method not found

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

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)

在这一行发生崩溃:

mMediaPlayer = new MediaPlayer(this); 

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

我知道当找不到库时会发生此崩溃。但是,当我再次启动该应用程序时,它可以正常播放。只有当我安装新版本时,应用程序才会因上述异常而崩溃。

有谁知道,为什么会这样..?

关于在调试时无法捕捉到这个,那是因为在调试时,它比不捕捉要慢。因此,一个简单而肮脏的修复方法就是设置延迟。

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

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

解决方法:检查加载.so库的位置,使MediaPlayer在加载后启动。

如果你使用电话 Vitamio.isInitialized(this);

MyApplication extend Application中初始化****.so的路径

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