我按照谷歌的要求将vitamio 4.2.2更新到5.0.0,因为开发人员控制台中存在安全问题。但同样的代码,它会崩溃如下:
java.lang.UnsatisfiedLinkError: dlopen failed: library "nulllibstlport_shared.so" not found
at java.lang.Runtime.load(Runtime.java:332)
at java.lang.System.load(System.java:981)
at io.vov.vitamio.MediaPlayer.<clinit>(MediaPlayer.java:257)
at io.vov.vitamio.widget.VideoView.openVideo(VideoView.java:431)
at io.vov.vitamio.widget.VideoView.setVideoURI(VideoView.java:403)
at io.vov.vitamio.widget.VideoView.setVideoURI(VideoView.java:396)
at io.vov.vitamio.widget.VideoView.setVideoPath(VideoView.java:392)
at com.mypackage.myapp.LiveStreamActivity$LiveStreamParse.onPostExecute(LiveStreamActivity.java:131)
崩溃发生在我调用
videoView.setVideoPath(liveStreamUrl);
时,如下所示:VideoView videoView = (VideoView) findViewById(R.id.vvSurface);
videoView.setVideoPath(liveStreamUrl);
final MediaController mediaController = new MediaController(LiveStreamActivity.this);
videoView.setMediaController(mediaController);
videoView.setVideoLayout(VideoView.VIDEO_LAYOUT_STRETCH, 0);
videoView.requestFocus();
videoView.start();
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.setPlaybackSpeed(1.0f);
}
});
当我查看vitamio 5.0.0的样本时,没有任何变化。看来维塔米奥完全毁了自己。尽管他们在2015年11月02日发布了这个版本,但他们仍然将sdk版本作为api 19的目标。这真是太可惜了。
对于这个不幸的问题,除了期待维塔米奥团队给出适当的答案外,我们将非常感谢您的任何建议。
最佳答案
你的应用程序似乎找不到“nulllibstlport_shared.so”本机库。当涉及到本机时,可以指定发生问题的特定设备。
然而,在vitamio网站上,他们说lib目前支持:armv6、vfp、armv7、neon、mips、x86等等……
因此,我建议您尝试强制您的应用程序只包含受支持的abi的本地libs。
为此,您需要将此添加到app/build.gradle
defaultConfig {
...
ndk {
abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
}
}
在项目的根文件夹中找到gradle.properties文件并添加“android.usedprecatedndk=true”
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
...
# org.gradle.parallel=true
android.useDeprecatedNdk=true
但我真的不知道这是否有用。