## 云直播lib包冲突问题自查手册

- 云直播lib包冲突问题自查手册

- 一、说明

- 二、具体冲突解决方案

  - 1、hdplayer
  - 2、drm
  - 3、io.agora.rtc
  - 4、commonLib
  - 5、腾讯tbs
  - 6、云课堂

## 一、说明

云直播SDK为客户提供了远程maven引用来方便用户解决由于lib包相同导致的冲突问题

冲突问题分类如下：

1. 云直播lib库和本公司其他产品libs库的冲突问题
2. 云直播lib库和客户引用的三方库的冲突问题
3. 远程和本地冲突的问题

针对第一种情况，优先保留云直播libs库

针对第二种情况，根据不同情况可选择性保留一个

针对第三种情况，建议使用远程引用，删除本地引用

## 二、具体冲突解决方案

下面具体介绍会产生冲突的几个库

### 1、hdplayer

云直播中引用如下

    xxxxxxxxxx api('com.bokecc:hdplayer:1.1.0')

- 如果用户集成了本公司的点播功能，可通过删除点播的引用来解决冲突

      xxxxxxxxxx// 和点播冲突的库如下，可删除该引用com.bokecc:speedplay:2.19.3

- 如用户集成了三方库包含了ijkplayer，可通过exclude的方式去除三方库中的引用

  以客户引用了GSYVideoPlayer为例，可通过下面的方式将三方库中ijkplayer排除掉

      xxxxxxxxxxapi ('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

云直播中引用库如下

    xxxxxxxxxximplementation 'com.bokecc:drm:1.2.1'

- 如果集成了本公司的点播功能，可通过排除的方式去除云直播里的drm库

  排除方式如下所示：

      xxxxxxxxxxapi('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

  和点播旧版冲突的包如下，

      xxxxxxxxxx// 云直播com.bokecc:drm:1.1.0 // 云点播com.bokecc:http:1.2.0 com.bokecc:drmv6:2.19.0

### 3、io.agora.rtc

云直播引用远程库如下

    xxxxxxxxxx implementation 'io.agora.rtc:full-sdk:2.4.1'

- 如果集成了本公司的云课堂（小班课）功能，可通过排除云直播中的库

  排除方式如下

      xxxxxxxxxx api('com.bokecc:dwlivesdk:3.14.0') {     // agora连麦库冲突  兼容小班课     exclude group: 'io.agora.rtc', module: 'full-sdk'}

  小班课中引用到该库的远程包如下

      xxxxxxxxxxcom.bokecc:ClassBaseLib:6.1.10  // 里面用到了上述库

- 如果用户集成了agora更高版本的库，可通过排除云直播中的库

      xxxxxxxxxxapi('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

云直播引用远程库如下

    xxxxxxxxxximplementation('com.bokecc:commonLib:0.1.15') {     exclude group: "com.tencent.mars"}

- 如果集成了本公司的云课堂（小班课）功能，可通过排除云直播中的库

  排除方式如下

      xxxxxxxxxx api('com.bokecc:dwlivesdk:3.14.0') {     // 冲突  兼容小班课    exclude group: 'com.bokecc', module: 'commonLib'}

### 5、腾讯tbs

云直播引用远程库如下

    xxxxxxxxxx implementation 'com.tencent.tbs.tbssdk:sdk:43903'

3.14.0版本之后用户可根据需要控制是否开启 x5内核，如果开启了x5内核，需要关注冲突的问题

- 如果用户集成了腾讯tbs更高版本的库 ，可根据具体场景排除相应的库

  排除云直播里tbs库

      xxxxxxxxxxapi('com.bokecc:dwlivesdk:3.14.0') {     // 冲突  兼容小班课    exclude group: 'com.tencent.tbs.tbssdk', module: 'sdk'}

### 6、云课堂

云直播引用远程库如下

    xxxxxxxxxx implementation ('com.bokecc:ClassBaseLib:last-version')

- 如果用户同时集成了云课堂，可根据具体场景排除相应的库

  排除云直播里云课堂库

      xxxxxxxxxxapi('com.bokecc:dwlivesdk:4.x.x') {     // 冲突  兼容云课堂    exclude group: 'com.bokecc', module: 'ClassBaseLib'}