您的位置:首页 > 移动开发 > Android开发

AndroidStudio 多个第三方so文件重复引用导致 java.lang.UnsatisfiedLinkError 问题

2016-12-12 17:21 597 查看
最近在做直播项目,说说我这几天查资料得到的结果,直播大概分三个麻烦的地方,推流,拉流,聊天室;

最简单的方式就是使用一个第三方的服务商,使用它们的配套sdk(直播神马的 辣鸡。。。)

最复杂的便是全都自己写(在这个开源时代,说说就好了。。。)

由于我在的厂有点奇葩····(自己搭了推流服务器~~好吧,老大你赢了!)

所以我选择这么做:

推流

我选择用的是百度的推流sdk(免费,文档详细···)

拉流

拉流其实就是播放,使用bilibili开源的 ijkplayer播放器 这个播放器是基于 FFmpeg (这个项目基本上是现在直播这边的始祖了~)

聊天室

这块打算用腾讯云或者网易云信(主要看老大意思,要是他选择自己塔服务器我也没辙~~!)

ijkplayer集成

//    # required, enough for most devices.
compile 'tv.danmaku.ijk.media:ijkplayer-java:0.7.5'
compile 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.7.5'
//    # Other ABIs: optional
compile 'tv.danmaku.ijk.media:ijkplayer-armv5:0.7.5'
//    compile 'tv.danmaku.ijk.media:ijkplayer-arm64:0.7.5' 最低支持21
compile 'tv.danmaku.ijk.media:ijkplayer-x86:0.7.5'
//    compile 'tv.danmaku.ijk.media:ijkplayer-x86_64:0.7.5' 最低支持21
//    # ExoPlayer as IMediaPlayer: optional, experimental
compile 'tv.danmaku.ijk.media:ijkplayer-exo:0.7.5'


百度推流SDK

下载百度推流的SDK,然后导入so和lib,再加载jni

sourceSets.main {
jni.srcDirs = []
jniLibs.srcDir 'src/main/libs'
}

task nativeLibsToJar(type: Zip, description: "create a jar archive of the native libs") {
destinationDir file("$projectDir/libs")
baseName "Native_Libs2"
extension "jar"
from fileTree(dir: "libs", include: "**/*.so")
into "lib"
}

tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn(nativeLibsToJar)
}


一切看起来很美好,但是:



开始明明好好的,一加载了百度推流的SDK就出毛病了!!!

提示也很奇怪,找不到 xxx.so 文件,首先想到的是不是引用了重复的so,然后去网上查ijkplayer加载so的方法,发现他的so是动态加载的(具体可以看 这里)这种引入的方式导致我们无法对 ijkplayer 的so进行操作(其实ijkplayer 网上有人家编译好的so,这里我就没做尝试了。。。) 后来在 这里 找到了问题关键

做法就很简单了:

在app的build.gradlede 中的 defaultConfig{}里面加上

ndk{
moduleName "libFaceSDK.so"  //设置库(so)文件名称
moduleName "libfaceu-library.so"  //设置库(so)文件名称
moduleName "libffmpeg.so"  //设置库(so)文件名称
moduleName "libidl_license.so"  //设置库(so)文件名称
moduleName "libidl_token.so"  //设置库(so)文件名称
moduleName "librecorder.so"  //设置库(so)文件名称
moduleName "librtmp_jni.so"  //设置库(so)文件名称
ldLibs "log"
abiFilters  "armeabi-v7a", "x86_64"
}


到此就ok了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐