云直播lib包冲突问题自查手册
一、说明
云直播SDK为客户提供了远程maven引用来方便用户解决由于lib包相同导致的冲突问题
冲突问题分类如下:
- 云直播lib库和本公司其他产品libs库的冲突问题
- 云直播lib库和客户引用的三方库的冲突问题
- 远程和本地冲突的问题
针对第一种情况,优先保留云直播libs库
针对第二种情况,根据不同情况可选择性保留一个
针对第三种情况,建议使用远程引用,删除本地引用
二、具体冲突解决方案
下面具体介绍会产生冲突的几个库
1、hdplayer
云直播中引用如下
api('com.bokecc:hdplayer:1.1.0')
-
如果用户集成了本公司的点播功能,可通过删除点播的引用来解决冲突
// 和点播冲突的库如下,可删除该引用 com.bokecc:speedplay:2.19.3
-
如用户集成了三方库包含了ijkplayer,可通过exclude的方式去除三方库中的引用
以客户引用了GSYVideoPlayer为例,可通过下面的方式将三方库中ijkplayer排除掉
api ('com.shuyu:GSYVideoPlayer:7.1.4'){ exclude group: 'com.shuyu', module: 'gsyVideoPlayer-java' exclude group: 'com.shuyu', module: 'gsyVideoPlayer-armv7a' exclude group: 'com.shuyu', module: 'gsyVideoPlayer-arm64' exclude group: 'com.shuyu', module: 'gsyVideoPlayer-x86' }
2、drm
云直播中引用库如下
implementation 'com.bokecc:drm:1.2.1'
-
如果集成了本公司的点播功能,可通过排除的方式去除云直播里的drm库
排除方式如下所示:
api('com.bokecc:dwlivesdk:3.14.0') { exclude group: 'com.bokecc', module: 'drm' }
也可删除点播库里相同的引用,云直播不做任何处理
-
针对旧版本的兼容
由于旧版点播的drm库使用到了org.apache.http.legacy包, 如用户使用的三方库中包含org.apache.http.legacy,和项目中的com.bokecc:http出现冲突,需要去除项目中使用到的httplib或者org.apache.http.legacy.jar
和点播旧版冲突的包如下,
// 云直播 com.bokecc:drm:1.1.0 // 云点播 com.bokecc:http:1.2.0 com.bokecc:drmv6:2.19.0
3、io.agora.rtc
云直播引用远程库如下
implementation 'io.agora.rtc:full-sdk:2.4.1'
-
如果集成了本公司的云课堂(小班课)功能,可通过排除云直播中的库
排除方式如下
api('com.bokecc:dwlivesdk:3.14.0') { // agora连麦库冲突 兼容小班课 exclude group: 'io.agora.rtc', module: 'full-sdk' }
小班课中引用到该库的远程包如下
com.bokecc:ClassBaseLib:6.1.10 // 里面用到了上述库
-
如果用户集成了agora更高版本的库,可通过排除云直播中的库
api('com.bokecc:dwlivesdk:3.14.0') { // agora连麦库冲突 兼容小班课 exclude group: 'io.agora.rtc', module: 'full-sdk' } // 引用更高版本的库 implementation 'io.agora.rtc:full-sdk:x.y.z'
目前云直播只使用到了该库的部分功能,经测试agora新版本是兼容老版本的,升级之后连麦功能可正常使用
4、commonLib
云直播引用远程库如下
implementation('com.bokecc:commonLib:0.1.15') {
exclude group: "com.tencent.mars"
}
-
如果集成了本公司的云课堂(小班课)功能,可通过排除云直播中的库
排除方式如下
api('com.bokecc:dwlivesdk:3.14.0') { // 冲突 兼容小班课 exclude group: 'com.bokecc', module: 'commonLib' }
5、腾讯tbs
云直播引用远程库如下
implementation 'com.tencent.tbs.tbssdk:sdk:43903'
3.14.0版本之后用户可根据需要控制是否开启 x5内核,如果开启了x5内核,需要关注冲突的问题
-
如果用户集成了腾讯tbs更高版本的库 ,可根据具体场景排除相应的库
排除云直播里tbs库
api('com.bokecc:dwlivesdk:3.14.0') { // 冲突 兼容小班课 exclude group: 'com.tencent.tbs.tbssdk', module: 'sdk' }
6、云课堂
云直播引用远程库如下
implementation ('com.bokecc:ClassBaseLib:last-version')
-
如果用户同时集成了云课堂,可根据具体场景排除相应的库
排除云直播里云课堂库
api('com.bokecc:dwlivesdk:4.x.x') { // 冲突 兼容云课堂 exclude group: 'com.bokecc', module: 'ClassBaseLib' }