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.<init>(TbsSdkJava:205)
 at tv.danmaku.ijk.media.player.IjkMediaPlayer.<init>(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 <fields>;
    public <methods>;
}
-keep class tv.danmaku.ijk.media.**{
    <fields>;
    <methods>;
}

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

总结一下两个问题:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值