Android端ijkplayer集成在debug版中可以播放,在release版中不可以播放的

集成ijkplayer播放功能的App,在debug版本能正常使用播放功能,但是打的release包,点击播放,App崩溃,出现如下错误日志:

java.lang.UnsatisfiedLinkError: JNI_OnLoad failed on a previous attempt to load "/data/app/com.demo.app-xK6J215tr42CfRNgSN1e-w==/lib/arm/libijksdl.so"
 at java.lang.Runtime.loadLibrary0(Runtime.java:1016)
 at java.lang.System.loadLibrary(System.java:1660)
 at tv.danmaku.ijk.media.player.IjkMediaPlayer$1.loadLibrary(TbsSdkJava:157)
 at tv.danmaku.ijk.media.player.IjkMediaPlayer.a(TbsSdkJava:169)
 at tv.danmaku.ijk.media.player.IjkMediaPlayer.b(TbsSdkJava:209)
 at tv.danmaku.ijk.media.player.IjkMediaPlayer.(TbsSdkJava:205)
 at tv.danmaku.ijk.media.player.IjkMediaPlayer.(TbsSdkJava:196)

分析:这是找不到so文件了,/data/app/com.demo.app-xK6J215tr42CfRNgSN1e-w==/lib/arm/libijksdl.so从这行可以看到,so文件的路径乱码,正常应该是一个指向so文件的完整路径,但是这里乱码了,找不到so文件了,但是debug版本是正常的,release找不到,release和debug版本其中一个区别就是添加了混淆文件了,再加上这个路径乱码,那应该就是混淆的问题,但是检查了一下集成ijkplayer是以library形式引入的,在这个library下的proguard-rules.pro文件是有如下代码,关于他的混淆的。

-keep class simijkplayer.**{
    public ;
    public ;
}
-keep class tv.danmaku.ijk.media.**{
    ;
    ;
}

显然这个混淆没有生效,好吧,那就把这几行代码添加到主app的proguard-rules.pro,运行release包,好了,没有问题了。

总结一下两个问题:

1、debug版本正常,release版本异常,可以考虑是混淆的问题,找混淆文件proguard-rules.pro查看一下
2、引入的library的混淆文件没有生效,需要在app下面的混淆文件添加混淆。

你可能感兴趣的:(Android,混淆问题,release异常,ijkplayer集成的问题)