## 8.1 从2.x.x升级到SDK3.x.x版本需要注意的地方

旧版本获得错误信息使用的是DreamwinException类，获取错误码的方法是e.getErrorCode().Value()。

```
//旧版本SDK获得错误信息的方式        
player.setOnDreamWinErrorListener(new OnDreamWinErrorListener() {
    @Override
    public void onPlayError(DreamwinException e) {
        //获得错误码
        int errorCode = e.getErrorCode().Value();
    }
});        
```

SDK3.0.0获得错误信息使用的是HuodeException类，获取错误码的方法是e.getIntErrorCode()，新的错误码分类更加详细，错误码的具体意义请查看“4.功能使用--错误码”章节。

```
//SDK3.x.x获得错误信息的方式
player.setOnDreamWinErrorListener(new OnDreamWinErrorListener() {
    @Override
    public void onPlayError(HuodeException e) {
        //获得错误码
        int errorCode = e.getIntErrorCode();
    }
});
```

## 8.2 升级到SDK3.5.1及以上版本需要注意的地方
3.5.1及以上版本授权验证接口新增加一个跑马灯信息的字段。
```
//获得授权验证信息
player.setOnAuthMsgListener(new OnAuthMsgListener() {
    /**
     * @param enable   视频是否可以完整播放 0:不允许完整播放 1:允许完整播放
     * @param freetime 视频试看时间,单位:秒
     * @param messaage 不允许播放,或者试看结束时播放器显示的提示内容
     * @param marqueeInfo 跑马灯信息，具体使用方法请参考4.18章节
     */
    @Override
    public void onAuthMsg(int enable, int freetime, String messaage, MarqueeInfo marqueeInfo) {
        
    }
});
```
3.5.1以下版本。
```
//获得授权验证信息
player.setOnAuthMsgListener(new OnAuthMsgListener() {
    /**
     * @param enable   视频是否可以完整播放 0:不允许完整播放 1:允许完整播放
     * @param freetime 视频试看时间,单位:秒
     * @param messaage 不允许播放,或者试看结束时播放器显示的提示内容
     */
    @Override
    public void onAuthMsg(int enable, int freetime, String messaage) {
        
    }
});
```

## 8.3 升级到SDK3.7.1及以上版本需要注意的地方
在Project的build.gradle文件中增加maven地址maven {url 'http://nexus-app.bokecc.com/repository/sdk-group/'}，配置如下。
```
allprojects {
    repositories {
        google()
        jcenter()
        //以下两个必须配置
        maven {url 'https://dl.bintray.com/bokecc/maven'}
        maven {url 'http://nexus-app.bokecc.com/repository/sdk-group/'}
        //使用投屏功能时添加此配置，不使用不需要
        maven { url 'http://4thline.org/m2'}
    }
}
```

在App的build.gradle的文件中增加依赖implementation 'com.bokecc:commonLib:0.1.9'。
```
implementation 'com.bokecc:commonLib:0.1.9'
```

将implementation 'com.bokecc:http:1.2.0'和implementation 'com.bokecc:drmv6:2.19.0'替换为implementation 'com.bokecc:drm:1.2.0'。
```
implementation 'com.bokecc:drm:1.2.0'
```

混淆规则增加以下配置。
```
-keep class com.tencent.mars.** {
  public protected private *;
}
```
## 8.4 JCenter停止服务引起的依赖问题
在Project的build.gradle文件中JCenter的仓库将不在使用  
```
//废弃
<!--maven { url 'https://dl.bintray.com/bokecc/maven' }  -->
//请使用如下maven地址
 maven { url 'http://nexus-app.bokecc.com/repository/sdk-group/' }
```
在module层的build.gradle文件中，依赖命名有所更改，更改如下:
```
//点播SDK依赖，3.8.0版本之后
implementation 'com.bokecc:CCVOD:3.xx.x'
//投屏功能相关依赖
implementation 'com.bokecc:ProjectionLib:1.7.0'
//使用Vr播放功能时需要引入
implementation 'com.bokecc:VrPlayLib:1.0.0'
//上传视频时使用压缩功能时需要引用
implementation 'com.bokecc:CompressVideoLib:1.0.0'

```
## 8.5 初始化相关
自3.16.1版本起，需要在Application实例类的onCreate()方法中进行SDK的相关初始化，若未正常调用，会抛出响应的RuntimeException。
```
 InitializeManager.getInstance(getContext()).initialize();

```

## 8.6 离线日志

自3.18.4版本起，需要在在播放器播放前设置下clientid (setClientId),当用户出现问题时提供下userid以及设置的clientId既能快速查询到该用户的日志

```java
 public void setClientId(String clientId){}

```

如果不希望上传日志，不进行设置clientId即可

## 8.7 安全校验升级

自3.20.0版本起，为了进一步提升安全级别，可采用SID安全校验方案。

 [SID安全校验流程详解](https://doc.bokecc.com/vod/developer/base/sdksid/sdksid.html)

该方案的改动点如下：

### sdk初始化(InitializeManager)

```java
public void initialize()
或者
public void initialize(boolean isLog)
```

改为:

```java
public void initialize(boolean isLog, VerificationMode mode)
```

注意：如果设置的安全校验方式为SID，下面需要配套进行执行，如果设置的安全校验方式为ORDINARY,参照原先的api方式调用即可，无需改动

### 在线视频播放

```java
 public void setVideoPlayInfo(String videoId, String userId, String apiKey, String verificationCode, Context context)
```

改为:

```java
public void setVideoPlayInfo(String videoId, String userId, String verificationCode, Context context,SdkSidProvider sdkSidProvider)
```

### 视频下载(VodDownloadManager)

```java
public void init(Context context, String userId, String apiKey, String downloadPath)
```

改为:

```java
public void init(Context context, String userId, String downloadPath, SdkSidProvider sdkSidProvider)
```

### 视频上传(Uploader)

```java
Uploader uploader = new Uploader(VideoInfo videoInfo, String apiKey)
```

改为:

```java
Uploader uploader = new Uploader(VideoInfo videoInfo, SdkSidProvider sdkSidProvider)
```

