ReactNative 下使用阿里云直播的bug

前言

前几天受同事之拖,在ReactNative环境下,引用阿里云直播sdk,本以为是一个很简单的问题,结果确踩了个大坑。
阿里云直播sdk
地址阿里云直播sdk地址
大概就是下图这种情况,大概意思就是说ReactNative里有这个.so文件,阿里云里面也有这个文件,重复了,我不让你过编译,你自己看着办吧。
ReactNative 下使用阿里云直播的bug
搜了半天都是让这么改
ReactNative 下使用阿里云直播的bug
确实可以解决编译期的报错,但是运行时,会找不到需要的这个Libgnustl_shared.so,大概是下图这样的情况
ReactNative 下使用阿里云直播的bug
这不是坑爹!

原理

Android 是通过Gradle 来自动化构建的 exclude 确实是解决引用冲突的一个重要的方法,但是他多数是用来解决不同库里有不同版本的jar 的问题,主要用来排除传递性依赖。而在RN和阿里云中我们都需要使用这个.so包,经过长时间的查找,发现以下方法可以解决在ReactNative 环境下 阿里云直播so包冲突问题
ReactNative 下使用阿里云直播的bug
pickFirst 大概意思就是说,打包的时候,优先选择当前包下的.so文件,这样就不会,这样就不会造成.so文件的缺失,或重复了。