【问题标题】:Vitamio: UnsatisfiedLinkError ,Native method not foundVitamio:UnsatisfiedLinkError,未找到本机方法
【发布时间】:2015-05-28 07:01:57
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多