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的路径
我希望这个提示可以帮助您解决问题
您好,我正在使用 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的路径
我希望这个提示可以帮助您解决问题