Ijkplayer: 加载ijkplayer时出现 java.lang.UnsatisfiedLinkError: JNI_ERR returned from JNI_OnLoad in "/data/app/com.admin-2/lib/arm/libijksdl.so"加载库的问题,请问有人遇到过吗?

Created on 12 Aug 2017  ·  18Comments  ·  Source: bilibili/ijkplayer

单独在测试ijkplayer的demo中是没有加载问题,可以正常使用,当整合到另一个app中的时候就出现了加载库问题(新整合的文件libs文件中还有其他so库和jar包)
具体报错:
1502535630 1
so库也是放在libs中,配置文件:
1502535752 1
请问各位大神这是什么?

Most helpful comment

向proguard中添加以下代码混淆规则就可以了

ijkplayer

-keep class tv.danmaku.ijk.media.player.* {;}
-keep class tv.danmaku.ijk.media.player.IjkMediaPlayer{;}
-keep class tv.danmaku.ijk.media.player.ffmpeg.FFmpegApi{
;}

All 18 comments

直接解压自己的apk,看哪个目录缺少so就知道了。
http://allenfeng.com/2016/11/06/what-you-should-know-about-android-abi-and-so/

@zhanggao 刚刚试过解压了apk文件,so库并没有少

看你的log,你把ijkPlayer官方的包名改了,然后在c层代码有作对应的修改吗?

@zhanggao 是的啊,我修改了一些ijkPlayer底层的代码,在测试demo中倒是没出现过问题,能运行,一整合到另一app中就报错了加载不到so库。

@zhanggao 奇怪的是ijkffmpeg.so能加载,但ijksdl和ijkplayer加载时才崩溃的

你改过包名的so和java代码能在demo里运行成功?

能啊

我也有这种情况,测试没问题,打正式包就会抛出来这个bug,请问要怎么解决这个问题

代码混淆的问题 要放到你的target module proguard下

@matthewfang 后来我新建一个项目重新搭建一遍,就正常了,可能真是代码混淆的原因,因为之前的项目做了代码混淆!谢谢提醒!

这种情况就是 你so文件中有写死了绝对路径的包名,要按照demo的包名以及文件夹名称来写就好了

问题总结: 把代码混淆去掉之后项目就可以正常运行了,谢谢大家给的宝贵意见。

向proguard中添加以下代码混淆规则就可以了

ijkplayer

-keep class tv.danmaku.ijk.media.player.* {;}
-keep class tv.danmaku.ijk.media.player.IjkMediaPlayer{;}
-keep class tv.danmaku.ijk.media.player.ffmpeg.FFmpegApi{
;}

abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a'

v7a和v8a会有冲突,删掉v8
如下:

 ndk {
            //选择要添加的对应cpu类型的.so库。
            abiFilters "armeabi","armeabi-v7a","x86"

        }

@wapchief 可以只需要保留v7a, 只支持armeabi的手机基本灭绝了。x86也可以删掉,一般intel的平板也能兼容v7a。

代码混淆的问题 要放到你的target module proguard下

我在debug下也遇到了,应该不是混淆问题,请问还有什么别的可能么

代码混淆的问题 要放到你的target module proguard下

我在debug下也遇到了,应该不是混淆问题,请问还有什么别的可能么

反编译下你自己的apk就知道了。

@gongwen 谢谢

我也是遇到了这个问题, 在打包的过程中做了代码混淆,所以在调试的时候没问题,但发布就有问题
按照你说的方法,在proguard-rules.pro 文件中,添加了下面三行代码,完美解决问题:

ijkplayer

-keep class tv.danmaku.ijk.media.player.* {;}
-keep class tv.danmaku.ijk.media.player.IjkMediaPlayer{;}
-keep class tv.danmaku.ijk.media.player.ffmpeg.FFmpegApi{
;}

Was this page helpful?
0 / 5 - 0 ratings

Related issues

ZINK-FU picture ZINK-FU  ·  3Comments

xuluming picture xuluming  ·  4Comments

zhangkom picture zhangkom  ·  3Comments

bruceshu picture bruceshu  ·  4Comments

liwuking picture liwuking  ·  4Comments