2

您好我正在开发使用 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); 

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

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

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

4

2 回答 2

3

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

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

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

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

于 2015-05-29T10:18:46.307 回答
1

如果您使用呼叫 Vitamio.isInitialized(this);

inMyApplication extend Application初始化 ****.so 的路径

我希望这个技巧可以帮助你解决你的问题

于 2016-07-02T19:40:54.300 回答